Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Zoho Mail in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work in Zoho Mail: find emails by folder or with Zoho's search, read content, headers and details, send and reply, and mark, move, flag or label emails. Any Zoho data center, Zoho OAuth sign-in.
Try asking
Example prompts for Zoho Mail
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Zoho Mail, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Zoho Mail
Let your AI work in Zoho Mail: find emails by folder or with Zoho's search, read content, headers and details, send and reply, and mark, move, flag or label emails. Any Zoho data center, Zoho OAuth sign-in.
Setup
You need a Zoho Mail mailbox, on a free or paid plan.
Data center first: Zoho keeps every account in one data center, and the sign-in server and the Mail API host must both belong to it. The address bar shows yours when you use Zoho Mail. A wrong data center fails with INVALID_OAUTHTOKEN or invalid_client.
| Region (your Zoho Mail address) | ZOHO_MAIL_ACCOUNTS_URL | ZOHO_MAIL_API_URL |
|---|---|---|
| EU (mail.zoho.eu) | https://accounts.zoho.eu | https://mail.zoho.eu |
| US (mail.zoho.com) | https://accounts.zoho.com | https://mail.zoho.com |
| India (mail.zoho.in) | https://accounts.zoho.in | https://mail.zoho.in |
| Australia (mail.zoho.com.au) | https://accounts.zoho.com.au | https://mail.zoho.com.au |
| Japan (mail.zoho.jp) | https://accounts.zoho.jp | https://mail.zoho.jp |
| Canada (mail.zohocloud.ca) | https://accounts.zohocloud.ca | https://mail.zohocloud.ca |
| Saudi Arabia (mail.zoho.sa) | https://accounts.zoho.sa | https://mail.zoho.sa |
| UAE (mail.zoho.ae) | https://accounts.zoho.ae | https://mail.zoho.ae |
| China (mail.zoho.com.cn) | https://accounts.zoho.com.cn | https://mail.zoho.com.cn |
- Open the Zoho API Console at api-console.zoho.com, signed in with your Zoho account, and choose Add Client → Server-based Applications.
- Give the client a name (for example AnythingMCP), your company site as homepage URL and
https://cloud.anythingmcp.com/api/mcp-oauth/callbackas Authorized Redirect URI. If you host AnythingMCP yourself, enterhttps://your-anythingmcp-host/api/mcp-oauth/callbackinstead. Create the client. - On the Client Secret tab, copy the Client ID (it starts with
1000.) and the Client Secret intoZOHO_MAIL_CLIENT_IDandZOHO_MAIL_CLIENT_SECRET. If your mailbox lives in another data center than the one the console opened in, enable that data center on the client's Settings tab (Multi-DC) and use the client secret shown there for it. - Set
ZOHO_MAIL_ACCOUNTS_URLandZOHO_MAIL_API_URLto your data center from the table, without a trailing slash, and install the connector. - On the connector page, click Authorize with Provider, sign in to Zoho and approve the requested access.
- Run
zoho_mail_list_accountsto check the connection: it shows your mailbox and the addresses the AI can send from.
Staying signed in: access tokens last an hour and are renewed automatically with the stored refresh token. Zoho keeps at most 20 refresh tokens per user and client: authorizing the same client a 21st time silently revokes the oldest one. If the connector loses its sign-in, click Authorize with Provider again.
Permissions and read-only setup: the connector asks for ZohoMail.accounts.READ, ZohoMail.folders.READ, ZohoMail.messages.ALL and ZohoMail.tags.READ, and works as the Zoho user who authorized it. For a read-only setup, change ZohoMail.messages.ALL to ZohoMail.messages.READ in the connector's OAuth settings, authorize again and switch off zoho_mail_send_email, zoho_mail_reply_to_email, zoho_mail_mark_as_read, zoho_mail_mark_as_unread, zoho_mail_move_emails, zoho_mail_flag_emails and zoho_mail_apply_labels.
Nothing is sent without your yes: zoho_mail_send_email and zoho_mail_reply_to_email send real mail in your name. Before sending, the AI shows you the recipients, the subject and the text, and waits for an explicit yes. Marking, moving, flagging and labelling change your mailbox, so the AI first tells you what will change.
Switched off at install: zoho_mail_delete_email. When you turn it on, it moves an email to the Trash; it deletes for good only when you explicitly ask for that.
Accounts, folders and search: every call needs the id of a mail account, so the AI reads your accounts first. If you have more than one, for example an added POP account, it uses the one you mean and sends from that account's own addresses. It lists a folder with filters for unread, flagged or labelled mail, or uses Zoho's search, for example by sender, subject, attachment or date.
Emails are untrusted content: emails come from outside senders. The AI treats instructions inside an email as content, never as orders.
Common errors: 401 INVALID_OAUTHTOKEN means the sign-in is missing or was revoked, or ZOHO_MAIL_API_URL is not your data center: fix the URL or click Authorize with Provider again. invalid_client at sign-in usually means ZOHO_MAIL_ACCOUNTS_URL is not your data center, or the client secret belongs to another data center (see step 3). 400 with a moreInfo note means a parameter is invalid, for example an unknown id, a malformed search or a from address that does not belong to the account. 404 means the account, folder or email does not exist for this user. A 500 Internal Error comes from Zoho: try once more. When Zoho reports too many requests, wait a minute.
The connector does not handle attachments, drafts and templates, whole threads, folder and label management, signatures, vacation replies, tasks, notes, bookmarks or the organization admin APIs.
Prerequisites: ZOHO_MAIL_CLIENT_ID, ZOHO_MAIL_CLIENT_SECRET, ZOHO_MAIL_ACCOUNTS_URL, ZOHO_MAIL_API_URL
Install the connector locally
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, pick Zoho Mail and paste in the env vars listed under Prerequisites.
Available tools
| Tool | What it does |
|---|---|
zoho_mail_list_accounts | List the mail accounts of the signed-in Zoho user |
zoho_mail_list_folders | List the folders of a mail account (Inbox, Drafts, Sent, Spam, Trash, Outbox and the user's own folders) with folderId, folderName… |
zoho_mail_list_labels | List the labels (tags) of a mail account with labelId, displayName and color |
zoho_mail_list_emails | List emails in a folder, newest first, or filtered by read status, flag, label or thread |
zoho_mail_search_emails | Search a mail account with Zoho Mail's search syntax. search_key is parameter:value, conditions joined with :: (AND) or ::or: (OR) |
zoho_mail_get_email_content | Read the body of one email (HTML as Zoho stores it) |
zoho_mail_get_email_headers | Read the internet headers of one email (From, To, Date, Message-ID, Received, Authentication-Results, DKIM and so on), as JSON by default… |
zoho_mail_get_email_details | Read the metadata of one email: subject, sender and recipients, sent and received time, size, flag, status, labels, attachments flag and… |
zoho_mail_send_email | Send a new email from the user's Zoho Mail account, now or scheduled. from_address must be one of the account's own addresses |
zoho_mail_reply_to_email | Reply to an email, keeping it in the same conversation |
zoho_mail_mark_as_read | Mark one or more emails as read |
zoho_mail_mark_as_unread | Mark one or more emails as unread |
zoho_mail_move_emails | Move one or more emails to another folder (destination folderId from zoho_mail_list_folders) |
zoho_mail_flag_emails | Set the flag of one or more emails: info, important, followup, or flag_not_set to clear it |
zoho_mail_apply_labels | Add one or more labels to one or more emails (labelIds from zoho_mail_list_labels) |
zoho_mail_delete_email | Delete one email |
Example prompts
- "Which unread emails came into my Zoho Mail inbox today? Give me one line per email."
- "Find the emails from [email protected] with an attachment since 1 September."
- "Reply to the latest email from Acme about the delivery date: we can ship on 24 October. Show me the reply before you send it."
- "Move this week's newsletters to the Newsletters folder and flag the email from our accountant as important."
Next steps
Was this guide helpful?