# Zoho Desk MCP MCP

> Zoho Desk MCP manages your entire support lifecycle—tickets, contacts, and accounts—using natural language commands. Your agents can read full ticket history, create new issues, update statuses, add internal context, or send public replies without leaving the chat interface.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** ticket-management, support-automation, helpdesk, customer-service, issue-tracking, internal-notes

## Description

This connector lets you turn any agent into a fully-featured helpdesk worker right inside your existing communication flow. You stop clicking through multiple tabs and start telling your AI client exactly what needs to happen. Your agent can first look up customer details by running `list_contacts`, then check the full history using `get_ticket` before deciding if it needs to run a new ticket via `create_ticket`. If you need something complex—like triggering a support issue, pulling related contact data, and then logging the whole thing in an accounting system—you can chain this MCP with other services through Vinkius. This means your agent doesn't just solve one problem; it handles entire multi-step processes across different platforms. It’s designed for customer service teams that manage high volumes of issues and need to keep track of every detail, from initial contact to final resolution.

## Tools

### add_note
Adds private notes visible only to your team, helping keep internal context separate from customer replies.

### add_reply
Sends a public reply that the customer sees in their portal or via email.

### create_contact
Creates a new person record using names and emails, setting up the foundation for future support interactions.

### create_ticket
Starts a brand-new support ticket in Zoho Desk with basic info like subject, priority, and department.

### get_contact
Retrieves all details about one specific contact so you can verify who you're talking to before acting.

### get_ticket
Pulls the complete record of a single ticket, giving full visibility into its entire history and communications.

### list_accounts
Shows all company accounts in your system, which is useful for understanding the broader business context behind a support issue.

### list_agents
Finds out who's working right now, checking agent names, roles, and availability status for ticket assignment.

### list_contacts
Provides a list of all customer contacts, including their phone numbers and which company account they belong to.

### list_departments
Returns the names and IDs of all departments; you must run this first if you need to assign or categorize tickets correctly.

### list_tickets
Lists all support tickets across your entire department structure, giving a bird's-eye view of open issues.

### search_tickets
Searches for specific topics, customer names, or keywords across the whole ticket base to find relevant cases quickly.

### update_ticket
Changes a ticket's status—like closing it out or reassigning it to another agent—without changing its content.

## Prompt Examples

**Prompt:** 
```
List all open high-priority tickets from the Support department
```

**Response:** 
```
I'll search for high-priority open tickets in your Support department right away.
```

**Prompt:** 
```
Create a new ticket for john@example.com about billing issue with subject 'Payment Failed'
```

**Response:** 
```
I'll create the billing ticket and assign it to the appropriate department.
```

**Prompt:** 
```
Add a public reply to ticket #12345 saying 'We are investigating your issue and will update you shortly'
```

**Response:** 
```
I'll post the reply to the ticket right now.
```

## Capabilities

### Review Customer Records
Instantly pull up a specific customer's details or list all associated contacts to understand their relationship with your company.

### Find and Review Issues
Search across all departments for tickets, or retrieve the full history of a known ticket before responding.

### Start New Support Cases
Create brand new support tickets, setting the correct priority, status, and department automatically.

### Communicate with Customers
Send public replies that show up in the customer portal or via email, or add private internal notes for team visibility.

## Use Cases

### A new customer needs help with an account issue.
The agent first uses `list_contacts` to find John Smith and his company profile. Then, they use `get_ticket` on the existing ticket history to see what was already tried. Finally, they write a public reply using `add_reply` confirming next steps.

### A manager needs to audit ticket workload.
The manager runs `list_tickets` to get a count of all open cases and then uses `search_tickets` filtering by 'Urgent' status. This helps them quickly identify departments needing more staff via `list_agents`.

### A billing issue requires creating a new case.
The agent realizes the contact is missing from the system and uses `create_contact`. They then use this new ID to successfully run `create_ticket`, ensuring all required fields are populated right away.

### Closing out a long-running support thread.
The agent reviews everything using `get_ticket`'s full history. Since the issue is resolved, they use `update_ticket` to change the status and then write one final public reply via `add_reply`.

## Benefits

- Never lose track of who you're talking to. Before creating or updating anything, your agent can run `get_contact` to confirm the customer's details and account status.
- Handle complex issue routing automatically. By first running `list_departments`, your agent knows the correct departmental ID before attempting to `create_ticket` or assign a new case.
- Keep internal discussions separate from public replies. You can use `add_note` for escalation context, ensuring that customers only see what's meant for them via `add_reply`.
- Get total visibility into the queue. Instead of checking multiple views, running `list_tickets` gives an instant overview of open issues across all departments.
- Save time on manual updates. When a case is resolved, your agent can run `update_ticket` to change the status from 'Open' to 'Closed', completing the cycle instantly.

## How It Works

The bottom line is you get an agent that performs complex customer service actions without needing any coding.

1. Connect your Zoho Desk account using an OAuth token from the Zoho API Console.
2. Supply your Organization ID (this is found in your Zoho Desk setup settings).
3. Ask your AI client to perform a support task, like 'List all open high-priority tickets' or 'Create a ticket for Acme Corp.'

## Frequently Asked Questions

**How do I search for open tickets using list_tickets?**
You don't have to run `list_tickets` and filter manually. You can simply ask your agent, 'List all high-priority tickets that are currently open.' The MCP handles the filtering automatically.

**Can I use create_ticket if the contact doesn't exist?**
Yes. If you don't have a contact record, the system can usually handle creating the ticket and optionally suggesting or running `create_contact` afterward to build out the necessary customer profile.

**What is the difference between adding an internal note vs sending a reply?**
Internal notes are for team visibility only—they never go to the customer. Replies via `add_reply` are designed specifically to be visible in the public-facing portal or sent as emails.

**What is the best way to review all ticket history?**
Always use `get_ticket`. This tool pulls the full, complete record for one specific issue ID, giving you a chronological view of every action taken on that case.

**How does using list_departments help me with initial setup?**
You must call list_departments first to retrieve the unique department IDs needed for almost every other action. This step ensures your agent knows which categories exist before trying to assign a new ticket or check agent availability.

**What happens if I try to create a ticket using create_ticket with missing required fields?**
The system immediately returns an error detailing exactly which mandatory fields are missing. This prevents the AI from failing silently; it gives you structured data so your agent can prompt for the correct information and retry.

**Does updating a ticket using update_ticket create an audit trail?**
Yes, every modification through update_ticket is logged with full context. The system records who changed the status or priority and when, providing a complete history for compliance and review.

**What's the best practice for searching tickets using search_tickets?**
Always provide specific keywords or customer names to search_tickets. The tool searches subject lines, descriptions, and custom fields; vague queries will return too many results that require manual filtering.

**What Zoho Desk plan do I need for this MCP server?**
This MCP server works with any paid Zoho Desk plan (Standard, Professional, Enterprise). The free plan has limited API access. Ensure your organization has API enabled in admin settings.

**Can this MCP server automate ticket routing and escalation?**
Yes! AI agents can list tickets, filter by status/priority, update assignees, change departments, and add internal notes for escalation. Combined with workflow rules in Zoho Desk, you can build fully automated support pipelines.

**Does this work with Zoho's multi-tenant organizations?**
Absolutely. The MCP server requires an orgId parameter, so you can connect to any Zoho Desk organization you have access to. For multiple orgs, deploy separate MCP instances with different credentials.