Zoho CRM + Books MCP Server
Integrates with Zoho CRM and Zoho Books, enabling management of CRM modules and records, Books customers and invoices, data synchronization between CRM accounts/contacts and Books customers, invoice creation from CRM deals, and universal search across both systems.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zoho CRM + Books MCP Server Sync all CRM accounts to Books customers."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zoho CRM + Books MCP Server
A unified Model Context Protocol (MCP) server that provides seamless integration between Zoho CRM and Zoho Books, enabling AI assistants like Claude to interact with both systems through standardized tools and resources.
Features
CRM Integration: Full access to Zoho CRM modules, records, and operations
Books Integration: Complete Zoho Books customer and invoice management
Data Synchronization: Automated sync between CRM accounts and Books customers
Invoice Creation: Generate Books invoices directly from CRM deals
Universal Search: Search across both CRM and Books data
Multi-Configuration System: Manage multiple OAuth configurations for different environments and projects
OAuth 2.0 Authentication: Secure, token-based authentication
Rate Limiting: Built-in rate limiting and error handling
TypeScript: Full type safety and excellent developer experience
Related MCP server: zoho-bookkeeper-mcp
Prerequisites
Node.js 18.0.0 or higher
Zoho CRM account with API access
Zoho Books account with API access
Zoho OAuth application credentials
Installation
Clone the repository:
git clone <repository-url>
cd zoho-mcp-serverInstall dependencies:
npm installCopy the environment configuration:
cp .env.example .envConfigure your environment variables in
.env:
Single Configuration (Legacy)
# Zoho OAuth Configuration
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here
ZOHO_REDIRECT_URI=http://localhost:3000/callback
ZOHO_REFRESH_TOKEN=your_refresh_token_here
# Zoho Data Center (com, eu, in, com.au, jp)
ZOHO_DATA_CENTER=com
# Zoho Books Organization ID (required for Books functionality)
ZOHO_BOOKS_ORGANIZATION_ID=your_organization_id_here
# Zoho API Scopes
ZOHO_SCOPES=ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,ZohoBooks.fullaccess.allMulti-Configuration System (Recommended)
# Enable multi-configuration system
MULTI_CONFIG_ENABLED=true
# Current environment to use
MULTI_CONFIG_ENVIRONMENT=default
# Path to configuration file (optional)
MULTI_CONFIG_PATH=./zoho-config.json
# Legacy variables (for backward compatibility)
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here
ZOHO_REDIRECT_URI=http://localhost:3000/callback
ZOHO_REFRESH_TOKEN=your_refresh_token_here
ZOHO_DATA_CENTER=com
ZOHO_BOOKS_ORGANIZATION_ID=your_organization_id_here
ZOHO_SCOPES=ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,ZohoBooks.fullaccess.allFor detailed multi-configuration setup, see MULTI_CONFIG_GUIDE.md.
Zoho OAuth Setup
Go to the Zoho Developer Console
Create a new "Server-based Applications"
Set redirect URI to
http://localhost:3000/callbackNote your Client ID and Client Secret
Generate a refresh token using the authorization flow
Build and Run
Build the TypeScript code:
npm run buildStart the server:
npm startFor development with auto-reload:
npm run devMCP Integration
Claude Desktop Configuration
Add the following to your Claude Desktop MCP configuration:
{
"mcpServers": {
"zoho-crm-books": {
"command": "node",
"args": ["C:\\zoho-mcp-server\\dist\\server.js"],
"env": {
"ZOHO_CLIENT_ID": "your_client_id",
"ZOHO_CLIENT_SECRET": "your_client_secret",
"ZOHO_REFRESH_TOKEN": "your_refresh_token",
"ZOHO_DATA_CENTER": "com",
"ZOHO_BOOKS_ORGANIZATION_ID": "your_org_id"
}
}
}
}VS Code Configuration
Add to your VS Code MCP configuration:
{
"servers": {
"zoho-crm-books": {
"command": "node",
"args": ["C:\\zoho-mcp-server\\dist\\server.js"]
}
}
}Available Tools
CRM & Books Integration Tools
1. sync_accounts_to_customers
Synchronizes CRM accounts to Books customers.
Parameters:
source_module: "accounts" (fixed)target_module: "customers" (fixed)filters(optional):limit: Number of records to process (1-200)page: Page number to process
Example:
{
"source_module": "accounts",
"target_module": "customers",
"filters": {
"limit": 50,
"page": 1
}
}1.1. sync_contacts_to_customers
Synchronizes CRM contacts to Books customers (bi-directional sync).
Parameters:
source_module: "contacts" (fixed)target_module: "customers" (fixed)filters(optional):limit: Number of records to process (1-200)page: Page number to process
Example:
{
"source_module": "contacts",
"target_module": "customers",
"filters": {
"limit": 50,
"page": 1
}
}1.2. sync_customers_to_contacts
Synchronizes Books customers to CRM contacts (bi-directional sync).
Parameters:
source_module: "customers" (fixed)target_module: "contacts" (fixed)filters(optional):limit: Number of records to process (1-200)page: Page number to process
Example:
{
"source_module": "customers",
"target_module": "contacts",
"filters": {
"limit": 50,
"page": 1
}
}2. create_invoice_from_deal
Creates a Books invoice from a CRM deal.
Parameters:
deal_id: CRM deal ID (required)customer_id: Books customer ID (optional)invoice_date: Invoice date (optional, defaults to today)due_date: Due date (optional, defaults to 30 days from today)include_line_items: Include deal amount as line item (default: true)send_email: Send invoice email to customer (default: false)
Example:
{
"deal_id": "123456789",
"customer_id": "987654321",
"include_line_items": true,
"send_email": true
}3. search_records
Search across CRM and Books records.
Parameters:
module: Module to search ("accounts", "contacts", "deals", "leads", "customers", "invoices")criteria: Search criteria (required)fields: Fields to return (optional)page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)
Example:
{
"module": "accounts",
"criteria": "tech company",
"fields": ["Account_Name", "Email", "Phone"],
"page": 1,
"per_page": 10
}Books Items Management Tools
4. books_get_items
Get all items from Books with optional filtering and pagination.
Parameters:
page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)search_text: Search text (optional)filter_by: Filter criteria (optional)sort_column: Column to sort by (optional)sort_order: Sort order "A" or "D" (optional)
5. books_get_item
Get a specific item from Books by ID.
Parameters:
item_id: Item ID (required)
6. books_create_item
Create a new item in Books.
Parameters:
name: Item name (required)description: Item description (optional)rate: Item rate (optional)unit: Unit of measurement (optional)sku: Stock keeping unit (optional)product_type: Product type (optional)is_taxable: Whether item is taxable (optional)tax_id: Tax ID (optional)item_type: Item type (optional)
7. books_update_item
Update an existing item in Books.
Parameters:
item_id: Item ID (required)Plus any fields from
books_create_itemto update
8. books_delete_item
Delete an item from Books.
Parameters:
item_id: Item ID (required)
Books Estimates Management Tools
9. books_get_estimates
Get all estimates from Books with optional filtering and pagination.
Parameters:
page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)customer_id: Filter by customer ID (optional)status: Filter by status (optional)search_text: Search text (optional)filter_by: Filter criteria (optional)sort_column: Column to sort by (optional)sort_order: Sort order "A" or "D" (optional)
10. books_create_estimate
Create a new estimate in Books.
Parameters:
customer_id: Customer ID (required)line_items: Array of line items (required)name: Item name (required)quantity: Quantity (required)rate: Rate (required)description: Description (optional)unit: Unit (optional)item_id: Item ID (optional)tax_id: Tax ID (optional)
estimate_date: Estimate date (optional)expiry_date: Expiry date (optional)currency_code: Currency code (optional)discount: Discount amount (optional)notes: Notes (optional)terms: Terms (optional)
11. books_convert_estimate_to_invoice
Convert a Books estimate to an invoice.
Parameters:
estimate_id: Estimate ID (required)
Books Payments Management Tools
12. books_get_payments
Get all payments from Books with optional filtering and pagination.
Parameters:
page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)customer_id: Filter by customer ID (optional)search_text: Search text (optional)filter_by: Filter criteria (optional)sort_column: Column to sort by (optional)sort_order: Sort order "A" or "D" (optional)
13. books_create_payment
Create a new payment in Books.
Parameters:
customer_id: Customer ID (required)payment_mode: Payment mode (required)amount: Payment amount (required)date: Payment date (required)invoices: Array of invoices to apply payment to (required)invoice_id: Invoice ID (required)invoice_number: Invoice number (required)amount_applied: Amount applied to invoice (required)tax_amount_withheld: Tax amount withheld (optional)
reference_number: Reference number (optional)description: Payment description (optional)bank_charges: Bank charges (optional)currency_code: Currency code (optional)exchange_rate: Exchange rate (optional)
CRM Activities Management Tools
14. crm_get_tasks
Get all tasks from CRM with optional filtering and pagination.
Parameters:
page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)sort_by: Column to sort by (optional)sort_order: Sort order "asc" or "desc" (optional)status: Filter by status (optional)due_date: Filter by due date (optional)
15. crm_create_task
Create a new task in CRM.
Parameters:
Subject: Task subject (required)Status: Task status (optional)Priority: Task priority (optional)Due_Date: Due date (optional)What_Id: Related record ID (optional)Who_Id: Contact ID (optional)Description: Task description (optional)Related_To: Related to field (optional)Remind_At: Reminder time (optional)Recurring_Activity: Recurring activity settings (optional)
16. crm_get_events
Get all events from CRM with optional filtering and pagination.
Parameters:
page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)sort_by: Column to sort by (optional)sort_order: Sort order "asc" or "desc" (optional)start_date: Filter by start date (optional)end_date: Filter by end date (optional)
17. crm_create_event
Create a new event in CRM.
Parameters:
Subject: Event subject (required)Start_DateTime: Start date and time (required)End_DateTime: End date and time (required)Description: Event description (optional)Location: Event location (optional)What_Id: Related record ID (optional)Who_Id: Contact ID (optional)Event_Title: Event title (optional)All_day: All-day event flag (optional)Participants: Array of participant IDs (optional)Remind_At: Reminder time (optional)Recurring_Activity: Recurring activity settings (optional)
18. crm_get_notes
Get notes for a specific CRM record.
Parameters:
module: CRM module name (required)record_id: Record ID (required)page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)
19. crm_create_note
Create a new note for a CRM record.
Parameters:
module: CRM module name (required)record_id: Record ID (required)Note_Title: Note title (required)Note_Content: Note content (required)Parent_Id: Parent record ID (optional)
20. crm_send_email
Send email for a CRM record.
Parameters:
module: CRM module name (required)record_id: Record ID (required)to: Array of recipient email addresses (required)subject: Email subject (required)content: Email content (required)cc: Array of CC email addresses (optional)bcc: Array of BCC email addresses (optional)mail_format: Email format (optional)template_id: Email template ID (optional)
21. crm_get_attachments
Get attachments for a CRM record.
Parameters:
module: CRM module name (required)record_id: Record ID (required)page: Page number (default: 1)per_page: Results per page (default: 20, max: 200)
Configuration Management Tools
22. config_list_environments
List all available environments in the multi-configuration system.
Parameters: None
Example:
{
"name": "config_list_environments",
"arguments": {}
}23. config_switch_environment
Switch to a different environment.
Parameters:
environmentName: Name of the environment to switch to (required)
Example:
{
"name": "config_switch_environment",
"arguments": {
"environmentName": "production"
}
}24. config_list_profiles
List all profiles in the current environment.
Parameters: None
Example:
{
"name": "config_list_profiles",
"arguments": {}
}25. config_switch_profile
Switch to a different profile within the current environment.
Parameters:
profileName: Name of the profile to switch to (required)
Example:
{
"name": "config_switch_profile",
"arguments": {
"profileName": "backup"
}
}26. config_add_profile
Add a new profile to the current environment.
Parameters:
name: Profile name (required)description: Profile description (optional)clientId: Zoho Client ID (required)clientSecret: Zoho Client Secret (required)redirectUri: Redirect URI (required)refreshToken: Refresh Token (required)dataCenter: Data Center (required)scopes: Array of API scopes (required)organizationId: Books Organization ID (optional)
Example:
{
"name": "config_add_profile",
"arguments": {
"name": "backup",
"description": "Backup production account",
"clientId": "1000.BACKUP_CLIENT_ID",
"clientSecret": "BACKUP_CLIENT_SECRET",
"redirectUri": "https://yourdomain.com/callback",
"refreshToken": "1000.BACKUP_REFRESH_TOKEN",
"dataCenter": "com",
"scopes": [
"ZohoCRM.modules.ALL",
"ZohoCRM.settings.ALL",
"ZohoBooks.fullaccess.all"
],
"organizationId": "BACKUP_ORG_ID"
}
}27. config_remove_profile
Remove a profile from the current environment.
Parameters:
profileName: Name of the profile to remove (required)
Example:
{
"name": "config_remove_profile",
"arguments": {
"profileName": "old-profile"
}
}28. config_update_profile
Update an existing profile.
Parameters:
profileName: Name of the profile to update (required)updates: Object containing fields to update (required)
Example:
{
"name": "config_update_profile",
"arguments": {
"profileName": "primary",
"updates": {
"description": "Updated description",
"refreshToken": "1000.NEW_REFRESH_TOKEN"
}
}
}29. config_get_status
Get current configuration status.
Parameters: None
Example:
{
"name": "config_get_status",
"arguments": {}
}30. config_export_to_env
Export current configuration to .env format.
Parameters:
profileName: Name of the profile to export (optional, defaults to active profile)
Example:
{
"name": "config_export_to_env",
"arguments": {
"profileName": "primary"
}
}31. config_add_environment
Add a new environment.
Parameters:
name: Environment name (required)description: Environment description (optional)
Example:
{
"name": "config_add_environment",
"arguments": {
"name": "staging",
"description": "Staging environment for testing"
}
}32. config_remove_environment
Remove an environment.
Parameters:
name: Name of the environment to remove (required)
Example:
{
"name": "config_remove_environment",
"arguments": {
"name": "old-environment"
}
}Available Resources
1. zoho://crm/modules
Returns all available CRM modules and their configurations.
2. zoho://books/organizations
Returns Books organization information.
Usage Examples
Claude Desktop Integration
Once configured, you can use the server with Claude Desktop:
@zoho-crm-books sync_accounts_to_customers with limit 10
@zoho-crm-books create_invoice_from_deal for deal ID 123456789
@zoho-crm-books search_records in accounts for "technology"Programming Interface
You can also use the server programmatically:
import { ZohoMCPServer } from './src/server';
const server = new ZohoMCPServer();
await server.start();Error Handling
The server includes comprehensive error handling:
Authentication Errors: Automatic token refresh on 401 errors
Rate Limiting: Exponential backoff on 429 errors
Validation Errors: Input validation with detailed error messages
Network Errors: Retry logic with configurable timeouts
Monitoring and Logging
The server includes built-in monitoring:
Request/response logging
Performance metrics
Error tracking
Health checks
Security
OAuth 2.0 token-based authentication
Secure token storage and refresh
Input validation and sanitization
Rate limiting protection
HTTPS enforcement
Development
Project Structure
src/
├── auth/ # OAuth authentication
├── clients/ # API clients (CRM, Books)
├── tools/ # MCP tools implementation
├── resources/ # MCP resources implementation
├── types/ # TypeScript type definitions
└── server.ts # Main server implementationTesting
Run tests with:
npm testLinting
npm run lintFormatting
npm run formatContributing
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For issues and questions:
Create an issue on GitHub
Check the Zoho API documentation
Review the MCP specification
Changelog
v1.0.0
Initial release
CRM and Books integration
OAuth 2.0 authentication
Basic sync functionality
MCP server implementation
Available Tools
151 toolsanalyze_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
Inputs: module_name (required), breakdown_field (required), page, date_to, +5 more.
analyze_module_fieldC
Perform statistical analysis on any field in any module
Inputs: field_name (required), module_name (required), analysis_type (required), group_by_field.
books_add_credit_note_commentC
Add a comment to a credit note
Inputs: description (required), creditnote_id (required), show_comment_to_clients.
books_apply_credit_note_to_invoiceD
Apply a credit note to an invoice
Inputs: invoice_id (required), creditnote_id (required), amount_applied (required).
books_approve_purchase_orderC
Approve a purchase order
Inputs: purchase_order_id (required).
books_bulk_export_billsD
Export bills in bulk
Inputs: export_type (required), status, date_to, date_from, +3 more.
books_bulk_export_credit_notesC
Export credit notes in bulk
Inputs: export_type (required), status, date_to, date_from, +3 more.
books_bulk_export_purchase_ordersC
Export purchase orders in bulk
Inputs: export_type (required), status, date_to, date_from, +3 more.
books_bulk_print_billsC
Print bills in bulk
Inputs: bill_ids (required), orientation, template_id.
books_bulk_print_credit_notesC
Print credit notes in bulk
Inputs: creditnote_ids (required), orientation, template_id.
books_bulk_print_purchase_ordersC
Print purchase orders in bulk
Inputs: purchaseorder_ids (required), orientation, template_id.
books_cancel_purchase_orderC
Cancel a purchase order
Inputs: purchase_order_id (required).
books_convert_credit_note_to_openC
Convert a credit note to open status
Inputs: creditnote_id (required).
books_convert_estimate_to_invoiceC
Convert a Books estimate to an invoice
Inputs: estimate_id (required).
books_create_billC
Create a new bill in Books
Inputs: vendor_id (required), line_items (required), date, notes, +16 more.
books_create_credit_noteC
Create a new credit note in Books
Inputs: line_items (required), customer_id (required), date, notes, +19 more.
books_create_customerC
Create a new customer in Books
Inputs: contact_name (required), notes, gst_no, tax_id, +18 more.
books_create_estimateC
Create a new estimate in Books
Inputs: line_items (required), customer_id (required), notes, terms, +5 more.
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
Inputs: line_items (required), customer_id (required), notes, terms, +16 more.
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"}
Inputs: name (required), sku, rate, unit, +5 more.
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_invoices({customer_id: "123"}) // Find unpaid invoices
books_create_payment({customer_id: "123", amount: 1000, invoices: [{invoice_id: "inv-456", amount_applied: 1000}]})
Inputs: date (required), amount (required), invoices (required), customer_id (required), +6 more.
books_create_purchase_orderC
Create a new purchase order in Books
Inputs: vendor_id (required), line_items (required), date, notes, +17 more.
books_delete_billC
Delete a bill from Books
Inputs: bill_id (required).
books_delete_credit_noteC
Delete a credit note from Books
Inputs: creditnote_id (required).
books_delete_customerB
Delete a customer from Books
Inputs: customer_id (required).
books_delete_invoiceBDestructiveIdempotent
Delete an invoice from Books
Inputs: invoice_id (required).
books_delete_itemC
Delete an item from Books
Inputs: item_id (required).
books_delete_purchase_orderC
Delete a purchase order from Books
Inputs: purchase_order_id (required).
books_email_credit_noteC
Email a credit note
Inputs: to_mail_ids (required), creditnote_id (required), body, subject, +3 more.
books_email_purchase_orderC
Email a purchase order
Inputs: to_mail_ids (required), purchase_order_id (required), body, subject, +2 more.
books_get_billA
Get a specific bill from Books by ID
Inputs: bill_id (required).
books_get_bill_paymentsC
Get payments for a bill
Inputs: bill_id (required), page, per_page.
books_get_billsC
Get all bills from Books
Inputs: page, status, date_to, per_page, +8 more.
books_get_credit_noteB
Get a specific credit note from Books by ID
Inputs: creditnote_id (required).
books_get_credit_note_commentsC
Get comments for a credit note
Inputs: creditnote_id (required).
books_get_credit_note_refundsC
Get refunds for a credit note
Inputs: creditnote_id (required), page, per_page.
books_get_credit_notesC
Get all credit notes from Books
Inputs: page, status, date_to, per_page, +9 more.
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)
Inputs: customer_id (required).
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
Inputs: page, email, phone, address, +11 more.
books_get_estimatesC
Get all estimates from Books
Inputs: page, status, per_page, filter_by, +4 more.
books_get_invoiceB
Get a specific invoice from Books by ID
Inputs: invoice_id (required).
books_get_invoice_pdfB
Get an invoice as PDF
Inputs: invoice_id (required).
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)
Inputs: page, status, per_page, filter_by, +4 more.
books_get_itemA
Get a specific item from Books by ID
Inputs: item_id (required).
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
Inputs: page, per_page, filter_by, sort_order, +2 more.
books_get_paymentsC
Get all payments from Books
Inputs: page, per_page, filter_by, sort_order, +3 more.
books_get_purchase_orderA
Get a specific purchase order from Books by ID
Inputs: purchase_order_id (required).
books_get_purchase_ordersC
Get all purchase orders from Books
Inputs: page, status, date_to, per_page, +8 more.
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
Inputs: page, status, date_to, per_page, +7 more.
books_mark_bill_as_openC
Mark a bill as open
Inputs: bill_id (required).
books_mark_bill_as_paidC
Mark a bill as paid
Inputs: bill_id (required).
books_mark_purchase_order_as_billedB
Mark a purchase order as billed
Inputs: purchase_order_id (required).
books_mark_purchase_order_as_openC
Mark a purchase order as open
Inputs: purchase_order_id (required).
books_record_bill_paymentC
Record a payment for a bill
Inputs: date (required), amount (required), bill_id (required), payment_mode (required), +4 more.
books_refund_credit_noteC
Create a refund for a credit note
Inputs: date (required), amount (required), refund_mode (required), creditnote_id (required), +4 more.
books_send_invoice_emailC
Send an invoice via email
Inputs: invoice_id (required), to_mail_ids (required), body, subject.
books_submit_purchase_order_for_approvalC
Submit a purchase order for approval
Inputs: purchase_order_id (required).
books_update_billC
Update an existing bill in Books
Inputs: bill_id (required), date, notes, terms, +17 more.
books_update_credit_noteC
Update an existing credit note in Books
Inputs: creditnote_id (required), date, notes, terms, +20 more.
books_update_customerC
Update an existing customer in Books
Inputs: customer_id (required), notes, tax_id, website, +8 more.
books_update_invoiceC
Update an existing invoice in Books
Inputs: invoice_id (required), notes, terms, discount, +17 more.
books_update_itemC
Update an existing item in Books
Inputs: item_id (required), sku, name, rate, +6 more.
books_update_purchase_orderC
Update an existing purchase order in Books
Inputs: purchase_order_id (required), date, notes, terms, +18 more.
books_void_billC
Void a bill
Inputs: bill_id (required).
books_void_credit_noteC
Void a credit note
Inputs: creditnote_id (required).
config_add_environmentC
Add a new environment
Inputs: name (required), description.
config_add_profileB
Add a new profile to the current environment
Inputs: name (required), scopes (required), clientId (required), dataCenter (required), +5 more.
config_export_to_envB
Export current configuration to .env format
Inputs: profileName.
config_get_statusD
Get current configuration status
Inputs: no named parameters.
config_list_environmentsA
List all available environments
Inputs: no named parameters.
config_list_profilesA
List all profiles in the current environment
Inputs: no named parameters.
config_remove_environmentB
Remove an environment
Inputs: name (required).
config_remove_profileB
Remove a profile from the current environment
Inputs: profileName (required).
config_switch_environmentC
Switch to a different environment
Inputs: environmentName (required).
config_switch_profileA
Switch to a different profile within the current environment
Inputs: profileName (required).
config_update_profileC
Update an existing profile
Inputs: updates (required), profileName (required).
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)
Inputs: deal_id (required), due_date, send_email, customer_id, +2 more.
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
Inputs: date_from (required), module_name (required), date_to, group_by, +1 more.
crm_analyze_module_permissionsC
Analyze module permissions and accessibility
Inputs: module_name (required).
crm_analyze_picklist_dependenciesB
Analyze picklist dependencies and relationships in a module. Identifies field dependencies, picklist chains, and relationship patterns.
Inputs: module_name (required).
crm_create_eventD
Create a new event in CRM
Inputs: Subject (required), End_DateTime (required), Start_DateTime (required), Who_Id, +8 more.
crm_create_noteC
Create a new note for a CRM record
Inputs: module (required), record_id (required), Note_Title (required), Note_Content (required), +1 more.
crm_create_profileC
Create a new profile
Inputs: profile_data (required).
crm_create_roleC
Create a new role
Inputs: role_data (required).
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"}
Inputs: Subject (required), Status, Who_Id, What_Id, +6 more.
crm_create_userC
Create a new user
Inputs: user_data (required).
crm_delete_roleC
Delete a role
Inputs: role_id (required).
crm_extract_complete_picklist_hierarchyA
Extract complete picklist hierarchy with dependencies in one optimized call - reduces multiple API calls to single request
Inputs: module_name (required), field_pattern, output_format, include_dependencies.
crm_get_all_currenciesB
Get all currencies
Inputs: no named parameters.
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)
Inputs: page, per_page, include_custom_modules, include_system_modules.
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
Inputs: no named parameters.
crm_get_all_rolesA
Get all roles in the organization
Prerequisites: Use crm_get_all_profiles first to understand profile-role relationships Next Steps: Use crm_get_role_details for specific role analysis → crm_get_all_users to see role assignments → crm_update_role for modifications Common Pattern: Role discovery → Role detail analysis → User assignment review → Role management Error Recovery: If role list is empty, check organization setup with crm_get_organization_details → verify user permissions
Inputs: no named parameters.
crm_get_all_territoriesA
Get all territories
Inputs: no named parameters.
crm_get_all_usersA
Get all users in the organization with optional type filtering (AllUsers, AdminUsers, etc.)
Prerequisites: Use crm_get_all_profiles and crm_get_all_roles first for context Next Steps: Use crm_get_user_details for specific user analysis → crm_get_organization_details for user limits → crm_create_user for new users Common Pattern: User discovery → Individual user analysis → Role/profile assignment → User management operations Error Recovery: If user list incomplete, try different type filters → check organization user limits → verify API permissions
Inputs: type.
crm_get_assignment_rulesC
Get assignment rules
Inputs: no named parameters.
crm_get_attachmentsC
Get attachments for a CRM record
Inputs: module (required), record_id (required), page, per_page.
crm_get_blueprint_metadataC
Get blueprint metadata
Inputs: no named parameters.
crm_get_complete_disposition_dataC
Get complete disposition data including all Global Set values and dependent fields
Inputs: module_name (required), include_dependent_fields.
crm_get_complete_module_configurationA
Get complete module configuration including fields, layouts, custom views, and related lists
Inputs: module_name (required).
crm_get_custom_view_detailsA
Get detailed metadata for a specific custom view including criteria, fields, and sorting
Prerequisites: Use crm_get_custom_views to identify target custom_view_id Next Steps: Use crm_search_records with view criteria → crm_get_fields for field analysis → crm_update_custom_view for modifications Common Pattern: View identification → View configuration analysis → Record retrieval with view → View optimization Error Recovery: If view_id not found, refresh with crm_get_custom_views → verify view still exists → check view permissions
Inputs: module_name (required), custom_view_id (required).
crm_get_custom_viewsA
Get all custom views for a module including system and user-defined views
Prerequisites: Use crm_get_all_modules to verify module_name exists and is accessible Next Steps: Use crm_get_custom_view_details for specific view analysis → crm_search_records with view filters → crm_create_custom_view for new views Common Pattern: Module discovery → View listing → View analysis → Record filtering with views → View management Error Recovery: If no views found, verify module_name spelling → check module permissions → try crm_get_module_metadata first
Inputs: module_name (required).
crm_get_dependent_fieldsB
Get fields that depend on a specific field in a module. Useful for understanding field relationships and dependencies.
Inputs: field_name (required), module_name (required).
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)
Inputs: page, sort_by, end_date, per_page, +2 more.
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
Inputs: date_from (required), module_name (required), date_to, per_page, +2 more.
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
Inputs: field_id (required), module_name (required).
crm_get_field_relationshipsB
Get all field relationships and dependencies in a module. Provides comprehensive analysis of field connections.
Inputs: module_name (required).
crm_get_global_fieldsA
Get global fields across all modules (global picklists and lookups)
Inputs: no named parameters.
crm_get_global_set_valuesB
Get Global Set values by name - specifically for extracting complete disposition data
Inputs: global_set_name (required), include_metadata.
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
Inputs: layout_id (required).
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
Inputs: module_name.
crm_get_metadata_summaryB
Get comprehensive metadata summary for the entire CRM
Inputs: no named parameters.
crm_get_module_detailsC
Get detailed metadata for a specific module
Inputs: module_name (required).
crm_get_module_fieldsA
Get fields for a module with pagination and filtering to avoid large responses
Inputs: module_name (required), page, per_page, field_type, +1 more.
crm_get_notesC
Get notes for a specific CRM record
Inputs: module (required), record_id (required), page, per_page.
crm_get_organization_detailsA
Get organization details and settings including configuration, limits, and administrative info
Prerequisites: None - foundational tool for understanding organizational context Next Steps: Use crm_get_organization_features for feature analysis → crm_get_all_users for user management → crm_get_all_modules for system scope Common Pattern: Organization discovery → Feature assessment → User/module analysis → Configuration management Error Recovery: If details unavailable, verify API credentials → check admin permissions → try crm_get_organization_features as alternative
Inputs: no named parameters.
crm_get_organization_featuresA
Get organization features and limits including API limits, storage, user counts, and enabled features
Prerequisites: Use crm_get_organization_details first for general context Next Steps: Use crm_get_all_users to verify user count against limits → crm_get_all_modules to check feature availability → plan capacity management Common Pattern: Organization assessment → Feature availability check → Capacity planning → Usage optimization Error Recovery: If features not accessible, verify admin permissions → try crm_get_organization_details → check API rate limits
Inputs: no named parameters.
crm_get_picklist_fieldsA
Get only picklist fields for a specific module - optimized for finding disposition/status fields
Inputs: module_name (required).
crm_get_picklist_valuesA
Get picklist values for a specific field in a module including active, inactive values and display labels.\n\nPrerequisites:\n→ Use crm_get_fields first to identify picklist fields\n→ Have valid module_name and field_name from field discovery\n\nNext Steps:\n→ Use picklist values for crm_validate_criteria with exact value matching\n→ Use values in crm_search_records criteria for filtering\n→ Use for data validation and form building workflows\n\nCommon Pattern: crm_get_fields (identify picklists) → crm_get_picklist_values → crm_search_records (with values)\n\nData Validation: Essential for ensuring accurate search criteria and data entry\nError Recovery: If "Field not found" or "Not a picklist", verify field details with crm_get_fields
Inputs: field_name (required), module_name (required).
crm_get_pipeline_metadataC
Get pipeline metadata
Inputs: no named parameters.
crm_get_role_detailsA
Get detailed metadata for a specific role including permissions and hierarchy
Prerequisites: Use crm_get_all_roles to identify target role_id Next Steps: Use crm_get_all_users with role filter → crm_get_all_profiles to see profile associations → crm_update_role for permission changes Common Pattern: Role identification → Detailed role analysis → User impact assessment → Role modification workflow Error Recovery: If role_id not found, refresh with crm_get_all_roles → verify role still exists → check access permissions
Inputs: role_id (required).
crm_get_tasksC
Get all tasks from CRM
Inputs: page, status, sort_by, due_date, +2 more.
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
Inputs: record_id (required), module_name (required), page, per_page, +2 more.
crm_get_user_detailsA
Get detailed metadata for a specific user including roles, profiles, and permissions
Prerequisites: Use crm_get_all_users to identify target user_id Next Steps: Use crm_get_role_details for user's role analysis → crm_get_all_profiles for profile permissions → crm_update_user for modifications Common Pattern: User identification → Detailed user analysis → Permission audit → User configuration changes Error Recovery: If user_id not found, refresh with crm_get_all_users → verify user still active → check access to user data
Inputs: user_id (required).
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
Inputs: date_from (required), module_name (required), page, action, +3 more.
crm_search_fieldsA
Search fields by name pattern - use to find specific fields like "disposition" or "status"
Inputs: module_name (required), search_term (required).
crm_semantic_field_searchC
Semantic field search - find fields related to a concept (e.g., "disposition", "status", "reason")
Inputs: concept (required), module_name (required), include_custom_fields.
crm_send_emailC
Send email for a CRM record
Inputs: to (required), module (required), content (required), subject (required), +5 more.
crm_smart_field_discoveryB
Smart field discovery - finds fields based on intent with optimized response format to reduce tokens and iterations
Inputs: intent (required), module_name (required), format, max_results, +1 more.
crm_update_layoutC
Update layout configuration
Inputs: layout_id (required), layout_data (required).
crm_update_profileC
Update profile permissions
Inputs: profile_id (required), profile_data (required).
crm_update_roleC
Update role details
Inputs: role_id (required), role_data (required).
desk_get_all_departmentsA
Get all departments in Zoho Desk with supported entity types and configuration\n\nPrerequisites: Zoho Desk access with department read permissions\nNext Steps: Use desk_get_entity_fields for entity analysis → desk_search_entities for records\nWorkflow: Department discovery → entity field analysis → ticket/contact operations\nError Recovery: If departments not accessible, verify Desk product access and permissions
Inputs: no named parameters.
desk_get_entity_fieldsA
Get field metadata for a specific entity type in a Desk department\n\nPrerequisites: Department ID from desk_get_all_departments\nNext Steps: Use field details for desk_search_entities criteria and filtering\nCommon Entities: tickets, contacts, accounts, agents, products\nError Recovery: If fields not found, verify department and entity type are valid
Inputs: entity_type (required), department_id (required).
desk_get_entity_timelineA
Get timeline/activity history for a specific Desk entity record\n\nPrerequisites: Department ID, entity type, and record ID from desk_search_entities\nNext Steps: Analyze timeline for support patterns, escalations, and resolution tracking\nUse Cases: Ticket lifecycle analysis, customer interaction history, agent performance\nError Recovery: If timeline empty, verify record exists and has activity history
Inputs: record_id (required), entity_type (required), department_id (required), from, +2 more.
desk_search_entitiesA
Search entities in a Desk department with flexible filtering and pagination\n\nPrerequisites: Department ID and entity type, optional field details for targeted searches\nNext Steps: Use desk_get_entity_timeline for record activity history\nCommon Patterns: Ticket management, contact lookup, account discovery\nError Recovery: If no results, broaden search criteria or check entity permissions
Inputs: entity_type (required), department_id (required), from, email, +9 more.
get_custom_module_recordsA
Get records from any custom module with flexible filtering
Inputs: module_name (required), page, fields, per_page, +2 more.
get_smart_queriesA
Get all available smart query builders across Zoho products. Smart queries are pre-built, business-focused workflows that combine multiple tools to solve common business scenarios.\n\nCategories Available: sales, marketing, finance, hr, support, analytics\n\nProducts Covered: CRM (sales intelligence), Books (financial analysis), People (HR insights), Desk (support optimization)\n\nExample: Get all sales-focused queries\n{"category": "sales"}
Inputs: product, category.
get_smart_query_planA
Get detailed execution plan for a specific smart query. Shows the complete tool sequence, parameters, and expected outcomes for business intelligence workflows.\n\nPrerequisites: Use get_smart_queries first to discover available query names\n\nNext Steps: Execute the returned tool sequence manually or use as guidance for complex analysis workflows\n\nExample: Get plan for "Hot Leads Pipeline Analysis"\n{"query_name": "Hot Leads Pipeline Analysis"}
Inputs: query_name (required).
list_available_categoriesA
List all available tool categories. Use this to understand the organization of tools and find the right category for your task.
Inputs: no named parameters.
list_business_scenariosA
List common business scenarios and their recommended smart query solutions. Perfect for discovering workflow automation opportunities.\n\nBusiness Areas: Sales forecasting, Customer retention, Cash flow optimization, Employee performance, Support efficiency\n\nOutput: Curated list of business scenarios with matching smart queries and expected ROI\n\nExample: {}
Inputs: no named parameters.
list_tool_categoriesA
Get organized list of all tool categories with descriptions. Perfect starting point for LLMs to understand available functionality.
Inputs: no named parameters.
list_tools_by_categoryA
List all available tools grouped by category. Use this to discover tools for specific tasks like customer management, invoice processing, or CRM activities.
Example: List all customer management tools {"category": "Books - Customer Management"}
Inputs: category.
people_get_all_modulesARead-onlyIdempotent
Get all available Zoho People modules (Employees, Departments, Attendance, etc.)\n\nPrerequisites: Zoho People access with module read permissions\nNext Steps: Use people_get_fields for module field discovery → people_search_records for data retrieval\nWorkflow: Module discovery → field analysis → record operations\nError Recovery: If modules not accessible, verify People product access and API permissions
Inputs: no named parameters.
people_get_fieldsARead-onlyIdempotent
Get field metadata for a specific People module with detailed schema information\n\nPrerequisites: Module name from people_get_all_modules\nNext Steps: Use field api_name values in people_search_records operations\nCommon Pattern: Module discovery → field analysis → targeted searches\nError Recovery: If fields not found, verify module exists and check field access permissions
Inputs: module_name (required), field_id.
people_get_timelineA
Get timeline/activity history for a People record including status changes and updates\n\nPrerequisites: Record ID from people_search_records\nNext Steps: Use timeline data for audit trails and activity analysis\nUse Cases: Employee activity tracking, change auditing, compliance monitoring\nError Recovery: If timeline empty, verify record has activity history and timeline permissions
Inputs: record_id (required), module_name (required), page, per_page, +2 more.
people_search_recordsARead-onlyIdempotent
Search records in a People module with flexible text-based criteria\n\nPrerequisites: Module name from people_get_all_modules, optional field details from people_get_fields\nNext Steps: Use people_get_timeline for record activity analysis\nUse Cases: Employee lookup, department searches, attendance tracking\nError Recovery: If no results, try broader search terms or verify module permissions
Inputs: criteria (required), module_name (required), page, fields, +1 more.
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"]}
Inputs: module (required), criteria (required), page, fields, +1 more.
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}}
Inputs: source_module (required), target_module (required), filters.
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
Inputs: source_module (required), target_module (required), filters.
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.
Inputs: source_module (required), target_module (required), filters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 151 tools
Many tools have overlapping purposes, especially in field discovery and analysis (e.g., crm_get_picklist_fields, crm_get_picklist_values, crm_analyze_picklist_dependencies, crm_extract_complete_picklist_hierarchy) and category listing (list_tool_categories, list_tools_by_category, list_available_categories). This overlap would confuse an agent trying to select the correct tool.
While many tools follow a 'prefix_verb_noun' pattern, there are significant deviations: some tools lack prefixes (search_records, create_invoice_from_deal), some use 'get_all' vs 'list' (crm_get_all_modules vs config_list_environments), and there are inconsistent abbreviations ('env' vs 'environment'). The redundant category listing tools also use inconsistent names.
With 151 tools, this server is extremely over-scoped for an agent to navigate effectively. Even for a multi-product integration (CRM, Books, People, Desk, config), the number of tools is excessive and includes many near-duplicate and overly granular operations (bulk print/export, comments, etc.), making it unwieldy.
The tool set covers a broad range of CRM and Books operations, including CRUD for customers, items, invoices, and bills, plus sync and analysis tools. However, there are notable gaps: no update/delete for estimates, no create/update/delete for sales orders, and limited write operations for CRM tasks/events (e.g., no update/delete for tasks or events).
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Zoho MCP allows you to create your own MCP server to perform complex actions in a host of Zoho applications and 500+ third-party services
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that integrates AI assistants with Zoho CRM, enabling contact and deal management operations through natural language.3MIT
- AlicenseAqualityDmaintenanceMCP server for Zoho Books integration, enabling AI agents to perform bookkeeping operations like managing journals, expenses, bills, invoices, and file attachments.491MIT
- AlicenseNot gradedqualityDmaintenanceA standalone MCP server that integrates with Twenty CRM to provide AI-powered CRM capabilities, enabling CRUD operations and real-time synchronization.164 npmMIT
- AlicenseNot gradedqualityAmaintenanceMCP server enabling AI assistants to manage invoices, contacts, products, and other accounting data through the Bukku API.9MIT