Skip to main content
Glama
veluralabs

Zoho Mail MCP

by veluralabs

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZOHO_CLIENT_IDYesClient ID from your Zoho API console Self Client.
ZOHO_ACCOUNT_IDNoOptional. Empty uses your default mail account.
ZOHO_DATA_CENTERYesZoho data center: com, in, eu, com.au, jp, sa or ca.
ZOHO_DOWNLOAD_DIRNoOptional. Where attachments are saved.
ZOHO_FROM_ADDRESSNoOptional default sender. Empty uses the account's primary address.
ZOHO_CLIENT_SECRETYesClient secret from your Zoho API console Self Client.
ZOHO_REFRESH_TOKENYesRefresh token obtained by exchanging the generated code.
ZOHO_ALLOW_PERMANENT_DELETENoOptional. true lets zoho_delete_email delete permanently. Off by default, so deleting moves mail to Trash.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
zoho_get_accountsB

Get all mail accounts of the authenticated user (accountId, email addresses, display name, storage, send-mail details).

zoho_get_accountA

Get details of one mail account. Defaults to the configured account.

zoho_list_foldersA

List all folders (folderId, folderName, path, folderType, isArchived). The response has no unread count; use zoho_list_emails with status=unread to find unread mail.

zoho_get_folderC

Get details of a single folder.

zoho_list_emailsA

List emails in a folder (or across folders if folderId is omitted), newest first by default. Returns summary, subject, sender, fromAddress, toAddress, messageId, folderId, threadId, receivedTime, status, flagid, hasAttachment.

zoho_search_emailsA

Search emails using Zoho search syntax. searchKey is "parameter:value" terms joined with "::" (AND) or ":or:" (OR). Parameters: entire:, content:, sender:, to:, cc:, subject:, fileName:, fileContent:, has:attachment (also has:flags, has:convo), in:, label:, fromDate:/toDate: (DD-MMM-YYYY, e.g. fromDate:12-Sep-2025), inclspamtrash:true, groupResult:true. The special key "newMails" returns newly arrived mail. Example: subject:Invoice::sender:billing@acme.com::has:attachment

zoho_get_email_contentB

Get the body (HTML) of an email.

zoho_get_email_metadataB

Get metadata of an email (subject, sender, recipients, times, size, status, flag, attachment flags, summary).

zoho_get_email_headersB

Get the internet message headers of an email (Message-ID, References, Received, authentication results…).

zoho_get_original_messageB

Get the full original MIME source of an email (headers + all parts).

zoho_get_attachment_infoB

List the attachments of an email (attachmentId, attachmentName, attachmentSize), optionally with inline images and their cid.

zoho_download_attachmentA

Download an email attachment to the local disk and return the saved path. Get attachmentId and the name from zoho_get_attachment_info.

zoho_download_inline_imageA

Download an inline image of an email to the local disk. contentId is the cid from zoho_get_attachment_info (includeInline=true).

zoho_send_emailA

Send an email (optionally with attachments and/or scheduled). This sends real mail immediately — confirm recipients and content with the user first. For attachments, call zoho_upload_attachment first and pass the returned objects.

zoho_save_draftA

Save an email as a draft or as a template without sending it. To make it a threaded reply draft, set inReplyTo/refHeader from the original email's headers.

zoho_reply_to_emailA

Reply to an existing email (keeps it in the same thread). This sends real mail immediately — confirm with the user first.

zoho_upload_attachmentA

Upload a local file to Zoho so it can be attached to an email. Returns { storeName, attachmentPath, attachmentName } to pass in attachments of zoho_send_email / zoho_save_draft / zoho_reply_to_email. With isInline=true also returns a url to use as an in HTML content.

zoho_mark_emails_readA

Mark emails as read. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_mark_emails_unreadA

Mark emails as unread. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_move_emailsA

Move emails to another folder. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_flag_emailsA

Set or clear the flag on emails. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_remove_all_labels_from_emailsA

Remove every label from emails. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_archive_emailsA

Archive emails. On most accounts this moves them to the Archive folder; use zoho_move_emails to move them back. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_mark_emails_spamA

Mark emails as spam (moves them to the Spam folder). Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_mark_emails_not_spamB

Mark emails as not spam. Target individual emails with messageId, or whole conversations with threadId (give one of the two).

zoho_flag_threadsC

Set or clear the flag on whole threads.

zoho_move_threadsC

Move whole threads to another folder.

zoho_remove_all_labels_from_threadsB

Remove every label from whole threads.

zoho_mark_threads_readC

Mark whole threads as read.

zoho_mark_threads_unreadC

Mark whole threads as unread.

zoho_mark_threads_spamC

Mark whole threads as spam.

zoho_mark_threads_not_spamC

Mark whole threads as not spam.

zoho_delete_emailA

Delete an email. By default it is moved to Trash (recoverable). expunge=true deletes permanently and only works when the server is started with ZOHO_ALLOW_PERMANENT_DELETE=true.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 33 tools

Disambiguation2/5

The set includes parallel email-level and thread-level tools (e.g., zoho_mark_emails_read vs zoho_mark_threads_read, zoho_move_emails vs zoho_move_threads). The email-level tools explicitly accept either messageId or threadId, making the thread-specific tools largely redundant and creating ambiguity about which tool to use when a threadId is available. While descriptions help distinguish some other tools (content vs metadata vs headers), this overlap is a notable boundary issue.

Naming Consistency4/5

All tools share a consistent zoho_ prefix and snake_case convention, mostly following a verb_noun or verb_noun_state pattern. Minor inconsistencies exist in singular/plural forms (e.g., zoho_get_accounts vs zoho_get_account, zoho_list_folders vs zoho_get_folder), but the overall naming is predictable and readable.

Tool Count2/5

With 33 tools, the server is far above the typical sweet spot and includes many redundant email/thread pairs that could be consolidated with a parameter. This inflates the surface unnecessarily, making the toolset feel heavy and harder to navigate than the domain requires.

Completeness4/5

Core email operations—send, reply, save draft, search, attachments, read/unread, move, spam, archive, delete—are well covered. However, notable gaps remain in folder and label management (no create/delete folder or add-label tools) and there is no direct send-draft operation; agents can work around these but the surface is not fully complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues