> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended**:
> ```bash
> npx @scalekit-inc/cli setup
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Zoho Mail

The Zoho Mail connector lets your AI agent act in each user's Zoho Mail account. Each user signs in to Zoho Mail once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 245 tools.

**Authentication:** OAuth 2.0
**Categories:** Communication
**Tools:** 245: 74 read, 145 write, 26 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Zoho Mail app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=ZOHOMAIL)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Zoho Mail connection

   In **AgentKit > Connections**, create a Zoho Mail connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Zoho Mail connections use your own OAuth app. Register one with Zoho Mail and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Zoho Mail connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'zohomail'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Zoho Mail:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'zohomail_account_list_user',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "zohomail"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Zoho Mail:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="zohomail_account_list_user",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'zohomail_account_get',
  toolInput: {
    account_id: '<account_id>',
  },
  connector: 'zohomail',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="zohomail_account_get",
    tool_input={
        "account_id": "<account_id>",
    },
    connection_name="zohomail",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `zohomail_account_get`

Get Account · Read-only

Get full details for one Zoho Mail account (mailbox) by its numeric account ID.
Returns the account's user profile, mailbox configuration, storage metrics, email addresses, and send-mail settings.
Use this to inspect a single account's configuration in depth; use zohomail_account_list_user to browse all accounts or to look up the account_id first.
Requires the numeric account_id from zohomail_account_list_user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to fetch details for. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.

Example input: `{"account_id":"<account_id>"}`

### `zohomail_account_list_user`

List User Accounts · Read-only

List every Zoho Mail account (mailbox) the authenticated user has access to.
Returns each account's numeric account ID, email address, account type, storage usage, and mailbox configuration.
Use this first to look up the numeric account_id that other Zoho Mail account tools require; use zohomail_account_get once you have an ID and need that one account's full details.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `zohomail_antispam_get_dkim_fail_option`

Get DKIM Fail Option · Read-only

Get the DKIM fail action configured for a Zoho Mail organization's anti-spam settings.
Returns the configured DKIM fail action: allowMail, permanentReject, temporaryReject, or moveToQuarantine.
Use this to check the current DKIM fail handling before changing it with zohomail_antispam_update_dkim_fail_option.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `mode` (`string`, optional): The type of operation to perform. Must be getDKIMFailOption to retrieve the organization's current DKIM fail action. One of: `getDKIMFailOption`. Default: `getDKIMFailOption`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_antispam_get_dmarc_fail_option`

Get DMARC Fail Option · Read-only

Get the DMARC fail action configured for a Zoho Mail organization's anti-spam settings.
Returns the configured DMARC fail action, indicating whether emails that fail DMARC are allowed, quarantined, or moved to spam.
Use this to check the current DMARC fail handling before changing it with zohomail_antispam_update_dmarc_fail_option.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `mode` (`string`, optional): The type of operation to perform. Must be getDMARCFailOption to retrieve the organization's current DMARC fail action. One of: `getDMARCFailOption`. Default: `getDMARCFailOption`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_antispam_get_spf_fail_option`

Get SPF Fail Option · Read-only

Get the SPF fail action configured for a Zoho Mail organization's anti-spam settings.
Returns the configured spfFail action: allowMail, permanentReject, temporaryReject, or moveToQuarantine.
Use this to check the current SPF fail handling before changing it with zohomail_antispam_update_spf_fail_option.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `mode` (`string`, optional): The type of operation to perform. Must be getSPFFailOption to retrieve the organization's current SPF fail action. One of: `getSPFFailOption`. Default: `getSPFFailOption`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_antispam_get_spf_soft_fail_option`

Get SPF Soft Fail Option · Read-only

Get the SPF soft fail action configured for a Zoho Mail organization's anti-spam settings.
Returns the configured action for SPF soft fail emails: allowMail, permanentReject, temporaryReject, or moveToQuarantine.
Use this to check the current SPF soft fail handling before changing it with zohomail_antispam_update_spf_soft_fail_option.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `mode` (`string`, optional): The type of operation to perform. Must be getSPFSoftFailOption to retrieve the organization's current SPF soft fail action. One of: `getSPFSoftFailOption`. Default: `getSPFSoftFailOption`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_bookmark_get`

Get Bookmark · Read-only

Get a single bookmark's details from a Zoho Mail bookmark group.
Returns the bookmark's link URL, title, summary, collection, tags, and favorite status.
Use this to look up one bookmark by ID; use zohomail_bookmark_list to browse all bookmarks in a group.
Requires a group ID (from zohomail_bookmark_list_groups) and a bookmark ID (from zohomail_bookmark_list).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bookmark_id` (`string`, required): Numeric ID of the bookmark to look up. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000054321. Obtain it by calling zohomail_bookmark_list for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this bookmark. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.

Example input: `{"bookmark_id":"<bookmark_id>","group_id":"<group_id>"}`

### `zohomail_bookmark_list`

List Bookmarks · Read-only

List all bookmarks in a Zoho Mail bookmark group, with pagination and optional field selection.
Returns each bookmark's title, link, summary, collection name, entity ID, tags, and favorite status.
Use this to browse a group's active bookmarks; use zohomail_bookmark_list_trash for deleted ones, or zohomail_bookmark_list_favourite for favorites only.
Requires a group ID from zohomail_bookmark_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the bookmark group to operate on. This is a Zoho-generated identifier for a Streams bookmark group, not the group's name. Obtain it by calling zohomail_bookmark_list_groups first, which lists every group's groupId and name.
- `after` (`integer`, optional): Position to start retrieving bookmarks from, where 1 is the first bookmark. Used for pagination together with limit — pass the position immediately after the last bookmark returned on the previous page. Omit to start from the first bookmark.
- `fields` (`string`, optional): Comma-separated list of bookmark detail fields to include in the response. Valid values: title, summary, link, linkMetaInfo, collectionName. Omit to return all fields. Example: "title,link,summary".
- `is_prev` (`boolean`, optional): Sort order for the returned bookmarks based on creation time. true returns bookmarks in ascending order (oldest first); false (the default) returns them in descending order (newest first). Default: `false`.
- `limit` (`integer`, optional): Maximum number of bookmarks to retrieve in this call, from 1 to 399. Defaults to 20 when omitted. Default: `20`.

Example input: `{"group_id":"<group_id>"}`

### `zohomail_bookmark_list_collection`

List Bookmarks In Collection · Read-only

List all bookmarks filed under a specific collection within a Zoho Mail bookmark group, with pagination and optional field selection.
Returns each bookmark's namespace ID, entity ID, title, and link.
Use this to browse one collection's bookmarks; use zohomail_bookmark_list to see every bookmark in the group regardless of collection.
Requires a group ID from zohomail_bookmark_list_groups and a collection ID from zohomail_bookmark_list_collections.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, required): Unique ID of the collection scoped to the specified group. Obtain it by calling zohomail_bookmark_list_collections for that group first, which lists every collection's collectionId and collectionName.
- `group_id` (`string`, required): Unique ID of the bookmark group to operate on. This is a Zoho-generated identifier for a Streams bookmark group, not the group's name. Obtain it by calling zohomail_bookmark_list_groups first, which lists every group's groupId and name.
- `after` (`integer`, optional): Position to start retrieving bookmarks from, where 1 is the first bookmark. Used for pagination together with limit — pass the position immediately after the last bookmark returned on the previous page. Omit to start from the first bookmark.
- `fields` (`string`, optional): Comma-separated list of bookmark detail fields to include in the response. Valid values: title, summary, link, linkMetaInfo, collectionName. Omit to return all fields. Example: "title,link,summary".
- `is_prev` (`boolean`, optional): Sort order for the returned bookmarks based on creation time. true returns bookmarks in ascending order (oldest first); false (the default) returns them in descending order (newest first). Default: `false`.
- `limit` (`integer`, optional): Maximum number of bookmarks to retrieve in this call, from 1 to 399. Defaults to 20 when omitted. Default: `20`.

Example input: `{"collection_id":"<collection_id>","group_id":"<group_id>"}`

### `zohomail_bookmark_list_collections`

List Bookmark Collections · Read-only

List all bookmark collections within a Zoho Mail bookmark group.
Returns each collection's ID and name.
Use this to discover collection IDs for filing or listing bookmarks; use zohomail_bookmark_list_collections_groups to see collections across every group at once.
Requires a group ID from zohomail_bookmark_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the bookmark group to operate on. This is a Zoho-generated identifier for a Streams bookmark group, not the group's name. Obtain it by calling zohomail_bookmark_list_groups first, which lists every group's groupId and name.

Example input: `{"group_id":"<group_id>"}`

### `zohomail_bookmark_list_collections_groups`

List Groups With Collections · Read-only

List every Zoho Mail bookmark group together with its collections in a single call.
Returns each group's ID and name along with its nested collections (collection IDs and names).
Use this to see all groups and collections at once; use zohomail_bookmark_list_collections to list collections for one specific group only.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `zohomail_bookmark_list_favourite`

List Favourite Bookmarks · Read-only

List all bookmarks the authenticated Zoho Mail user has marked as favourite, with pagination and optional field selection.
Returns each favourite bookmark's title, link, summary, collection name, entity ID, and favorite status.
Use this to see only favourited bookmarks; use zohomail_bookmark_list to see a group's full bookmark list instead.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): Position to start retrieving bookmarks from, where 1 is the first bookmark. Used for pagination together with limit — pass the position immediately after the last bookmark returned on the previous page. Omit to start from the first bookmark.
- `fields` (`string`, optional): Comma-separated list of bookmark detail fields to include in the response. Valid values: title, summary, link, linkMetaInfo, collectionName. Omit to return all fields. Example: "title,link,summary".
- `is_prev` (`boolean`, optional): Sort order for the returned bookmarks based on creation time. true returns bookmarks in ascending order (oldest first); false (the default) returns them in descending order (newest first). Default: `false`.
- `limit` (`integer`, optional): Maximum number of bookmarks to retrieve in this call, from 1 to 399. Defaults to 20 when omitted. Default: `20`.

Example input: `{}`

### `zohomail_bookmark_list_groups`

List Bookmark Groups · Read-only

List all bookmark groups available to the authenticated Zoho Mail user.
Returns each group's ID and name.
Use this first to discover group IDs before creating, listing, or organizing bookmarks and collections within a group.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `zohomail_bookmark_list_shared`

List Shared Bookmarks · Read-only

List all bookmarks that other Zoho Mail users have shared with the authenticated user.
Returns each shared bookmark's namespace ID, entity ID, and the requested field details.
Use this to see bookmarks shared with you; use zohomail_bookmark_list to see bookmarks in your own groups instead.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): Position to start retrieving bookmarks from, where 1 is the first bookmark. Used for pagination together with limit — pass the position immediately after the last bookmark returned on the previous page. Omit to start from the first bookmark.
- `fields` (`string`, optional): Comma-separated list of bookmark detail fields to include in the response. Valid values: title, summary, link, linkMetaInfo, collectionName. Omit to return all fields. Example: "title,link,summary".
- `is_prev` (`boolean`, optional): Sort order for the returned bookmarks based on creation time. true returns bookmarks in ascending order (oldest first); false (the default) returns them in descending order (newest first). Default: `false`.
- `limit` (`integer`, optional): Maximum number of bookmarks to retrieve in this call, from 1 to 399. Defaults to 20 when omitted. Default: `20`.

Example input: `{}`

### `zohomail_bookmark_list_trash`

List Trashed Bookmarks · Read-only

List bookmarks that have been deleted (moved to trash) from a Zoho Mail bookmark group, with pagination and optional field selection.
Returns each trashed bookmark's title, link, summary, and collection name.
Use this to review recently deleted bookmarks; use zohomail_bookmark_list for a group's active bookmarks.
Requires a group ID from zohomail_bookmark_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the bookmark group to operate on. This is a Zoho-generated identifier for a Streams bookmark group, not the group's name. Obtain it by calling zohomail_bookmark_list_groups first, which lists every group's groupId and name.
- `after` (`integer`, optional): Position to start retrieving bookmarks from, where 1 is the first bookmark. Used for pagination together with limit — pass the position immediately after the last bookmark returned on the previous page. Omit to start from the first bookmark.
- `fields` (`string`, optional): Comma-separated list of bookmark detail fields to include in the response. Valid values: title, summary, link, linkMetaInfo, collectionName. Omit to return all fields. Example: "title,link,summary".
- `is_prev` (`boolean`, optional): Sort order for the returned bookmarks based on creation time. true returns bookmarks in ascending order (oldest first); false (the default) returns them in descending order (newest first). Default: `false`.
- `limit` (`integer`, optional): Maximum number of bookmarks to retrieve in this call, from 1 to 399. Defaults to 20 when omitted. Default: `20`.

Example input: `{"group_id":"<group_id>"}`

### `zohomail_domain_get`

Get Domain · Read-only

Fetch details for a single domain in a Zoho Mail organization.
Returns the domain's verification status, MX/SPF/DKIM settings, ownership dates, and DKIM key configuration.
Use this for one domain's full detail; use zohomail_domain_list to see every domain at once.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The name of the domain whose details should be retrieved. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_list`

List Domains · Read-only

List all domains added to a Zoho Mail organization.
Returns each domain's name, verification status, and MX/SPF/DKIM status, plus verification codes and metadata.
Use this to see every domain at once; use zohomail_domain_get to fetch one domain's full detail.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization whose domains should be listed. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_folder_get`

Get Folder · Read-only

Get details for a single folder in a Zoho Mail account.
Returns the folder's ID, name, path, type, and IMAP visibility.
Use this to inspect one specific folder; use zohomail_folder_list to browse all folders in the mailbox instead.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to fetch. Obtain it from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_folder_list`

List Folders · Read-only

List all folders in a Zoho Mail account, including system folders (Inbox, Sent, Drafts, Spam, Trash) and any user-created folders.
Returns each folder's ID, name, type, path, and URI.
Use this to discover folder IDs and mailbox structure before reading or filtering messages within a specific folder.
Requires the numeric Zoho Mail account ID for the mailbox, obtained from Zoho Mail's Get All Accounts endpoint.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to fetch folders from. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling Zoho Mail's Get All Accounts endpoint for this connection first.

Example input: `{"account_id":"<account_id>"}`

### `zohomail_group_get`

Get Group · Read-only

Get the full details of a single mail group in a Zoho Mail organization.
Returns the group's member list, administrative settings, policies, restrictions, and notification templates.
Use zohomail_group_get when you already have the group's zgid. Use zohomail_group_list to browse all groups and find a zgid first.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the mail group to retrieve. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_get_moderation_email_content`

Get Moderation Email Content · Read-only

Get the full content of a single email held for moderation in a Zoho Mail group.
Returns the email's headers, body content, attachments, and recipient addresses.
Use this to inspect one message before deciding whether to approve or reject it with zohomail_group_moderate_emails. Use zohomail_group_list_emails_held_moderation first to find the message ID.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `messageId` (`string`, required): Unique identifier of the held message to fetch. This is a Zoho-generated internal identifier, typically a large integer. Obtain it from zohomail_group_list_emails_held_moderation.
- `zgid` (`string`, required): Unique identifier (zgid) of the moderated mail group that holds the message. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"messageId":"<messageId>","zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_list`

List Groups · Read-only

List all mail groups in a Zoho Mail organization.
Returns group objects with their zgid, name, email address, member lists, aliases, and settings.
Use zohomail_group_list to browse all groups and find a group's zgid. Use zohomail_group_get to fetch full detail on a single already-known group.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization whose groups should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_group_list_emails_held_moderation`

List Emails Held for Moderation · Read-only

List the emails currently held for moderation in a Zoho Mail group.
Returns an array of pending email objects with sender, subject, message ID, attachment status, and spam classification.
Use this to review a moderated group's queue before approving or rejecting messages with zohomail_group_moderate_emails. Use zohomail_group_get_moderation_email_content to read one message in full.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the moderated mail group whose held emails should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of held emails to return in this call. Zoho caps this at 50. Leave blank to use the API's default page size.
- `searchKey` (`string`, optional): Free-text search term to filter held emails by sender address or subject. Leave blank to list all held emails.
- `start` (`integer`, optional): Starting index (1-based) of the held emails to fetch, for paging through a long queue. Defaults to 1 (the first email). Default: `1`.

Example input: `{"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_label_get`

Get Label · Read-only

Get details for a single label in a Zoho Mail account.
Returns the label's sequence number, color, display name, and resource URI.
Use this to check one label's current name or color; use zohomail_label_list to browse all labels in the account.
Requires the label ID (obtained from zohomail_label_list) and the numeric Zoho Mail account ID (obtained from zohomail_account_list_user).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the label belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`string`, required): Numeric ID of the label to fetch, as returned in the labelId field by zohomail_label_list or zohomail_label_create. Example: 4000000012345.

Example input: `{"account_id":"<account_id>","label_id":"<label_id>"}`

### `zohomail_label_list`

List Labels · Read-only

List all labels in a Zoho Mail account.
Returns each label's sequence number, label ID, color, tag ID, display name, and resource URI.
Use this to discover label IDs before getting, updating, deleting, or applying a specific label.
Requires the numeric Zoho Mail account ID for the mailbox, obtained from zohomail_account_list_user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to fetch labels from. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.

Example input: `{"account_id":"<account_id>"}`

### `zohomail_log_get_audit_records`

Get Audit Records · Read-only

Get administrative audit records for a Zoho Mail organization, optionally filtered by search key and time range.
Returns paginated audit records with the performer, operation type, status, timestamps, and affected resources, plus pagination identifiers for retrieving further records.
Use this for administrative action audit trails; use zohomail_log_get_login_history for user sign-in activity, or zohomail_log_get_smtp for SMTP delivery logs.
Requires the organization's zoid and org admin authorization with the organization audit scope; obtain zoid from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization whose audit records to retrieve. Obtain it from Zoho Mail's Get Organization Details endpoint (zohomail_org_get_organization).
- `endTime` (`integer`, optional): End of the time range to fetch audit records for, as a Unix timestamp in milliseconds. Leave blank to not bound the range by an end time.
- `lastEntityId` (`string`, optional): Pagination cursor: the entity identifier to continue after, taken from a previous response. Use together with lastIndexTime to fetch the next page of audit records.
- `lastIndexTime` (`string`, optional): Pagination cursor: the index timestamp to continue from, taken from a previous response. Use together with lastEntityId to fetch the next page of audit records.
- `limit` (`integer`, optional): Maximum number of audit records to return, from 1 to 200. Defaults to 10. Default: `10`.
- `searchKey` (`string`, optional): Optional filter that narrows audit records by category, sub-category, operation type, performer, and/or subject, each segment written as '<field>:<code>' and joined with '::' (for example 'category:1002::operationType:16001' for Domain/Add). Segment codes come from Zoho's audit-constants reference (https://www.zoho.com/mail/help/api/get-audit-constants.html), not plain words. Leave blank to return all audit records in the time range.
- `startTime` (`integer`, optional): Start of the time range to fetch audit records for, as a Unix timestamp in milliseconds. Leave blank to not bound the range by a start time.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_log_get_login_history`

Get Login History · Read-only

Get login activity history for users in a Zoho Mail organization, filtered by activity mode and a required time range.
Returns matching login records with display name, email, login time, IP address, browser/device details, and suspicious sign-in flags, plus a scrollId for retrieving further batches.
Use this for user sign-in activity; use zohomail_log_get_audit_records for administrative action audit trails, or zohomail_log_get_smtp for SMTP delivery logs.
Requires the organization's zoid and org admin authorization with the organization accounts scope; obtain zoid from zohomail_org_get_organization. Only the last 90 days of records are available.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `fromTime` (`integer`, required): Start of the time range to fetch login history for, as a Unix timestamp in milliseconds. Only the last 90 days of records are available.
- `mode` (`string`, required): Which category of login activity to retrieve: 'loginActivity' for successful web/app sign-ins, 'failedLoginActivity' for failed sign-in attempts, 'protocolLoginActivity' for successful IMAP/POP/SMTP protocol logins, or 'failedProtocolLoginActivity' for failed protocol logins. One of: `loginActivity`, `failedLoginActivity`, `protocolLoginActivity`, `failedProtocolLoginActivity`.
- `toTime` (`integer`, required): End of the time range to fetch login history for, as a Unix timestamp in milliseconds.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization whose login history to retrieve. Obtain it from Zoho Mail's Get Organization Details endpoint (zohomail_org_get_organization).
- `accessType` (`string`, optional): Restricts results to a specific access channel: 'web' for browser sign-ins, 'mobile' for the mobile app, or 'all' to include both. Defaults to 'all'. One of: `all`, `web`, `mobile`. Default: `all`.
- `batchSize` (`integer`, optional): Number of login records to include in each batch of results, from 1 to 500. Defaults to 10. Default: `10`.
- `scrollId` (`string`, optional): Pagination cursor returned by a previous call to this endpoint. Provide it to retrieve the next batch of login records after the previous one; leave blank for the first request.

Example input: `{"fromTime":1,"mode":"loginActivity","toTime":1,"zoid":"<zoid>"}`

### `zohomail_message_download_inline_image`

Download Inline Image · Read-only

Download an inline image embedded in the body of a Zoho Mail message.
Returns the image's raw binary bytes as the response body (not JSON).
Use this to fetch an image referenced inline in an HTML message body by its content ID; use zohomail_message_get_attachment_content instead for a regular file attachment.
Requires the account ID from zohomail_account_list_user, the folder ID from zohomail_folder_list, and the message ID from zohomail_message_list_search_results.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns this message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `content_id` (`string`, required): Unique content ID (cid) of the inline image to download, exactly as referenced in the message's HTML body (for example, in an <img src="cid:..."> tag) or in the message's inline-image metadata. Example: "1.5090302392@zohomail".
- `folder_id` (`string`, required): Numeric ID of the folder that contains the message whose inline image you want to download. Obtain it by calling zohomail_folder_list for this account first. Example: 6000000023456.
- `message_id` (`string`, required): Unique numeric ID of the email message containing the inline image. Obtain it from zohomail_message_list_search_results or another message-listing call. Example: 6000000034567.
- `file_name` (`string`, optional): Optional file name to associate with the downloaded image, used as a suggested name for the file. If omitted, no specific file name is set. Example: "logo.png".

Example input: `{"account_id":"<account_id>","content_id":"1.5090302392@zohomail","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_message_get_attachment_content`

Get Attachment Content · Read-only

Download the raw file content of an email attachment in Zoho Mail.
Returns the attachment's raw binary bytes as the response body (not JSON); the original file's content type is preserved.
Use this after finding an attachment in a message's metadata to fetch the actual file bytes; use zohomail_message_download_inline_image instead for an image embedded inline in the message body.
Requires the account ID from zohomail_account_list_user, the folder ID from zohomail_folder_list, and the message ID from zohomail_message_list_search_results.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns this message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `attachment_id` (`string`, required): Unique numeric ID of the specific attachment to download, as returned in the message's attachment metadata (for example, in the message detail response). Example: 6000000045678.
- `folder_id` (`string`, required): Numeric ID of the folder that contains the message whose attachment you want to download, such as Inbox, Sent, or a custom folder. Obtain it by calling zohomail_folder_list for this account first. Example: 6000000023456.
- `message_id` (`string`, required): Unique numeric ID of the email message the attachment belongs to. Obtain it from zohomail_message_list_search_results or another message-listing call. Example: 6000000034567.

Example input: `{"account_id":"<account_id>","attachment_id":"<attachment_id>","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_message_get_attachment_info`

Get Attachment Info · Read-only

List attachment metadata for a specific email in a connected Zoho Mail account.
Returns each attachment's filename, size, and attachment ID, optionally including inline images alongside regular attachments.
Use this to discover attachment IDs before downloading a file; use zohomail_message_get_email_content to read the message body instead.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user), the folder ID (from zohomail_folder_list), and the message ID (from a message-listing tool such as zohomail_message_list_search_results).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that contains the message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, required): Numeric ID of the folder that contains the message. Obtain it from zohomail_folder_list.
- `message_id` (`string`, required): Unique numeric ID of the email to list attachments for. Obtain it from a message-listing tool such as zohomail_message_list_search_results.
- `include_inline` (`boolean`, optional): Whether to include inline images (e.g. images embedded in the HTML body) alongside regular attachments in the results. Default: `false`.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_message_get_email_content`

Get Email Content · Read-only

Fetch the rendered HTML content of a specific email in a connected Zoho Mail account.
Returns the message ID and its content field with the rendered email body, optionally including block-quoted content from earlier messages in the thread.
Use this to read a message's body; use zohomail_message_get_email_headers for header metadata only, or zohomail_message_get_original for the raw MIME source.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user), the folder ID (from zohomail_folder_list), and the message ID (from a message-listing tool such as zohomail_message_list_search_results).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that contains the message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, required): Numeric ID of the folder that contains the message. Obtain it from zohomail_folder_list.
- `message_id` (`string`, required): Unique numeric ID of the email to fetch content for. Obtain it from a message-listing tool such as zohomail_message_list_search_results.
- `include_block_content` (`boolean`, optional): Whether to include quoted block content (earlier messages quoted inline) along with the main email content.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_message_get_email_headers`

Get Email Headers · Read-only

Fetch the header fields of a specific email in a connected Zoho Mail account.
Returns the message headers, as raw text by default or as structured JSON when raw is set to false.
Use this when you need routing/header metadata (From, To, Message-ID, etc.) without the full email body; use zohomail_message_get_email_content for the rendered body instead.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user), the folder ID (from zohomail_folder_list), and the message ID (from a message-listing tool such as zohomail_message_list_search_results).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that contains the message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, required): Numeric ID of the folder that contains the message. Obtain it from zohomail_folder_list.
- `message_id` (`string`, required): Unique numeric ID of the email to fetch headers for. Obtain it from a message-listing tool such as zohomail_message_list_search_results.
- `raw` (`boolean`, optional): Response format for the headers. true returns raw header text (default); false returns structured JSON. Default: `true`.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_message_get_meta_data_email`

Get Email Metadata · Read-only

Fetch metadata for a specific email in a connected Zoho Mail account.
Returns the message's subject, sender, recipient addresses, sent date, size, attachment status, priority, and folder information.
Use this for a message's summary metadata; use zohomail_message_get_email_content to read the full body instead.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user), the folder ID (from zohomail_folder_list), and the message ID (from a message-listing tool such as zohomail_message_list_search_results).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that contains the message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, required): Numeric ID of the folder that contains the message. Obtain it from zohomail_folder_list.
- `message_id` (`string`, required): Unique numeric ID of the email to fetch metadata for. Obtain it from a message-listing tool such as zohomail_message_list_search_results.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_message_get_original`

Get Original Message · Read-only

Fetch the raw MIME source of a specific email in a connected Zoho Mail account.
Returns the full original message — headers, content-type, and body — as MIME text in the response's content field.
Use this when you need the unprocessed original message; use zohomail_message_get_email_content for the rendered HTML body instead, or zohomail_message_get_email_headers for headers only.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user) and the message ID (from a message-listing tool such as zohomail_message_list_search_results).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that contains the message. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `message_id` (`string`, required): Unique numeric ID of the email to fetch the original MIME source for. Obtain it from a message-listing tool such as zohomail_message_list_search_results.

Example input: `{"account_id":"<account_id>","message_id":"<message_id>"}`

### `zohomail_message_list_search_results`

Search Messages · Read-only

Search for emails in a connected Zoho Mail account using Zoho Mail's search syntax.
Returns a paginated list of matching emails with sender, subject, received time, and message metadata.
Use this to find specific messages by criteria; use zohomail_message_get_meta_data_email or zohomail_message_get_email_content for a matched message's full details.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to search. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `search_key` (`string`, required): Search criteria following Zoho Mail's search syntax, e.g. 'subject:invoice' or 'from:customer@example.com'.
- `include_to` (`boolean`, optional): Whether to include each matched email's To-field details in the results. Default: `false`.
- `limit` (`integer`, optional): Number of matching emails to return, from 1 to 200. Defaults to 10. Default: `10`.
- `received_time` (`integer`, optional): Unix timestamp in milliseconds; only emails received before this time are matched. If omitted, Zoho Mail defaults to roughly the current time minus 2 minutes.
- `start` (`integer`, optional): Starting sequence number of the emails to retrieve, for paginating through results. Defaults to 1. Default: `1`.

Example input: `{"account_id":"<account_id>","search_key":"subject:invoice"}`

### `zohomail_note_get`

Get Note · Read-only

Retrieve the details of a single note in a Zoho Mail Notes group.
Returns the note's title, content, color, and associated notebook (book) ID and name, or only the specific fields requested.
Use this to read a note's full content before editing it or working with its attachments; use zohomail_note_list to browse the notes in a group instead.
Requires the group ID from zohomail_note_list_groups and the note ID from zohomail_note_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API, distinct from a mailbox account ID. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note to retrieve. This is a Zoho-generated internal identifier (a large integer). Obtain it by calling zohomail_note_list for this group first.
- `fields` (`string`, optional): Comma-separated list of note detail fields to include in the response. Valid values: title, content, color, bookId, bookName. Omit to return all fields. Example: "title,content,color".

Example input: `{"group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_note_get_attachment`

Get Note Attachment · Read-only

Download the raw file content of an attachment on a note in Zoho Mail Notes.
Returns the attachment's raw binary bytes as the response body (not JSON); the original file's content type is preserved.
Use this after finding an attachment in a note's attachment list to fetch the actual file bytes; use zohomail_note_get to read the note's text content instead.
Requires the group ID from zohomail_note_list_groups, the note ID from zohomail_note_list, and the attachment ID from zohomail_note_list_attachments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attachment_id` (`string`, required): Unique ID of the specific attachment to download, as returned in the note's attachment list. Obtain it by calling zohomail_note_list_attachments for this note first.
- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note that the attachment belongs to. Obtain it by calling zohomail_note_list for this group first.

Example input: `{"attachment_id":"<attachment_id>","group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_note_list`

List Notes · Read-only

List notes within a specific notes group, with optional field selection and pagination.
Returns each note's title, content, color, notebook association, and timestamps.
Use zohomail_note_list to browse a group's notes. Use zohomail_note_list_favourite for starred notes, or zohomail_note_list_shared for notes shared with you.
Requires the group ID — obtain from zohomail_note_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the notes group whose notes should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_note_list_groups for this connection first.
- `after` (`integer`, optional): Position to start retrieval from, as an integer from 1 to the total number of notes. Omit to start from the beginning.
- `fields` (`string`, optional): Comma-separated list of note details to include in the response, chosen from title, content, color, bookId, bookName. Omit to return all fields.
- `is_prev` (`boolean`, optional): Sort order for retrieval based on created time. true returns notes in ascending order, false (default) returns them in descending order. Default: `false`.
- `limit` (`integer`, optional): Number of notes to retrieve, from 1 to 399. Defaults to 25. Default: `25`.

Example input: `{"group_id":"<group_id>"}`

### `zohomail_note_list_attachments`

List Note Attachments · Read-only

List all attachments on a specific Zoho Mail note.
Returns arrays of regular and inline attachments, each with a fileName and attachmentID.
Use zohomail_note_list_attachments to see what files are attached to a note before working with them further.
Requires the group ID and note ID — obtain the group ID from zohomail_note_list_groups and the note ID from zohomail_note_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the notes group that owns the note. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note whose attachments should be retrieved. This is a Zoho-generated internal identifier, typically a large integer such as 80000000067890. Obtain it by calling zohomail_note_list for this group first.

Example input: `{"group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_note_list_book`

List Notes in Notebook · Read-only

List all notes within a specific notebook (book) inside a notes group.
Returns each note's title, content, color, notebook association, and timestamps.
Use zohomail_note_list_book to browse notes filed in one notebook. Use zohomail_note_list_books to find the book ID first, or zohomail_note_list for all of a group's notes regardless of notebook.
Requires the group ID and book ID — obtain the group ID from zohomail_note_list_groups and the book ID from zohomail_note_list_books.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `book_id` (`string`, required): Unique ID of the notebook whose notes should be retrieved. This is a Zoho-generated internal identifier, typically a large integer such as 90000000078901. Obtain it by calling zohomail_note_list_books for this group first.
- `group_id` (`string`, required): Unique ID of the notes group that owns the notebook. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Zoho Mail's documentation labels this path variable 'zgid' on this specific endpoint, though it is the same group ID used elsewhere in the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `after` (`integer`, optional): Position to start retrieval from, as an integer from 1 to the total number of notes. Omit to start from the beginning.
- `fields` (`string`, optional): Comma-separated list of note details to include in the response, chosen from title, content, color, bookId, bookName. Omit to return all fields.
- `is_prev` (`boolean`, optional): Sort order for retrieval based on created time. true returns notes in ascending order, false (default) returns them in descending order. Default: `false`.
- `limit` (`integer`, optional): Number of notes to retrieve, from 1 to 399. Defaults to 25. Default: `25`.

Example input: `{"book_id":"<book_id>","group_id":"<group_id>"}`

### `zohomail_note_list_books`

List Notebooks · Read-only

List all notebooks (books) within a specific notes group.
Returns each notebook's bookName and bookId, and optionally flags the default notebook.
Use zohomail_note_list_books to find a bookId before creating or listing notes in a specific notebook.
Requires the group ID — obtain from zohomail_note_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `default_project` (`boolean`, required): Whether the response should highlight the group's default notebook. Zoho documents this as a numeric parameter but it takes the boolean values true or false, and is required on this endpoint.
- `group_id` (`string`, required): Unique ID of the notes group whose notebooks should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_note_list_groups for this connection first.

Example input: `{"default_project":true,"group_id":"<group_id>"}`

### `zohomail_note_list_favourite`

List Favourite Notes · Read-only

List all notes the authenticated user has marked as favourite, with optional field selection and pagination.
Returns each favourite note's title, content, color, notebook association, and timestamps.
Use zohomail_note_list_favourite for starred notes. Use zohomail_note_list for a specific group's notes, or zohomail_note_list_shared for notes shared with you.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): Position to start retrieval from, as an integer from 1 to the total number of notes. Omit to start from the beginning.
- `fields` (`string`, optional): Comma-separated list of note details to include in the response, chosen from title, content, color, bookId, bookName. Omit to return all fields.
- `is_prev` (`boolean`, optional): Sort order for retrieval based on created time. true returns notes in ascending order, false (default) returns them in descending order. Default: `false`.
- `limit` (`integer`, optional): Number of notes to retrieve, from 1 to 399. Defaults to 25. Default: `25`.

Example input: `{}`

### `zohomail_note_list_groups`

List Notes Groups · Read-only

List all notes groups available to the authenticated Zoho Mail user.
Returns each group's groupId and name.
Use this first to find the group ID required by the other Notes API tools, such as zohomail_note_create and zohomail_note_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `zohomail_note_list_shared`

List Shared Notes · Read-only

List all notes that have been shared with the authenticated user, with optional field selection and pagination.
Returns each shared note's title, content, color, notebook association, and timestamps.
Use zohomail_note_list_shared to review notes others shared. Use zohomail_note_list for a specific group's own notes, or zohomail_note_list_favourite for starred notes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): Position to start retrieval from, as an integer from 1 to the total number of notes. Omit to start from the beginning.
- `fields` (`string`, optional): Comma-separated list of note details to include in the response, chosen from title, content, color, bookId, bookName. Omit to return all fields.
- `is_prev` (`boolean`, optional): Sort order for retrieval based on created time. true returns notes in ascending order, false (default) returns them in descending order. Default: `false`.
- `limit` (`integer`, optional): Number of notes to retrieve, from 1 to 399. Defaults to 25. Default: `25`.

Example input: `{}`

### `zohomail_org_get_organization`

Get Organization Details · Read-only

Get metadata for a Zoho Mail child organization, identified by its zoid.
Returns mailbox count, domain information, user count, plan details, and administrative contact information.
Use this to look up an organization's zoid and details before calling other organization-admin tools such as allowed IPs, storage, or spam settings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the child organization to fetch. This is a Zoho-generated internal identifier, typically a large integer.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_org_get_spam_listing`

Get Org Spam Listing · Read-only

List entries in a Zoho Mail organization's anti-spam listing, such as whitelisted or blocked emails, domains, IPs, or top-level domains.
Returns the matching spam-listing entries for the requested category.
Use this to review current allow/block-list entries before adding or changing them with zohomail_org_update_spam_listing.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `spam_category` (`string`, required): The type of spam listing to retrieve, e.g. whiteListEmail, spamEmail, rejectDomain, quarantineIP, spamTLD. One of: `whiteListEmail`, `spamEmail`, `rejectEmail`, `quarantineEmail`, `trustedEmail`, `whiteListDomain`, `spamDomain`, `rejectDomain`, `quarantineDomain`, `trustedDomain`, `whiteListIP`, `spamIP`, `rejectIP`, `quarantineIP`, `spamTLD`, `rejectTLD`, `quarantineTLD`, `recipientSpamEmail`, `recipientRejectEmail`, `recipientQuarantineEmail`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `limit` (`integer`, optional): Number of spam-listing entries to retrieve in this batch. Maximum value is 500.
- `mode` (`string`, optional): The mode of action performed by the API. Must be getMarkingData for this read operation. One of: `getMarkingData`. Default: `getMarkingData`.
- `start` (`integer`, optional): Order number from which data retrieval should start. Works best together with limit.

Example input: `{"spam_category":"spamEmail","zoid":"<zoid>"}`

### `zohomail_org_get_subscription`

Get Org Subscription (Per-User Storage) · Read-only

List per-user storage and mailbox subscription details for every user in a Zoho Mail organization, in batches.
Returns a list of users with their storage tier, used storage, mailbox status, and ZUID.
Use this to see storage usage across the whole organization; use zohomail_org_get_user_storage to check a single user instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `limit` (`integer`, optional): Number of users to retrieve details for in this batch. Used together with start for pagination.
- `start` (`integer`, optional): Order number from which data retrieval should start. Used together with limit for pagination.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_org_get_user_storage`

Get User Storage Details · Read-only

Get storage allocation and usage details for a single user in a Zoho Mail organization.
Returns the user's total storage capacity, mailbox status, storage tier, extra storage, and used storage.
Use this to check one user's storage; use zohomail_org_get_subscription to list storage details for every user in the organization instead.
Requires the organization's zoid and the user's zuid, obtained from zohomail_org_get_organization and Zoho Mail's User Account Details endpoint respectively.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `zuid` (`string`, required): Unique Zoho User Identifier (zuid) for the user whose storage details to fetch. Obtain it from Zoho Mail's User Account Details endpoint.

Example input: `{"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_policy_get_groups`

Get Policy Groups · Read-only

List the groups a Zoho Mail organization mail policy is assigned to.
Returns each group's ID and name, paginated by start and limit.
Use this to check which groups a policy currently applies to before reassigning groups to a different policy or changing the policy's restrictions.
Requires a policy ID — get one from zohomail_policy_list_policies.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `policy_id` (`string`, required): Unique identifier of the mail policy whose assigned groups to list. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of groups to return in this page, counted from start. Defaults to 10. Default: `10`.
- `search_key` (`string`, optional): Optional text to search for among the policy's assigned groups, matched against fields such as the group name.
- `start` (`integer`, optional): Zero-based start sequence number for the page of groups to return. Defaults to 0. Default: `0`.

Example input: `{"policy_id":"<policy_id>","zoid":"<zoid>"}`

### `zohomail_policy_get_users`

Get Policy Users · Read-only

List the users a Zoho Mail organization mail policy is assigned to.
Returns each user's email address, display name, Zoho user ID (zuid), and role under the policy, paginated by start and limit.
Use this to check who a policy currently applies to before reassigning users to a different policy or changing the policy's restrictions.
Requires a policy ID — get one from zohomail_policy_list_policies.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `policy_id` (`string`, required): Unique identifier of the mail policy whose assigned users to list. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of users to return in this page, counted from start. Defaults to 10. Default: `10`.
- `search_key` (`string`, optional): Optional text to search for among the policy's assigned users, matched against fields such as name or email address.
- `start` (`integer`, optional): Zero-based start sequence number for the page of users to return. Defaults to 0. Default: `0`.

Example input: `{"policy_id":"<policy_id>","zoid":"<zoid>"}`

### `zohomail_policy_list_access_restrictions`

List Access Restrictions · Read-only

List all access restriction rules defined for a Zoho Mail organization, with pagination and optional search.
Returns each restriction's ID, name, and its status flags for access channels (mail forwarding, IMAP, POP, and more).
Use this to find an access restriction's ID before attaching it to a policy. Use zohomail_policy_list_email_restrictions, zohomail_policy_list_account_restrictions, or zohomail_policy_list_forward_restrictions for the other restriction types, or zohomail_policy_list_policies to list mail policies instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization whose access restrictions are being listed. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of restrictions to return in this page, counted from start. Defaults to 10. Default: `10`.
- `search_key` (`string`, optional): Free-text term to filter access restrictions by, matched against restriction attributes such as the restriction name. Leave blank to return all restrictions.
- `start` (`integer`, optional): Zero-based sequence number of the first restriction to return, for paginating through the results. Defaults to 0 (the beginning of the list). Increase by the page size (see limit) to fetch subsequent pages. Default: `0`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_policy_list_account_restrictions`

List Account Restrictions · Read-only

List all account restriction rules defined for a Zoho Mail organization, with pagination and optional search.
Returns each restriction's ID, name, and its status flags for account-level mail features (external IMAP/POP access, mailbox sharing, and more).
Use this to find an account restriction's ID before attaching it to a policy. Use zohomail_policy_list_email_restrictions, zohomail_policy_list_access_restrictions, or zohomail_policy_list_forward_restrictions for the other restriction types, or zohomail_policy_list_policies to list mail policies instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization whose account restrictions are being listed. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of restrictions to return in this page, counted from start. Defaults to 10. Default: `10`.
- `search_key` (`string`, optional): Free-text term to filter account restrictions by, matched against restriction attributes such as the restriction name. Leave blank to return all restrictions.
- `start` (`integer`, optional): Zero-based sequence number of the first restriction to return, for paginating through the results. Defaults to 0 (the beginning of the list). Increase by the page size (see limit) to fetch subsequent pages. Default: `0`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_policy_list_email_restrictions`

List Email Restrictions · Read-only

List all email restriction rules defined for a Zoho Mail organization, with pagination and optional search.
Returns each restriction's ID, name, and its incoming/outgoing domain, attachment, subject, and address restriction settings.
Use this to find an email restriction's ID before attaching it to a policy. Use zohomail_policy_list_account_restrictions, zohomail_policy_list_access_restrictions, or zohomail_policy_list_forward_restrictions for the other restriction types, or zohomail_policy_list_policies to list mail policies instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization whose email restrictions are being listed. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of restrictions to return in this page, counted from start. Defaults to 10. Default: `10`.
- `search_key` (`string`, optional): Free-text term to filter email restrictions by, matched against restriction attributes such as the restriction name. Leave blank to return all restrictions.
- `start` (`integer`, optional): Zero-based sequence number of the first restriction to return, for paginating through the results. Defaults to 0 (the beginning of the list). Increase by the page size (see limit) to fetch subsequent pages. Default: `0`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_policy_list_forward_restrictions`

List Forward Restrictions · Read-only

List all mail forwarding restriction rules defined for a Zoho Mail organization, with pagination and optional search.
Returns each restriction's name, the count of policies using it, its restriction ID, and the organization's zoid.
Use this to find a forward restriction's ID before attaching it to a policy. Use zohomail_policy_list_email_restrictions, zohomail_policy_list_account_restrictions, or zohomail_policy_list_access_restrictions for the other restriction types, or zohomail_policy_list_policies to list mail policies instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization whose forward restrictions are being listed. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of restrictions to return in this page, counted from start. Defaults to 10. Default: `10`.
- `search_key` (`string`, optional): Free-text term to filter forward restrictions by, matched against restriction attributes such as the restriction name. Leave blank to return all restrictions.
- `start` (`integer`, optional): Zero-based sequence number of the first restriction to return, for paginating through the results. Defaults to 0 (the beginning of the list). Increase by the page size (see limit) to fetch subsequent pages. Default: `0`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_policy_list_policies`

List Policies · Read-only

List all mail policies defined for a Zoho Mail organization, with pagination and optional search.
Returns each policy's ID, name, assigned user count, and its settings (external IMAP, mailbox sharing, junk cleanup, and more).
Use this to find a policy's ID before updating it or assigning it to users or groups. Use zohomail_policy_list_email_restrictions, zohomail_policy_list_account_restrictions, zohomail_policy_list_access_restrictions, or zohomail_policy_list_forward_restrictions to list the individual restriction rules instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization whose policies are being listed. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Maximum number of policies to return in this page, counted from start. Defaults to 50. Default: `50`.
- `search_key` (`string`, optional): Free-text term to filter policies by, matched against policy attributes such as the policy name. Leave blank to return all policies.
- `start` (`integer`, optional): Zero-based sequence number of the first policy to return, for paginating through the results. Defaults to 0 (the beginning of the list). Increase by the page size (see limit) to fetch subsequent pages. Default: `0`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_signature_get_admin_added_user`

Get Admin-Added User Signature · Read-only

Get the user-level and organization-level email signatures configured for a specific user in a Zoho Mail organization, as an org admin.
Returns an array of signatures with each one's name, type (user or organization signature), id, position, and content.
Use this to inspect another user's signatures as an admin, before calling zohomail_signature_update_admin_added_user or zohomail_signature_delete_admin_added_user. Use zohomail_signature_get_user instead to view your own account's signatures.
Requires the organization's zoid and the target user's zuid — obtain from zohomail_org_get_organization and zohomail_user_list_org.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the target user. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho User Identifier (zuid) for the user whose signatures to fetch. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_signature_get_user`

Get User Signature · Read-only

Get one or all email signatures configured on the authenticated user's own Zoho Mail account.
Returns each signature's contact id, name, content, signature type, id, and position.
Use this to look up your own signatures before updating or deleting one with zohomail_signature_update_user or zohomail_signature_delete_user. Use zohomail_signature_get_admin_added_user instead to view another user's signatures as an org admin.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, optional): Unique key identifying a single signature to retrieve. Optional — omit to return all signatures configured on this account. Example: "6000000012345".

Example input: `{}`

### `zohomail_task_get_custom_status`

Get Task Group Custom Statuses · Read-only

List the custom task statuses defined for a Zoho Mail task group.
Returns each custom status's identifier, name, color code, and position.
Use this to see the group-specific status values available in addition to the built-in inprogress and completed statuses.
Requires the group ID (zgid) from zohomail_task_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group whose custom statuses should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"zgid":"<zgid>"}`

### `zohomail_task_get_group`

Get Group Task · Read-only

Get the full details of a single task in a Zoho Mail group's Streams task list.
Returns the task's ID, title, description, due date, owner, assignee, priority, status, project details, subtasks, and attachments.
Use this once you already know the task's ID; use zohomail_task_list_group to browse and find it first.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `taskId` (`string`, required): Unique identifier of the task to retrieve. This tool is for a task that belongs to a group. Obtain it from a task-listing tool such as zohomail_task_list_group, zohomail_task_list_personal, zohomail_task_list_assigned_you, or zohomail_task_list_created_you.
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.

Example input: `{"taskId":"<taskId>","zgid":"<zgid>"}`

### `zohomail_task_get_member_group`

Get Task Group Members · Read-only

List the members of a Zoho Mail task group.
Returns each member's name and ID.
Use this to see who belongs to a group before assigning a task to a member or filtering tasks by owner.
Requires the group ID (zgid) from zohomail_task_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group whose members should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"zgid":"<zgid>"}`

### `zohomail_task_get_personal`

Get Personal Task · Read-only

Get the full details of a single task in your own personal Zoho Mail Streams task list.
Returns the task's ID, title, description, due date, owner, assignee, priority, status, project details, subtasks, and attachments.
Use this once you already know the task's ID; use zohomail_task_list_personal to browse and find it first.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `taskId` (`string`, required): Unique identifier of the task to retrieve. This tool is for one of your own personal tasks. Obtain it from a task-listing tool such as zohomail_task_list_group, zohomail_task_list_personal, zohomail_task_list_assigned_you, or zohomail_task_list_created_you.

Example input: `{"taskId":"<taskId>"}`

### `zohomail_task_list_assigned_you`

List Tasks Assigned To You · Read-only

List all Zoho Mail Streams tasks (personal or group) that have been assigned to you, with pagination.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project, subtasks, and attachments.
Use this to see your assigned workload across groups and personal tasks. Use zohomail_task_list_created_you for tasks you created instead.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`integer`, optional): Zero-based offset of the first task to return, used to page through results. Defaults to 0 (start from the first task). Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page of results. Accepts values from 1 to 499. Defaults to 20 if omitted. Default: `20`.

Example input: `{}`

### `zohomail_task_list_created_you`

List Tasks Created By You · Read-only

List all Zoho Mail Streams tasks (personal or group) that you created, with pagination.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project, subtasks, and attachments.
Use this to see everything you have filed. Use zohomail_task_list_assigned_you for tasks assigned to you instead.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`integer`, optional): Zero-based offset of the first task to return, used to page through results. Defaults to 0 (start from the first task). Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page of results. Accepts values from 1 to 499. Defaults to 20 if omitted. Default: `20`.

Example input: `{}`

### `zohomail_task_list_group`

List Group Tasks · Read-only

List all tasks in a Zoho Mail group's Streams task list, with pagination.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project, subtasks, and attachments.
Use this to browse all tasks belonging to a group; use zohomail_task_list_personal for your own personal tasks, or zohomail_task_get_group for one already-known task.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `from` (`integer`, optional): Zero-based offset of the first task to return, used to page through results. Defaults to 0 (start from the first task). Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page of results. Accepts values from 1 to 499. Defaults to 20 if omitted. Default: `20`.

Example input: `{"zgid":"<zgid>"}`

### `zohomail_task_list_group_given_status`

List Tasks in Group by Status · Read-only

List all tasks in a Zoho Mail task group filtered by completion status.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project info, subtasks, and attachments.
Use this to fetch every task across a group's projects. Use zohomail_task_list_project_given_status to scope the results to a single project instead.
Requires the group ID (zgid) from zohomail_task_list_groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `status` (`string`, required): Required filter for the completion status of tasks to return. Valid values: inprogress, completed. One of: `inprogress`, `completed`.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group whose tasks should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.
- `from` (`integer`, optional): Zero-based task number to start retrieval from. Range: 0 to the total number of available tasks. Defaults to 0. Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page, counted from the position given by 'from'. Range: 1-499. Defaults to 20. Default: `20`.

Example input: `{"status":"inprogress","zgid":"<zgid>"}`

### `zohomail_task_list_groups`

List Task Groups · Read-only

List all Zoho Mail task groups in the organization that have tasks.
Returns each group's ID (zgid), name, owner, moderators, and member count.
Use this first to discover a group's zgid before listing, filtering, or updating tasks within it.
No prerequisites — this is the starting point for the Zoho Mail Tasks API.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `zohomail_task_list_personal`

List Personal Tasks · Read-only

List all tasks in your own personal Zoho Mail Streams task list, with pagination.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project, subtasks, and attachments.
Use this to browse your own personal tasks; use zohomail_task_list_group for a group's tasks, or zohomail_task_get_personal for one already-known task.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`integer`, optional): Zero-based offset of the first task to return, used to page through results. Defaults to 0 (start from the first task). Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page of results. Accepts values from 1 to 499. Defaults to 20 if omitted. Default: `20`.

Example input: `{}`

### `zohomail_task_list_project`

List Tasks In Project · Read-only

List all tasks filed under a specific project in a Zoho Mail group's Streams task list, with pagination.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project information, subtasks, and attachments.
Use this once you already have a project's ID from zohomail_task_list_projects_group.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): Unique identifier of the project whose tasks should be listed. Obtain it by calling zohomail_task_list_projects_group first.
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `from` (`integer`, optional): Zero-based offset of the first task to return, used to page through results. Defaults to 0 (start from the first task). Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page of results. Accepts values from 1 to 499. Defaults to 20 if omitted. Default: `20`.

Example input: `{"projectId":"<projectId>","zgid":"<zgid>"}`

### `zohomail_task_list_project_given_status`

List Tasks in Project by Status · Read-only

List tasks in a Zoho Mail task group's project, optionally filtered by completion status.
Returns each task's ID, title, description, due date, owner, assignee, priority, status, project info, subtasks, and attachments.
Use this to browse tasks scoped to a single project. Use zohomail_task_list_group_given_status to list tasks across an entire group instead of one project.
Requires the group ID (zgid) from zohomail_task_list_groups, and the ID of a project within that group.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`string`, required): Unique identifier of the task project within the group whose tasks should be listed. This is a Zoho-generated internal identifier, typically a large integer such as 80000000098765.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group that owns the project. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.
- `from` (`integer`, optional): Zero-based task number to start retrieval from. Range: 0 to the total number of available tasks. Defaults to 0. Default: `0`.
- `limit` (`integer`, optional): Maximum number of tasks to return in this page, counted from the position given by 'from'. Range: 1-499. Defaults to 20. Default: `20`.
- `status` (`string`, optional): Optional filter for the completion status of tasks to return. Valid values: inprogress, completed. Omit to return tasks in any status. One of: `inprogress`, `completed`.

Example input: `{"project_id":"<project_id>","zgid":"<zgid>"}`

### `zohomail_task_list_projects_group`

List Group Projects · Read-only

List all projects in a Zoho Mail group's Streams task list.
Returns each project's name and unique identifier.
Use this to find a project's ID before listing its tasks with zohomail_task_list_project, or before filing a new task under it via the projectId field on zohomail_task_add_group.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.

Example input: `{"zgid":"<zgid>"}`

### `zohomail_task_list_subtasks_group`

List Group Task Subtasks · Read-only

List all subtasks under a specific task in a Zoho Mail group's Streams task list.
Returns each subtask's ID, title, description, due date, owner, assignee, priority, status, and project information.
Use this once you already have a group task's ID from zohomail_task_list_group or zohomail_task_get_group.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `taskId` (`string`, required): Unique identifier of the task to retrieve. This tool lists subtasks under a group task. Obtain it from a task-listing tool such as zohomail_task_list_group, zohomail_task_list_personal, zohomail_task_list_assigned_you, or zohomail_task_list_created_you.
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.

Example input: `{"taskId":"<taskId>","zgid":"<zgid>"}`

### `zohomail_task_list_subtasks_personal`

List Personal Task Subtasks · Read-only

List all subtasks under a specific task in your own personal Zoho Mail Streams task list.
Returns each subtask's ID, title, description, due date, owner, assignee, priority, status, and project information.
Use this once you already have a personal task's ID from zohomail_task_list_personal or zohomail_task_get_personal.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `taskId` (`string`, required): Unique identifier of the task to retrieve. This tool lists subtasks under one of your own personal tasks. Obtain it from a task-listing tool such as zohomail_task_list_group, zohomail_task_list_personal, zohomail_task_list_assigned_you, or zohomail_task_list_created_you.

Example input: `{"taskId":"<taskId>"}`

### `zohomail_user_get_single`

Get Organization User · Read-only

Retrieve full account details for a single user in a Zoho Mail organization, by user ID or email address.
Returns contact information, mailbox settings, storage usage, authentication status, and configuration options for the user.
Use this after zohomail_user_list_org to inspect one user in detail. Use zohomail_user_list_org instead to browse or page through all org users.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this user account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Identifier of the user to fetch — either the unique Zoho user identifier (zuid), or the user's full email address; either value works in this same field. Obtain the zuid by calling zohomail_user_list_org for this organization first.

Example input: `{"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_list_org`

List Organization Users · Read-only

List all user accounts in a Zoho Mail organization, with offset-based pagination.
Returns each user's mailbox status, storage information, email address, and configuration settings.
Use this to browse org users and find a user's zuid before calling zohomail_user_get_single, zohomail_user_change_role, or other user-management tools.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization whose users to list. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `limit` (`integer`, optional): Number of user accounts to retrieve starting from the start offset. Defaults to 10. Default: `10`.
- `start` (`integer`, optional): Starting sequence number from which user account data retrieval should begin, for pagination. Defaults to 0 (the first record). Default: `0`.

Example input: `{"zoid":"<zoid>"}`

### `zohomail_account_add_email_forwarding`

Add Email Forwarding · Write

Add one or more email forwarding destinations to a Zoho Mail account, so incoming mail is automatically forwarded to those addresses.
Returns a status object with a code and description confirming the forwarding addresses were added.
Use this to configure where incoming mail is forwarded; pass multiple addresses to forward to more than one recipient at once.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to add email forwarding to. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `forward_to_addresses` (`array`, required): One or more email addresses that incoming mail for this account should be forwarded to. Example: ["assistant@example.com", "archive@example.com"].
- `is_user_forward` (`boolean`, optional): Whether this forwarding rule is being set up by the account's own user (true) rather than by an administrator acting on the user's behalf (false). Optional; if omitted, Zoho uses its own default.

Example input: `{"account_id":"<account_id>","forward_to_addresses":["assistant@example.com","archive@example.com"]}`

### `zohomail_account_add_send_mail`

Add Send Mail Details · Write

Add SMTP send-mail configuration to a Zoho Mail account, so outgoing mail can be routed through a custom mail server or sent from an additional address.
Returns a status object with a code and description confirming the send-mail details were added.
Use this to configure sending through an external SMTP server, or to add a from-address the account can send as; pass multiple entries to configure more than one at once.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to add send-mail configuration to. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `send_mail_details` (`array`, required): One or more send-mail configurations to add to this account. Each entry needs a display name and a connection mode: 'extmailbox' routes mail through a custom outgoing SMTP server (also provide the server host, port, username, password, and connection security), while 'extfrom' just registers an extra from-address the account can send as. Example: [{"display_name": "Support Team", "connection_mode": "extmailbox", "from_address": "support@example.com", "server_name": "smtp.example.com", "server_port": "587", "user_name": "smtpuser", "password": "smtp-password", "smtp_connection": "TLS"}]

Example input: `{"account_id":"<account_id>","send_mail_details":[{"display_name":"Support Team","connection_mode":"extmailbox","from_address":"support@example.com","server_name":"smtp.example.com","server_port":"587","user_name":"smtpuser","password":"smtp-password","smtp_connection":"TLS"}]}`

### `zohomail_account_add_vacation_reply`

Add Vacation Reply · Write

Create a new vacation auto-reply for a Zoho Mail account, with a subject, message body, and active date range.
Returns a status object confirming the vacation reply was configured.
Use zohomail_account_update_vacation_reply to change an existing vacation reply, and zohomail_account_remove_vacation_reply to turn it off.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `from_date` (`string`, required): Start of the vacation period during which the auto-reply is active, in the format MM/DD/YYYY HH:MM:SS, e.g. 01/15/2026 00:00:00.
- `sending_int` (`integer`, required): Minimum number of days Zoho Mail waits before sending another auto-reply to the same sender, so repeat senders are not auto-replied to on every message they send.
- `to_date` (`string`, required): End of the vacation period during which the auto-reply is active, in the format MM/DD/YYYY HH:MM:SS, e.g. 01/22/2026 23:59:59.
- `content` (`string`, optional): Body text of the vacation auto-reply email, sent to anyone who emails this account while the vacation period is active.
- `for_all_accts` (`boolean`, optional): Whether this vacation auto-reply should apply to all mail accounts under this user, not just the one identified by account_id.
- `name` (`string`, optional): A short internal name for this vacation auto-reply configuration, shown in the Zoho Mail settings UI. It is not shown to people receiving the auto-reply.
- `reply_for_all_mails` (`boolean`, optional): Whether the vacation auto-reply should be sent for every incoming message, regardless of which of the account's addresses it was sent to.
- `reply_for_to_mails` (`boolean`, optional): Whether the vacation auto-reply should only be sent when this account's own address appears directly in the message's To field, rather than only on Cc or a mailing list.
- `send_to` (`string`, optional): Which senders should receive the vacation auto-reply. One of: all (everyone), contacts (only saved contacts), noncontacts (only senders not in your contacts), org (only people in your organization), nonOrgAll (only people outside your organization), nonOrgContacts (only external contacts), or nonOrgNonContacts (only external non-contacts). Defaults to Zoho Mail's own setting when left blank. One of: `all`, `contacts`, `noncontacts`, `org`, `nonOrgAll`, `nonOrgContacts`, `nonOrgNonContacts`.
- `subject` (`string`, optional): Subject line of the vacation auto-reply email.

Example input: `{"account_id":"<account_id>","from_date":"<from_date>","sending_int":1,"to_date":"<to_date>"}`

### `zohomail_account_delete_zoho_mail_copy_email_forwarding`

Delete Forwarded Mail Copy · Write

Set whether Zoho Mail keeps a local copy of messages that are forwarded to another address on this account.
Returns a status object confirming the setting was applied.
Use this alongside zohomail_account_enable_email_forwarding when you want forwarded mail to skip (or keep) a copy in the Zoho Mail inbox.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `delete_copy` (`boolean`, optional): Whether Zoho Mail should also delete its own local copy of a message after forwarding it to another address. Defaults to true (Zoho Mail's own default) when left blank, meaning no local copy is kept. Default: `true`.

Example input: `{"account_id":"<account_id>"}`

### `zohomail_account_disable_email_forwarding`

Disable Email Forwarding · Write

Disable forwarding of incoming mail for a previously configured forwarding address on a Zoho Mail account, without deleting the forwarding entry.
Returns a status object confirming forwarding was disabled.
Use zohomail_account_enable_email_forwarding to turn it back on, or zohomail_account_remove_email_forwarding to delete the forwarding entry entirely.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `mail_forward_to` (`string`, required): Email address whose forwarding should be paused. Must match an address already configured for forwarding on this account.

Example input: `{"account_id":"<account_id>","mail_forward_to":"<mail_forward_to>"}`

### `zohomail_account_enable_email_forwarding`

Enable Email Forwarding · Write

Enable forwarding of incoming mail from a Zoho Mail account to another email address.
Returns a status object confirming forwarding was enabled.
Use zohomail_account_verify_email_forwarding first if Zoho Mail requires confirmation for a new address. Use zohomail_account_disable_email_forwarding to turn forwarding off without deleting the address.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `mail_forward_to` (`string`, required): Email address that incoming mail on this Zoho Mail account should be forwarded to. Zoho Mail may require this address to be verified before forwarding actually takes effect.

Example input: `{"account_id":"<account_id>","mail_forward_to":"<mail_forward_to>"}`

### `zohomail_account_resend_verification_email_forwarding`

Resend Forwarding Verification Email · Write

Resend the verification email for a pending email-forwarding address on a Zoho Mail account.
Returns a status object confirming the verification email was resent.
Use this when the original confirmation key expired or the verification email was lost. Use zohomail_account_verify_email_forwarding once you have a fresh confirmKey from the new email.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `mail_forward_to` (`string`, required): Email address whose pending forwarding verification email should be resent. Must be an address that was already added for forwarding but not yet confirmed.

Example input: `{"account_id":"<account_id>","mail_forward_to":"<mail_forward_to>"}`

### `zohomail_account_resend_verification_reply_address`

Resend Reply-To Verification · Write

Resend the verification email for a Zoho Mail account's pending reply-to address.
Returns a status object with a code and description confirming the verification email was resent.
Use this after zohomail_account_update_reply_address if the recipient did not receive, lost, or let expire the original verification email.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox whose pending reply-to address needs its verification email resent. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.

Example input: `{"account_id":"<account_id>"}`

### `zohomail_account_update_display_name`

Update Display Name · Write

Update the display name shown on outgoing mail for a Zoho Mail account.
Returns a status object with a code and description confirming the display name was updated.
Use this to rename how an account appears to recipients; use zohomail_account_update_display_name_email_address if the email address needs to change at the same time.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox whose display name is being updated. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `display_name` (`string`, required): New display name to show as the sender name on mail sent from this account, e.g. "Jane Smith" or "Support Team".

Example input: `{"account_id":"<account_id>","display_name":"Jane Smith"}`

### `zohomail_account_update_display_name_email_address`

Update Display Name And Email Address · Write

Update both the display name and the email address of a Zoho Mail account in a single call.
Returns a status object with a code and description confirming both fields were updated.
Use this when changing the name and address together; use zohomail_account_update_display_name or zohomail_account_update_email_address to change just one of them.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox being updated. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `display_name` (`string`, required): New display name to show as the sender name on mail sent from this account, e.g. "Jane Smith" or "Support Team".
- `email_address` (`string`, required): New email address to set for this account, e.g. "jane.smith@example.com". Must be a valid, deliverable address on a domain the organization controls.

Example input: `{"account_id":"<account_id>","display_name":"Jane Smith","email_address":"jane.smith@example.com"}`

### `zohomail_account_update_email_address`

Update Email Address · Write

Update the email address of a Zoho Mail account.
Returns a status object with a code and description confirming the email address was updated.
Use this to change the account's own address; use zohomail_account_update_display_name_email_address if the display name needs to change at the same time.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox whose email address is being updated. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `email_address` (`string`, required): New email address to set for this account, e.g. "jane.smith@example.com". Must be a valid, deliverable address on a domain the organization controls.

Example input: `{"account_id":"<account_id>","email_address":"jane.smith@example.com"}`

### `zohomail_account_update_mail_sequence`

Update Mail Account Sequence · Write

Reorder a user's Zoho Mail accounts (mailboxes) by supplying the full list of account IDs in the new display sequence.
Returns a status object with a code and description confirming whether the reorder succeeded.
Use this to change the order accounts appear in the mailbox switcher; each call replaces the entire order, so include every account ID the user has, not just the ones that moved.
Requires account IDs obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox whose account list ordering is being updated. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `account_order` (`string`, required): Comma-separated list of numeric Zoho Mail account IDs, listed in the order they should be displayed. Every account ID the user has must be included, not just the ones being moved. Example: "6000000012345,6000000067890,6000000054321".

Example input: `{"account_id":"<account_id>","account_order":"6000000012345,6000000067890,6000000054321"}`

### `zohomail_account_update_reply_address`

Update Reply-To Address · Write

Set the reply-to email address for a Zoho Mail account, so replies to outgoing mail are routed to a different address than the one it was sent from.
Returns a status object with a code and description confirming the update.
Use this to change where replies land; Zoho sends a verification email to the new address, so use zohomail_account_resend_verification_reply_address if that email needs to be resent.
Requires the numeric account_id from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox whose reply-to address is being updated. This is a Zoho-generated internal identifier, not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it from zohomail_account_list_user first.
- `reply_to` (`string`, required): New email address to set as the reply-to address for this account. Replies to mail sent from this account will go here instead of the sending address. Must be a valid email address, e.g. "support@example.com". Zoho sends a verification email to this address before it becomes active.

Example input: `{"account_id":"<account_id>","reply_to":"support@example.com"}`

### `zohomail_account_update_vacation_reply`

Update Vacation Reply · Write

Update an existing vacation auto-reply on a Zoho Mail account, such as its message, date range, or recipient scope.
Returns a status object confirming the vacation reply was updated.
Use zohomail_account_add_vacation_reply to create one first if none exists, and zohomail_account_remove_vacation_reply to delete it.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `from_date` (`string`, required): Start of the vacation period during which the auto-reply is active, in the format MM/DD/YYYY HH:MM:SS, e.g. 01/15/2026 00:00:00.
- `sending_int` (`integer`, required): Minimum number of days Zoho Mail waits before sending another auto-reply to the same sender, so repeat senders are not auto-replied to on every message they send.
- `to_date` (`string`, required): End of the vacation period during which the auto-reply is active, in the format MM/DD/YYYY HH:MM:SS, e.g. 01/22/2026 23:59:59.
- `content` (`string`, optional): Body text of the vacation auto-reply email, sent to anyone who emails this account while the vacation period is active.
- `for_all_accts` (`boolean`, optional): Whether this vacation auto-reply should apply to all mail accounts under this user, not just the one identified by account_id.
- `name` (`string`, optional): A short internal name for this vacation auto-reply configuration, shown in the Zoho Mail settings UI. It is not shown to people receiving the auto-reply.
- `reply_for_all_mails` (`boolean`, optional): Whether the vacation auto-reply should be sent for every incoming message, regardless of which of the account's addresses it was sent to.
- `reply_for_to_mails` (`boolean`, optional): Whether the vacation auto-reply should only be sent when this account's own address appears directly in the message's To field, rather than only on Cc or a mailing list.
- `send_to` (`string`, optional): Which senders should receive the vacation auto-reply. One of: all (everyone), contacts (only saved contacts), noncontacts (only senders not in your contacts), org (only people in your organization), nonOrgAll (only people outside your organization), nonOrgContacts (only external contacts), or nonOrgNonContacts (only external non-contacts). Defaults to Zoho Mail's own setting when left blank. One of: `all`, `contacts`, `noncontacts`, `org`, `nonOrgAll`, `nonOrgContacts`, `nonOrgNonContacts`.
- `subject` (`string`, optional): Subject line of the vacation auto-reply email.
- `vacation_id` (`string`, optional): Unique identifier of the existing vacation auto-reply to update. If omitted, Zoho Mail updates the account's current active vacation reply configuration.

Example input: `{"account_id":"<account_id>","from_date":"<from_date>","sending_int":1,"to_date":"<to_date>"}`

### `zohomail_account_verify_email_forwarding`

Verify Email Forwarding · Write

Confirm an email-forwarding address on a Zoho Mail account using the confirmation key Zoho Mail sent to that address.
Returns a status object with a code and description indicating success or failure.
Use this after enabling forwarding to a new address, once you have the confirmKey from the verification email. Use zohomail_account_resend_verification_email_forwarding if the key expired and a new email is needed.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `confirm_key` (`string`, required): Confirmation key Zoho Mail sent to the forwarding address in its verification email. Copy it from that email (or from the confirmation link's query parameter) and pass it here to prove you control the forwarding address.
- `mail_forward_to` (`string`, required): Email address that incoming mail is being forwarded to, whose forwarding configuration you are confirming. Must match the address the verification email was sent to.

Example input: `{"account_id":"<account_id>","confirm_key":"<confirm_key>","mail_forward_to":"<mail_forward_to>"}`

### `zohomail_antispam_update_dkim_fail_option`

Update DKIM Fail Option · Write

Update the DKIM fail action for a Zoho Mail organization's anti-spam settings.
Returns a status object confirming the update completed successfully.
Use this to change how emails that fail DKIM verification are handled; use zohomail_antispam_get_dkim_fail_option to check the current setting first.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `option` (`string`, required): The action to take when an email fails DKIM verification. One of moveToQuarantine (quarantine the email), permanentReject (bounce it permanently), temporaryReject (bounce it temporarily so a legitimate sender's retry can succeed), or allowMail (deliver it anyway). One of: `moveToQuarantine`, `permanentReject`, `temporaryReject`, `allowMail`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"option":"moveToQuarantine","zoid":"<zoid>"}`

### `zohomail_antispam_update_dmarc_fail_option`

Update DMARC Fail Option · Write

Update the DMARC fail action for a Zoho Mail organization's anti-spam settings.
Returns a status object confirming the update completed successfully.
Use this to change how emails that fail DMARC are handled; use zohomail_antispam_get_dmarc_fail_option to check the current setting first.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `option` (`string`, required): The action to take when an email fails DMARC. One of moveToQuarantine (quarantine the email), moveToSpam (deliver it to the recipient's spam folder), or allowMail (deliver it normally). One of: `moveToQuarantine`, `moveToSpam`, `allowMail`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"option":"moveToQuarantine","zoid":"<zoid>"}`

### `zohomail_antispam_update_spf_fail_option`

Update SPF Fail Option · Write

Update the SPF fail action for a Zoho Mail organization's anti-spam settings.
Returns a status object confirming the update completed successfully.
Use this to change how emails that fail the SPF check are handled; use zohomail_antispam_get_spf_fail_option to check the current setting first.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `option` (`string`, required): The action to take when an email fails the SPF check. One of moveToQuarantine (quarantine the email), permanentReject (bounce it permanently), temporaryReject (bounce it temporarily so a legitimate sender's retry can succeed), or allowMail (deliver it anyway). One of: `moveToQuarantine`, `permanentReject`, `temporaryReject`, `allowMail`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"option":"moveToQuarantine","zoid":"<zoid>"}`

### `zohomail_antispam_update_spf_soft_fail_option`

Update SPF Soft Fail Option · Write

Update the SPF soft fail action for a Zoho Mail organization's anti-spam settings.
Returns a status object confirming the update completed successfully.
Use this to change how emails with an SPF soft fail are handled; use zohomail_antispam_get_spf_soft_fail_option to check the current setting first.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `option` (`string`, required): The action to take when an email fails the SPF soft check. One of moveToQuarantine (quarantine the email), permanentReject (bounce it permanently), temporaryReject (bounce it temporarily so a legitimate sender's retry can succeed), or allowMail (deliver it anyway). One of: `moveToQuarantine`, `permanentReject`, `temporaryReject`, `allowMail`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"option":"moveToQuarantine","zoid":"<zoid>"}`

### `zohomail_bookmark_create`

Create Bookmark · Write

Add a new bookmark to a Zoho Mail bookmark group, with a title, URL, and optional summary.
Returns the created bookmark's entity ID and URI.
Use this to save a link under a specific group; set collection_id to also file it into a collection within that group.
Requires a group ID from zohomail_bookmark_list_groups, and optionally a collection ID from zohomail_bookmark_list_collections.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `group_id` (`string`, required): Unique ID of the bookmark group to operate on. This is a Zoho-generated identifier for a Streams bookmark group, not the group's name. Obtain it by calling zohomail_bookmark_list_groups first, which lists every group's groupId and name.
- `link` (`string`, required): URL to save as a bookmark. Must be a valid, absolute URL including the scheme, e.g. "https://www.zoho.com".
- `title` (`string`, required): Title to display for this bookmark.
- `collection_id` (`string`, optional): Unique ID of the collection scoped to the specified group. Obtain it by calling zohomail_bookmark_list_collections for that group first, which lists every collection's collectionId and collectionName. Omit to add the bookmark to the group without filing it into a collection.
- `summary` (`string`, optional): Optional summary or note describing this bookmark.

Example input: `{"group_id":"<group_id>","link":"https://www.zoho.com","title":"Follow up with vendor"}`

### `zohomail_bookmark_create_collection`

Create Bookmark Collection · Write

Create a new bookmark collection within a Zoho Mail bookmark group.
Returns the new collection's ID and name.
Use this to organize bookmarks into named collections before filing bookmarks into them with zohomail_bookmark_create.
Requires a group ID from zohomail_bookmark_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collection_name` (`string`, required): Name for the new bookmark collection.
- `group_id` (`string`, required): Unique ID of the bookmark group to operate on. This is a Zoho-generated identifier for a Streams bookmark group, not the group's name. Obtain it by calling zohomail_bookmark_list_groups first, which lists every group's groupId and name.

Example input: `{"collection_name":"<collection_name>","group_id":"<group_id>"}`

### `zohomail_bookmark_edit`

Edit Bookmark · Write

Update a bookmark's link, title, summary, or collection in a Zoho Mail bookmark group.
Returns a success status confirming the bookmark was updated.
Use this to change a bookmark's URL, title, or move it into a different collection; use zohomail_bookmark_mark_favorite or zohomail_bookmark_unmark_favorite to only toggle its favorite flag.
Requires a group ID (from zohomail_bookmark_list_groups) and a bookmark ID (from zohomail_bookmark_list).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bookmark_id` (`string`, required): Numeric ID of the bookmark to update. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000054321. Obtain it by calling zohomail_bookmark_list for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this bookmark. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.
- `link` (`string`, required): The updated URL for the bookmark. Must be the full link the bookmark should point to, e.g. https://example.com/docs. This replaces the bookmark's existing link entirely.
- `title` (`string`, required): The updated title for the bookmark. This replaces the bookmark's existing title entirely.
- `collection_id` (`string`, optional): Numeric ID of the collection to move this bookmark into, obtained from zohomail_bookmark_list_collections. Leave unset to leave the bookmark's current collection unchanged.
- `summary` (`string`, optional): The updated summary or description text for the bookmark. Leave unset to leave the existing summary unchanged.

Example input: `{"bookmark_id":"<bookmark_id>","group_id":"<group_id>","link":"https://www.zoho.com","title":"Follow up with vendor"}`

### `zohomail_bookmark_edit_collection`

Edit Bookmark Collection · Write

Rename a bookmark collection in a Zoho Mail bookmark group.
Returns the updated collection's ID and name.
Use this to rename a collection; use zohomail_bookmark_edit to move an individual bookmark into a different collection.
Requires a group ID (from zohomail_bookmark_list_groups) and a collection ID (from zohomail_bookmark_list_collections).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, required): Numeric ID of the collection to rename. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000067890. Obtain it by calling zohomail_bookmark_list_collections for the group first.
- `collection_name` (`string`, required): The updated name for the collection. Replaces the collection's existing name entirely.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this collection. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.

Example input: `{"collection_id":"<collection_id>","collection_name":"<collection_name>","group_id":"<group_id>"}`

### `zohomail_bookmark_mark_favorite`

Mark Bookmark as Favorite · Write

Mark a bookmark as a favorite in a Zoho Mail bookmark group.
Returns a success status confirming the bookmark was flagged as favorite.
Use this to flag a bookmark as favorite; use zohomail_bookmark_unmark_favorite to remove the flag.
Requires a group ID (from zohomail_bookmark_list_groups) and a bookmark ID (from zohomail_bookmark_list).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bookmark_id` (`string`, required): Numeric ID of the bookmark to mark as favorite. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000054321. Obtain it by calling zohomail_bookmark_list for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this bookmark. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.

Example input: `{"bookmark_id":"<bookmark_id>","group_id":"<group_id>"}`

### `zohomail_bookmark_restore`

Restore Bookmark · Write

Restore a bookmark out of trash in a Zoho Mail bookmark group.
Returns a success status confirming the bookmark was restored.
Use this to bring back a bookmark that was previously moved to trash by zohomail_bookmark_delete; it has no effect on a bookmark that isn't in trash.
Requires a group ID (from zohomail_bookmark_list_groups) and a bookmark ID (from zohomail_bookmark_list).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bookmark_id` (`string`, required): Numeric ID of the bookmark to restore. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000054321. Obtain it by calling zohomail_bookmark_list for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this bookmark. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.

Example input: `{"bookmark_id":"<bookmark_id>","group_id":"<group_id>"}`

### `zohomail_domain_add_alias`

Add Domain Alias · Write

Add another domain as an alias of an existing domain in a Zoho Mail organization.
Returns a status object confirming the alias was added.
Use this so mail sent to the alias domain is also delivered under the primary domain; use zohomail_domain_remove_alias to undo it.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainAlias` (`string`, required): The name of the domain to add as an alias of domainName. Example: zylker.org.
- `domainName` (`string`, required): The name of the domain that domainAlias should point to. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainAlias":"<domainAlias>","domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_add_catch_all_address`

Add Catch-All Address · Write

Set a catch-all email address for a domain in a Zoho Mail organization, so mail sent to any non-existent address on that domain is delivered there instead of bouncing.
Returns a status object confirming the catch-all address was set.
Use this to capture mail sent to invalid or mistyped addresses on the domain; use zohomail_domain_delete_catch_all_address to remove it.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `catchAllAddress` (`string`, required): The email address that should receive mail sent to any non-existent address on this domain. Typically an existing mailbox on the same organization. Example: catchall@example.com.
- `domainName` (`string`, required): The fully-qualified domain name to set the catch-all address for, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"catchAllAddress":"<catchAllAddress>","domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_add_dkim`

Add DKIM Details · Write

Add a new DKIM key configuration to a domain in a Zoho Mail organization.
Returns the created DKIM record, including its ID, selector, public key, hash type, and verification status.
Use this to create a new DKIM signature for a domain; use zohomail_domain_set_dkim_default to make an existing key the active one, or zohomail_domain_verify_dkim_public_key to check DNS verification afterward.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name to add the DKIM key to, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `selector` (`string`, required): An identifier for this DKIM signature, published as part of the DNS selector record you'll add (selector._domainkey.<domain>). Any string is allowed — commonly a short label such as the key's purpose or creation date. Example: zmail2026.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.
- `isDefault` (`boolean`, optional): Whether this new DKIM key should immediately become the default key Zoho Mail uses to sign outgoing mail for this domain. Defaults to false, meaning the key is created but not activated until you call zohomail_domain_set_dkim_default. Example: true. Default: `false`.
- `keySize` (`integer`, optional): The RSA key size in bits for the new DKIM key pair. Must be 1024 or 2048 — 2048 is more secure but produces a longer DNS TXT record. Leave unset to use Zoho's standard key size. Example: 2048. One of: `1024`, `2048`.

Example input: `{"domainName":"<domainName>","selector":"<selector>","zoid":"<zoid>"}`

### `zohomail_domain_add_notification_address`

Add Notification Address · Write

Set the notification email address for a domain's organization in Zoho Mail, which receives organization alerts such as group email delivery failures and domain-related notices.
Returns a status object confirming the notification address was added.
Use this to designate where domain- and group-related admin notifications are sent; use zohomail_domain_delete_notification_address to remove it.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name to configure the notification address for, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `notificationAddress` (`string`, required): The email address that should receive organization notifications for this domain, such as group email delivery failures (when a group has no moderator) and other domain-related alerts. Example: admin@example.com.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"domainName":"<domainName>","notificationAddress":"<notificationAddress>","zoid":"<zoid>"}`

### `zohomail_domain_add_organization`

Add Domain · Write

Add a new domain to a Zoho Mail organization.
Returns the added domain's details, including its verification codes (HTML and CNAME) and verification status.
Use this to register a domain before verifying ownership and enabling email hosting for it.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `domainName` (`string`, required): The name of the domain to add to the organization. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization the domain is being added to. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_disable_subdomain_stripping`

Disable Subdomain Stripping · Write

Disable subdomain stripping for a domain in a Zoho Mail organization, so mail sent to a subdomain is no longer routed to the primary domain.
Returns a status object confirming subdomain stripping was disabled.
Use this to stop treating subdomain addresses as belonging to the parent domain; use zohomail_domain_enable_subdomain_stripping to turn it back on.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name to disable subdomain stripping for, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_enable_email_hosting`

Enable Email Hosting · Write

Enable email hosting for a verified domain in a Zoho Mail organization.
Returns a status object confirming email hosting was enabled.
Use this after verifying a domain with zohomail_domain_verify_organization, so mailboxes can be created on it.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The name of the domain to enable email hosting for. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_enable_subdomain_stripping`

Enable Subdomain Stripping · Write

Enable subdomain stripping for a domain in a Zoho Mail organization, so mail sent to any subdomain of it routes to the primary domain instead of bouncing.
Returns a status object confirming subdomain stripping was enabled.
Use this when you want addresses like user@mail.example.com to be treated as user@example.com; use zohomail_domain_disable_subdomain_stripping to turn it back off.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name to enable subdomain stripping for, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_regenerate_dkim_public_key`

Regenerate DKIM Public Key · Write

Regenerate the public/private key pair for an existing DKIM configuration on a domain in a Zoho Mail organization.
Returns the regenerated DKIM record, including its selector, new public key (RSA format), hash type, and verification status.
Use this to rotate a DKIM key without deleting and recreating it; call zohomail_domain_verify_dkim_public_key afterward once you've updated the domain's DNS record to confirm the new key is picked up.
Requires the organization ID from zohomail_org_get_organization and a dkimId from zohomail_domain_add_dkim or a domain detail lookup.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dkimId` (`integer`, required): The unique ID of the DKIM configuration whose key pair should be regenerated. This is a numeric identifier returned by zohomail_domain_add_dkim or listed in a domain's details, not the selector string. Example: 60002018490.
- `domainName` (`string`, required): The fully-qualified domain name whose DKIM key should be regenerated, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"dkimId":60002018490,"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_remove_alias`

Remove Domain Alias · Write

Remove a domain alias from a domain in a Zoho Mail organization.
Returns a status object confirming the alias was removed.
Use this to stop routing mail for the alias domain; use zohomail_domain_add_alias to add one.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainAlias` (`string`, required): The name of the alias domain to remove from domainName. Example: zylker.org.
- `domainName` (`string`, required): The name of the domain that domainAlias is currently pointing to. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainAlias":"<domainAlias>","domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_set_dkim_default`

Set Default DKIM · Write

Mark an existing DKIM key as the default for a domain in a Zoho Mail organization.
Returns a status object confirming the default was set.
Use this after adding multiple DKIM keys with zohomail_domain_add_dkim to choose which one Zoho Mail signs outgoing mail with; use zohomail_domain_regenerate_dkim_public_key instead if you need a new key pair rather than switching among existing ones.
Requires the organization ID from zohomail_org_get_organization and a dkimId from zohomail_domain_add_dkim or a domain detail lookup.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dkimId` (`integer`, required): The unique ID of the DKIM configuration to make the default for this domain. This is a numeric identifier returned by zohomail_domain_add_dkim or listed in a domain's details, not the selector string. Example: 60002018490.
- `domainName` (`string`, required): The fully-qualified domain name whose default DKIM key should be changed, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"dkimId":60002018490,"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_set_primary`

Set Primary Domain · Write

Set a domain as the primary domain for a Zoho Mail organization.
Returns a status object confirming the domain was set as primary.
Use this once a domain is verified with zohomail_domain_verify_organization and you want it to be the organization's default domain.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The name of the domain to set as the organization's primary domain. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_verify_dkim_public_key`

Verify DKIM Public Key · Write

Verify that a domain's DKIM DNS TXT record matches the public key Zoho Mail has on file for a given DKIM configuration.
Returns a status object plus a dkimstatus boolean indicating whether verification succeeded.
Use this after adding a key with zohomail_domain_add_dkim or rotating one with zohomail_domain_regenerate_dkim_public_key to confirm DNS has propagated before relying on DKIM signing.
Requires the organization ID from zohomail_org_get_organization and a dkimId from zohomail_domain_add_dkim or a domain detail lookup.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dkimId` (`integer`, required): The unique ID of the DKIM configuration to verify against DNS. This is a numeric identifier returned by zohomail_domain_add_dkim or listed in a domain's details, not the selector string. Example: 60002018490.
- `domainName` (`string`, required): The fully-qualified domain name whose DKIM key should be verified, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"dkimId":60002018490,"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_verify_mx_record`

Verify MX Record · Write

Verify the MX record configuration for a domain in a Zoho Mail organization.
Returns a status object with an mxstatus flag indicating whether verification succeeded.
Use this after pointing the domain's MX records to Zoho Mail, to confirm they resolve correctly.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The name of the domain whose MX record should be verified. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_verify_organization`

Verify Domain · Write

Verify ownership of a domain in a Zoho Mail organization, using a TXT, CNAME, or HTML verification method.
Returns a status object indicating whether verification succeeded, with error details on failure.
Use this after adding a domain with zohomail_domain_add_organization and publishing the chosen verification record with your DNS or hosting provider.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The name of the domain to verify. Example: zylker.com.
- `mode` (`string`, required): The verification method to use. Must be one of verifyDomainByTXT (verify via a TXT record in DNS), verifyDomainByCName (verify via a CNAME record in DNS), or verifyDomainByHTML (verify via an HTML file uploaded to the domain's web server). One of: `verifyDomainByTXT`, `verifyDomainByCName`, `verifyDomainByHTML`.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","mode":"verifyDomainByTXT","zoid":"<zoid>"}`

### `zohomail_domain_verify_spf_record`

Verify SPF Record · Write

Verify the SPF record configuration for a domain in a Zoho Mail organization.
Returns a status object with an spfstatus flag indicating whether verification succeeded.
Use this after adding Zoho Mail's SPF include to the domain's SPF record, to confirm it resolves correctly.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The name of the domain whose SPF record should be verified. Example: zylker.com.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization that owns the domain. Obtain it from Zoho Mail's Get Organization Details endpoint.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_folder_create`

Create Folder · Write

Create a new folder in a Zoho Mail account.
Returns the created folder's ID, name, path, and type.
Use this to add custom folders for organizing mail; use zohomail_folder_list to see existing folders first.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox in which to create the new folder. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folderName` (`string`, required): Name for the new folder. Zoho Mail folder names must contain only letters — no spaces, numbers, or special characters are allowed. Example: "ProjectAlpha".
- `parentFolderId` (`string`, optional): Numeric ID of the parent folder under which the new folder should be created as a subfolder. Omit to create the folder at the top level of the mailbox instead of nesting it. Obtain a folder's ID from zohomail_folder_list.
- `parentFolderPath` (`string`, optional): Path of the parent folder under which the new folder should be created, given as an alternative to parentFolderId. Example: "Inbox/Projects".

Example input: `{"account_id":"<account_id>","folderName":"ProjectAlpha"}`

### `zohomail_folder_disable_imap_view`

Disable Folder IMAP View · Write

Disable IMAP visibility for a folder in a Zoho Mail account.
Returns a success status confirming the change.
Use this to hide a folder's messages from IMAP mail clients; use zohomail_folder_enable_imap_view to reverse it.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to hide from IMAP mail clients. Obtain it from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_folder_enable_imap_view`

Enable Folder IMAP View · Write

Enable IMAP visibility for a folder in a Zoho Mail account.
Returns a success status confirming the change.
Use this to make a folder's messages accessible through IMAP mail clients; use zohomail_folder_disable_imap_view to reverse it.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to make viewable and accessible through IMAP. Obtain it from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_folder_mark_read`

Mark Folder Read · Write

Mark every message in a folder as read in a Zoho Mail account.
Returns a success status confirming the change.
Use this to clear a folder's entire unread count in one call instead of marking messages individually.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder whose messages should all be marked as read. Obtain it from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_folder_move`

Move Folder · Write

Move a folder to a different location within a Zoho Mail account's folder hierarchy.
Returns a success status confirming the move.
Use this to nest a folder under a new parent folder or reposition it among its sibling folders; use zohomail_folder_rename to change a folder's name instead.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to move. Obtain it from zohomail_folder_list.
- `parentFolderId` (`string`, optional): Numeric ID of the destination parent folder to move this folder under. Omit to move the folder to the top level of the mailbox. Obtain a folder's ID from zohomail_folder_list.
- `previousFolderId` (`string`, optional): Numeric ID of the sibling folder, under the destination parent, after which this folder should be positioned. Use this to control ordering among sibling folders; omit to let Zoho Mail place it by default. Obtain a folder's ID from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_folder_rename`

Rename Folder · Write

Rename an existing folder in a Zoho Mail account.
Returns a success status confirming the rename; the API does not return the updated folder details.
Use this to change a folder's display name without moving it or affecting its contents; use zohomail_folder_move to relocate a folder instead.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to rename. Obtain it from zohomail_folder_list.
- `folderName` (`string`, required): New name for the folder, replacing its current name. Folder names in Zoho Mail typically allow only letters — no spaces, numbers, or special characters. Example: "ProjectBeta".

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","folderName":"ProjectBeta"}`

### `zohomail_group_add_email_alias`

Add Group Email Alias · Write

Add one or more email aliases to a Zoho Mail organization group.
Returns a status object confirming the aliases were added.
Use this to give a group additional email addresses it can receive mail at. Use zohomail_group_remove_email_alias to remove aliases instead.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `aliases` (`array`, required): Array of one or more email addresses to add as aliases for the group. Example: ["sales-alias@example.com", "support-alias@example.com"]
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group to add aliases to. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"aliases":["sales-alias@example.com","support-alias@example.com"],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_add_members`

Add Group Members · Write

Add one or more members to an existing mail group in a Zoho Mail organization.
Returns a status object with an HTTP code and description confirming whether the members were added.
Use this to grow an existing group's membership. Use zohomail_group_delete_members to remove members, or pass the initial member list directly to zohomail_group_create when creating a new group.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mailGroupMemberList` (`array`, required): List of members to add. Each entry needs the member's email address, and may optionally set their role to 'member' (default) or 'moderator' — moderators can approve or reject held messages when the group is Moderated. Example: [{"memberEmailId": "alice@yourcompany.com", "role": "member"}].
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group to add members to. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"mailGroupMemberList":[{"memberEmailId":"alice@yourcompany.com","role":"member"}],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_create`

Create Group · Write

Create a new mail group in a Zoho Mail organization, with an initial list of members.
Returns the created group's details, including its assigned group ID (zgid), member list, and resource URI.
Use this to set up a new distribution, discussion, or moderated group. Use zohomail_group_add_members or zohomail_group_update_name to change it afterward.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `emailId` (`string`, required): Email address for the new group, using a domain already verified in this Zoho Mail organization. This becomes the group's address that members send mail to. Example: engineering@yourcompany.com.
- `mailGroupMemberList` (`array`, required): List of initial members to add to the group. Each entry needs the member's email address, and may optionally set their role to 'member' (default) or 'moderator' — moderators can approve or reject held messages when the group is Moderated. Example: [{"memberEmailId": "alice@yourcompany.com", "role": "member"}, {"memberEmailId": "bob@yourcompany.com", "role": "moderator"}].
- `name` (`string`, required): Unique display name for the group within the organization. Example: 'Engineering Team'.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that will own this group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345, and is required for every organization-level (admin) Zoho Mail API call. Obtain it by calling zohomail_org_get_organization for this connection first.
- `accessType` (`string`, optional): Who can send mail to this group. 'Public' allows anyone to send, 'Organization' restricts to members of this organization, 'Group' restricts to group members only, and 'Moderated' requires a moderator to approve every message before delivery. Defaults to 'Public' if omitted. One of: `Public`, `Organization`, `Group`, `Moderated`. Default: `Public`.
- `groupDescription` (`string`, optional): Free-text description of the group's purpose, shown to members and admins. Optional.
- `streamsEnabled` (`boolean`, optional): Whether Streams (a group discussion feed) is enabled for this group at creation time. Defaults to false. Default: `false`.

Example input: `{"emailId":"<emailId>","mailGroupMemberList":[{"memberEmailId":"alice@yourcompany.com","role":"member"},{"memberEmailId":"bob@yourcompany.com","role":"moderator"}],"name":"Engineering Team","zoid":"<zoid>"}`

### `zohomail_group_delete_members`

Delete Group Members · Write

Remove one or more members from an existing mail group in a Zoho Mail organization.
Returns a status object with an HTTP code and description confirming whether the members were removed.
Use this to shrink an existing group's membership. Use zohomail_group_add_members to add members instead.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mailGroupMemberList` (`array`, required): List of members to remove, identified by email address. Example: [{"memberEmailId": "alice@yourcompany.com"}].
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group to remove members from. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"mailGroupMemberList":[{"memberEmailId":"alice@yourcompany.com"}],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_enable_streams`

Enable Group Streams · Write

Enable Streams (the group discussion feed) for an existing mail group in a Zoho Mail organization.
Returns a status object with an HTTP code and description confirming whether streams were enabled.
Use this on an existing group that was created with streams disabled. Pass streamsEnabled directly on zohomail_group_create instead when creating a new group.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique identifier (zgid) of the mail group to enable streams on. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_moderate_emails`

Moderate Group Emails · Write

Approve or reject one or more emails held for moderation in a Zoho Mail group.
Returns a status object confirming the moderation outcome; accepted emails are delivered to group members and rejected ones are discarded.
Use zohomail_group_list_emails_held_moderation first to find the message IDs to moderate, and zohomail_group_get_moderation_email_content to inspect one before deciding.
Requires the organization ID (zoid) and the group ID (zgid).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `messageList` (`array`, required): List of one or more held message IDs to moderate in this call, all receiving the same status. Obtain the IDs from zohomail_group_list_emails_held_moderation. Example: ["1234567000000012345", "1234567000000012346"].
- `status` (`string`, required): Outcome to apply to every message in messageList. 'accept' delivers the message(s) to group members; 'reject' discards them. One of: `accept`, `reject`.
- `zgid` (`string`, required): Unique identifier (zgid) of the moderated mail group that holds the messages. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"messageList":["1234567000000012345","1234567000000012346"],"status":"accept","zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_remove_email_alias`

Remove Group Email Alias · Write

Remove one or more email aliases from a Zoho Mail organization group.
Returns a status object confirming the aliases were removed.
Use this to revoke email addresses a group can receive mail at. Use zohomail_group_add_email_alias to add aliases instead.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `aliases` (`array`, required): Array of one or more alias email addresses to remove from the group. Example: ["sales-alias@example.com", "support-alias@example.com"]
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group to remove aliases from. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"aliases":["sales-alias@example.com","support-alias@example.com"],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_update_advanced_admin_settings`

Update Advanced Admin Settings · Write

Update a Zoho Mail organization group's access type and advanced admin settings, such as moderation, notifications, and send permissions.
Returns a status object confirming the update.
Use this to configure group-wide access control and moderator behavior. Use zohomail_group_update_member_role to change an individual member's role instead.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `access_type` (`string`, required): Who can send mail to this group. 'Public' allows anyone, 'Organization' restricts to members of the organization, 'Group' restricts to group members only, and 'Moderated' requires moderator approval for every post. One of: `Public`, `Organization`, `Group`, `Moderated`.
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group whose advanced admin settings are being updated. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.
- `admin_notify` (`boolean`, optional): Whether the group administrator should be notified when a post requires moderation or is rejected. Defaults to false. Default: `false`.
- `author_notify` (`boolean`, optional): Whether the sender of a held or rejected email should be notified. Defaults to false. Default: `false`.
- `hold_or_bounce` (`string`, optional): For moderated or restricted posts, whether the email should be held for moderator approval ('hold') or rejected outright ('reject'). One of: `hold`, `reject`.
- `is_not_to_cc` (`boolean`, optional): Controls whether the group address must appear in the To/Cc fields for the mail to be delivered to the group. Defaults to false. Default: `false`.
- `mailbox_send_rights` (`boolean`, optional): Whether members of the group can send email as the group's mailbox address. Defaults to false. Default: `false`.
- `post_approved_notify` (`boolean`, optional): Whether a notification should be sent once a held post is approved. Defaults to false. Default: `false`.
- `spam_mark_permission` (`boolean`, optional): Whether group members are permitted to mark a message sent to the group as spam. Defaults to false. Default: `false`.
- `suppress_mail_on_mem_add` (`boolean`, optional): Whether the welcome/notification email that is normally sent to a member when they are added to the group should be suppressed. Defaults to false. Default: `false`.

Example input: `{"access_type":"Public","zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_update_member_role`

Update Member Role · Write

Change the role (member or moderator) of one or more members in a Zoho Mail organization group.
Returns a status object confirming the role update.
Use this to promote or demote group members. Use zohomail_group_update_member_status to change a member's active/deactive status instead.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `members` (`array`, required): Array of group members whose role should be changed. Each entry needs the member's email address and the destination role, either 'member' or 'moderator'. Example: [{"memberEmailId": "user@example.com", "role": "moderator"}]
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group whose member role is being updated. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"members":[{"memberEmailId":"user@example.com","role":"moderator"}],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_update_member_settings`

Update Member Settings · Write

Update multiple settings for one or more members of a Zoho Mail organization group in a single call, including role, status, acknowledgement, and post-approval preference.
Returns a status object confirming the settings update.
Use this when changing several member attributes at once. Use zohomail_group_update_member_status or zohomail_group_update_member_role for a single-attribute change.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `members` (`array`, required): Array of group members to update, each identified by memberEmailId. Optionally include role (member or moderator; default member), status (active or deactive), ackStatus (boolean, whether an acknowledgement email should be sent to the member), and postApproval (accept, hold, or reject). Only include the fields you want to change for each member. Example: [{"memberEmailId": "user@example.com", "role": "moderator", "status": "active", "ackStatus": true, "postApproval": "accept"}]
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group whose member settings are being updated. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"members":[{"memberEmailId":"user@example.com","role":"moderator","status":"active","ackStatus":true,"postApproval":"accept"}],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_update_member_status`

Update Member Status · Write

Update the active/deactive status of one or more members in a Zoho Mail organization group.
Returns a status object confirming the update.
Use this to activate or deactivate group members without changing their role. Use zohomail_group_update_member_role to change a member's role instead.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `members` (`array`, required): Array of group members whose status should be changed. Each entry needs the member's email address and the destination status, either 'active' or 'deactive'. Example: [{"memberEmailId": "user@example.com", "status": "deactive"}]
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group whose member status is being updated. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"members":[{"memberEmailId":"user@example.com","status":"deactive"}],"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_update_name`

Update Group Name · Write

Rename an existing mail group in a Zoho Mail organization.
Returns a status object with a code and description confirming whether the rename succeeded.
Use this to change a group's display name without recreating it. Use zohomail_group_add_members or zohomail_group_delete_members to change its membership instead.
Requires the organization ID (zoid) and the group ID (zgid) — obtain zgid from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, required): New display name for the group. Must be a plain string (a Zoho documentation page shows this field's type as 'long', but that is a documentation typo — group names are text, e.g. 'Engineering Team').
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group to rename. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization that owns the group. This is a Zoho-generated internal identifier, typically a large integer such as 60000000012345. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"name":"Engineering Team","zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_group_update_threshold_limit`

Update Threshold Limit · Write

Set the bounce threshold for a Zoho Mail organization group, the number of delivery failures to external members allowed before Zoho stops sending them mail.
Returns a status object confirming the update.
Use this to control how many bounced deliveries an external group member can accrue before being suppressed. Use zohomail_group_update_advanced_admin_settings for other group-wide access and notification settings.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bounce_threshold` (`integer`, required): Maximum number of email delivery failures (bounces) allowed for an external group member before Zoho Mail stops sending that member further mail from the group. Must be an integer between 1 and 100.
- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group whose bounce threshold is being updated. Obtain it by calling zohomail_group_list for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"bounce_threshold":1,"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_label_create`

Create Label · Write

Create a new label in a Zoho Mail account, optionally with a custom hex color.
Returns the new label's ID, display name, color, sequence number, tag ID, and resource URI.
Use this to add a label for organizing messages; use zohomail_label_update to rename or recolor an existing label instead of creating a duplicate.
Requires the numeric Zoho Mail account ID for the mailbox, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to create the label in. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `display_name` (`string`, required): Name to give the new label, shown in the Zoho Mail UI and used when applying the label to messages. Example: "Urgent".
- `color` (`string`, optional): Hexadecimal color for the label, such as #ff0000 for red. If omitted, Zoho Mail applies its own default label color (#ffd700, gold).

Example input: `{"account_id":"<account_id>","display_name":"Urgent"}`

### `zohomail_label_update`

Update Label · Write

Update the name or color of an existing label in a Zoho Mail account.
Returns HTTP 200 with a success message when the update succeeds.
Use this to rename a label or change its color; use zohomail_label_create to add a new label instead of updating one.
Requires the label ID (obtained from zohomail_label_list) and the numeric Zoho Mail account ID (obtained from zohomail_account_list_user).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the label belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`string`, required): Numeric ID of the label to update, as returned in the labelId field by zohomail_label_list or zohomail_label_create. Example: 4000000012345.
- `color` (`string`, optional): New hexadecimal color for the label, such as #00aaff. Leave unset to keep the label's current color. Provide at least one of Label Name or Color.
- `display_name` (`string`, optional): New name for the label. Leave unset to keep the label's current name. Provide at least one of Label Name or Color.

Example input: `{"account_id":"<account_id>","label_id":"<label_id>"}`

### `zohomail_log_get_smtp`

Get SMTP Logs · Write

Search SMTP delivery logs for a Zoho Mail organization by message ID, sender address, or recipient address within a time range.
Returns SMTP transaction log entries with delivery status and sender/recipient details, plus pagination keys for paging forward and backward through the result set.
Use this for SMTP delivery/transaction logs; use zohomail_log_get_audit_records for administrative action audit trails, or zohomail_log_get_login_history for user sign-in activity.
Requires the organization's zoid and org admin authorization with the partner organization scope; obtain zoid from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `fromDateTime` (`integer`, required): Start of the search range, as a Unix timestamp in milliseconds.
- `searchCriteria` (`string`, required): Which field to search on: 'messageId' to look up a specific message, 'fromAddr' to filter by sender address, or 'toAddr' to filter by recipient address. One of: `messageId`, `fromAddr`, `toAddr`.
- `searchKey` (`string`, required): The value to search for, matched against the field chosen in searchCriteria — a message ID, sender email address, or recipient email address.
- `toDateTime` (`integer`, required): End of the search range, as a Unix timestamp in milliseconds.
- `zoid` (`string`, required): The unique Zoho Organization Identifier (zoid) for the organization whose SMTP logs to search. Obtain it from Zoho Mail's Get Organization Details endpoint (zohomail_org_get_organization).
- `isNext` (`boolean`, optional): Set to true to retrieve the next page of results using the pageKey returned in the previous response; set to false (the default) for the initial request. Default: `false`.
- `isPrevious` (`boolean`, optional): Set to true to retrieve the previous page of results using the prevKey returned in the previous response; set to false (the default) for the initial request. Default: `false`.
- `isReverseSearch` (`boolean`, optional): Sort order for the results: true sorts ascending (oldest first), false (the default) sorts descending (most recent first). Default: `false`.
- `limit` (`integer`, optional): Maximum number of SMTP log entries to return, from 1 to 500. Defaults to 10. Default: `10`.
- `pageKey` (`string`, optional): Pagination key returned in the previous response's pageKey field. Provide it together with isNext=true to fetch the next page; leave empty for the initial request. Default: ``.
- `prevKey` (`string`, optional): Pagination key returned in the previous response's pagePrevKey field. Provide it together with isPrevious=true to fetch the previous page; leave empty for the initial request. Default: ``.

Example input: `{"fromDateTime":1,"searchCriteria":"messageId","searchKey":"<searchKey>","toDateTime":1,"zoid":"<zoid>"}`

### `zohomail_message_apply_labels_emails`

Apply Labels to Emails · Write

Apply one or more labels to Zoho Mail email messages, optionally including an entire thread.
Returns a status object confirming the labels were applied.
Use this to tag messages for organization; provide either message IDs or thread IDs, and pass one or more label IDs to apply. Use zohomail_message_remove_labels_emails to remove specific labels instead.
Requires the account ID from zohomail_account_list_user, label IDs from Zoho Mail's label list, and message or thread IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`array`, required): One or more numeric label IDs to apply to the targeted messages. Obtain label IDs from Zoho Mail's label list for this account. Example: ["6000000056789"].
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the labeling action to. Only messages present in this folder are considered when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether archived emails should be included when resolving the messages or threads to label. Default: false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this labeling action should be scoped to only the messages of the given thread(s) that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.
- `message_ids` (`array`, optional): One or more numeric email message IDs to apply labels to. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000034567"].
- `thread_ids` (`array`, optional): One or more thread IDs to apply labels to instead of individual messages; applies the labels to every message in each thread. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>","label_id":["6000000056789"]}`

### `zohomail_message_archive_email`

Archive Email · Write

Archive one or more Zoho Mail email messages, optionally including an entire thread.
Returns a status object confirming the messages were archived.
Use this to remove messages from the inbox view without deleting them; pass thread_ids as well to archive every message in the thread.
Requires the account ID from zohomail_account_list_user, and message IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `message_ids` (`array`, required): One or more numeric email message IDs to archive. Obtain them from zohomail_message_list_search_results. Example: ["6000000034567"].
- `thread_ids` (`array`, optional): One or more thread IDs to archive instead of individual messages; archives every message in each thread. Obtain them from zohomail_message_list_search_results. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>","message_ids":["6000000034567"]}`

### `zohomail_message_flag_emails`

Flag Emails · Write

Set or clear a flag on one or more Zoho Mail email messages, optionally including an entire thread.
Returns a status object confirming the flag was applied.
Use this to mark messages as important, follow-up, or informational, or to clear an existing flag; pass thread_ids as well to flag every message in the thread.
Requires the account ID from zohomail_account_list_user, and message IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `flagid` (`string`, required): The flag to set on the messages. Choose "info" for an informational flag, "important" to mark important, "followup" to mark for follow-up, or "flag_not_set" to clear any existing flag. Example: "important". One of: `info`, `important`, `followup`, `flag_not_set`.
- `message_ids` (`array`, required): One or more numeric email message IDs to flag. Obtain them from zohomail_message_list_search_results. Example: ["6000000034567"].
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the flag action to. Only messages present in this folder are considered when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether archived emails should be included when resolving the messages or threads to flag. Default: false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this flag action should be scoped to only the messages of the given thread(s) that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.
- `thread_ids` (`array`, optional): One or more thread IDs to flag as well, applying the flag to every message in each thread. Obtain them from zohomail_message_list_search_results. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>","flagid":"important","message_ids":["6000000034567"]}`

### `zohomail_message_mark_email_not_spam`

Mark Email As Not Spam · Write

Mark one or more Zoho Mail messages or threads as not spam, moving them out of the Spam folder.
Returns a status object confirming success.
Use this to reverse a spam flag; use zohomail_message_mark_email_spam to mark mail as spam, or zohomail_message_unarchive_email to restore archived mail instead.
Requires the numeric Zoho Mail account ID from zohomail_account_list_user, and either message IDs or thread IDs from the list emails endpoint.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages to unmark as spam. This is a Zoho-generated internal identifier, not the user's email address, and is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope this action to. Required when is_folder_specific is true. Obtain it from zohomail_folder_list. Example: 116732000000008010.
- `is_folder_specific` (`boolean`, optional): Whether to limit this action to messages within a single folder. When true, folder_id must also be provided and is required. Defaults to false. Default: `false`.
- `message_ids` (`array`, optional): Array of message IDs to mark as not spam, as strings (Zoho message IDs are large integers that should be passed as strings to avoid precision loss). Either message_ids or thread_ids is required. Example: ["1198000000006002"].
- `thread_ids` (`array`, optional): Array of thread IDs to mark as not spam, as strings, as an alternative to message_ids for marking entire threads at once. Either message_ids or thread_ids is required. Example: ["1198000000006050"].

Example input: `{"account_id":"<account_id>"}`

### `zohomail_message_mark_email_spam`

Mark Email As Spam · Write

Mark one or more Zoho Mail messages or threads as spam, moving them to the Spam folder.
Returns a status object confirming success.
Use this to flag unwanted mail as spam; use zohomail_message_mark_email_not_spam to reverse it, or zohomail_message_unarchive_email to restore archived mail instead.
Requires the numeric Zoho Mail account ID from zohomail_account_list_user, and either message IDs or thread IDs from the list emails endpoint.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages to mark as spam. This is a Zoho-generated internal identifier, not the user's email address, and is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope this action to. Required when is_folder_specific is true. Obtain it from zohomail_folder_list. Example: 116732000000008010.
- `is_folder_specific` (`boolean`, optional): Whether to limit this action to messages within a single folder. When true, folder_id must also be provided. Defaults to false. Default: `false`.
- `message_ids` (`array`, optional): Array of message IDs to mark as spam, as strings (Zoho message IDs are large integers that should be passed as strings to avoid precision loss). Either message_ids or thread_ids is required. Example: ["1198000000006002"].
- `thread_ids` (`array`, optional): Array of thread IDs to mark as spam, as strings, as an alternative to message_ids for marking entire threads at once. Either message_ids or thread_ids is required. Example: ["1198000000006050"].

Example input: `{"account_id":"<account_id>"}`

### `zohomail_message_mark_emails_read`

Mark Emails Read · Write

Mark one or more Zoho Mail email messages, or an entire thread, as read.
Returns a status object confirming the messages were marked read.
Use this instead of zohomail_message_mark_emails_unread when clearing the unread flag; provide either message IDs or thread IDs to target a whole conversation.
Requires the account ID from zohomail_account_list_user, and message or thread IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `message_ids` (`array`, optional): One or more numeric email message IDs to mark as read. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000034567"].
- `thread_ids` (`array`, optional): One or more thread IDs to mark as read; marks every message in each thread as read. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>"}`

### `zohomail_message_mark_emails_unread`

Mark Emails Unread · Write

Mark one or more Zoho Mail email messages, or an entire thread, as unread.
Returns a status object confirming the messages were marked unread.
Use this instead of zohomail_message_mark_emails_read when restoring the unread flag; provide either message IDs or thread IDs to target a whole conversation.
Requires the account ID from zohomail_account_list_user, and message or thread IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `message_ids` (`array`, optional): One or more numeric email message IDs to mark as unread. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000034567"].
- `thread_ids` (`array`, optional): One or more thread IDs to mark as unread; marks every message in each thread as unread. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>"}`

### `zohomail_message_move_emails`

Move Emails · Write

Move one or more Zoho Mail email messages, or an entire thread, into a different folder.
Returns a status object confirming the messages were moved to the destination folder.
Use this to file messages into Inbox, Trash, or a custom folder; provide either message IDs or thread IDs, and set is_folder_specific with folder_id to scope a thread move to only the messages present in one folder.
Requires the account ID from zohomail_account_list_user, the destination folder ID from zohomail_folder_list, and message or thread IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `dest_folder_id` (`string`, required): Numeric ID of the folder the messages should be moved into. Obtain it by calling zohomail_folder_list for this account first. Example: 6000000023456.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the move to. Only messages present in this folder are considered when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether archived emails should be included when resolving the messages or threads to move. Default: false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this move should be scoped to only the messages of the given thread(s) that are present in a specific folder. Set to true and also provide folder_id to restrict the move that way; otherwise leave false. Default: false. Default: `false`.
- `message_ids` (`array`, optional): One or more numeric email message IDs to move. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000034567"].
- `thread_ids` (`array`, optional): One or more thread IDs to move instead of individual messages; moves every message in each thread. Obtain them from zohomail_message_list_search_results. Provide either message_ids or thread_ids — at least one of the two is required. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>","dest_folder_id":"<dest_folder_id>"}`

### `zohomail_message_remove_all_labels_emails`

Remove All Labels from Emails · Write

Remove every label from one or more Zoho Mail email messages, optionally including an entire thread.
Returns a status object confirming all labels were removed.
Use this to strip all labels at once; use zohomail_message_remove_labels_emails instead to remove only specific labels.
Requires the account ID from zohomail_account_list_user, and message IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `message_ids` (`array`, required): One or more numeric email message IDs to remove all labels from. Obtain them from zohomail_message_list_search_results. Example: ["6000000034567"].
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the removal to. Only messages present in this folder are considered when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_folder_specific` (`boolean`, optional): Whether this removal should be scoped to only the messages of the given thread(s) that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.
- `thread_ids` (`array`, optional): One or more thread IDs to remove all labels from as well, affecting every message in each thread. Obtain them from zohomail_message_list_search_results. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>","message_ids":["6000000034567"]}`

### `zohomail_message_remove_labels_emails`

Remove Labels from Emails · Write

Remove one or more specific labels from Zoho Mail email messages, optionally including an entire thread.
Returns a status object confirming the labels were removed.
Use this to remove particular labels while leaving other labels in place; use zohomail_message_remove_all_labels_emails instead to strip every label from a message, or zohomail_message_apply_labels_emails to add labels.
Requires the account ID from zohomail_account_list_user, label IDs from Zoho Mail's label list, and message IDs from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`array`, required): One or more numeric label IDs to remove from the targeted messages. Obtain label IDs from Zoho Mail's label list for this account. Example: ["6000000056789"].
- `message_ids` (`array`, required): One or more numeric email message IDs to remove labels from. Obtain them from zohomail_message_list_search_results. Example: ["6000000034567"].
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the removal to. Only messages present in this folder are considered when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_folder_specific` (`boolean`, optional): Whether this removal should be scoped to only the messages of the given thread(s) that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.
- `thread_ids` (`array`, optional): One or more thread IDs to remove labels from as well, affecting every message in each thread. Obtain them from zohomail_message_list_search_results. Example: ["6000000098765"].

Example input: `{"account_id":"<account_id>","label_id":["6000000056789"],"message_ids":["6000000034567"]}`

### `zohomail_message_reply_email`

Reply to Email · Write

Reply to an existing email in a connected Zoho Mail account, within the same thread.
Returns the sent reply's message ID and Zoho Mail's status confirmation.
Use this to continue a thread; use zohomail_message_send_email to start a new, unrelated email.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user) and the message ID of the email being replied to (from a message-listing tool such as zohomail_message_list_search_results).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the message being replied to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `from_address` (`string`, required): Sender's email address for the reply. Must be one of the addresses associated with the authenticated Zoho Mail account.
- `message_id` (`string`, required): Unique numeric ID of the email being replied to. Obtain it from a message-listing tool such as zohomail_message_list_search_results.
- `to_address` (`string`, required): Recipient email address(es) for the reply. For multiple recipients, separate addresses with commas.
- `ask_receipt` (`string`, optional): Whether to request a read receipt from the recipient. Set to 'yes' to request one, or 'no' (or leave blank) to skip it. One of: `yes`, `no`.
- `bcc_address` (`string`, optional): Blind carbon copy recipient(s) for this reply. For multiple addresses, separate them with commas.
- `cc_address` (`string`, optional): Carbon copy recipient(s) for this reply. For multiple addresses, separate them with commas.
- `encoding` (`string`, optional): Character encoding of the reply. Defaults to UTF-8. One of: `UTF-8`, `Big5`, `EUC-JP`, `EUC-KR`, `GB2312`, `ISO-2022-JP`, `ISO-8859-1`, `KOI8-R`, `Shift_JIS`, `US-ASCII`, `WINDOWS-1251`, `X-WINDOWS-ISO2022JP`. Default: `UTF-8`.
- `is_schedule` (`boolean`, optional): Set to true to schedule this reply for later delivery instead of sending it immediately. When true, also set schedule_type (and time_zone/schedule_time for a custom time). Default: `false`.
- `mail_format` (`string`, optional): Format of the reply body. 'html' for HTML content, 'plaintext' for plain text. Defaults to html. One of: `html`, `plaintext`. Default: `html`.
- `schedule_time` (`string`, optional): Exact delivery date/time, formatted MM/DD/YYYY HH:MM:SS. Required only when schedule_type is 6 (custom).
- `schedule_type` (`integer`, optional): Preset delay for scheduled delivery, used only when is_schedule is true: 1 = 1 hour, 2 = 2 hours, 3 = 4 hours, 4 = next morning, 5 = next afternoon, 6 = custom (requires time_zone and schedule_time). One of: `1`, `2`, `3`, `4`, `5`, `6`.
- `subject` (`string`, optional): Subject line of the reply. Typically the original subject prefixed with 'Re:'.
- `time_zone` (`string`, optional): Time zone to use when scheduleType is 6 (custom), e.g. 'GMT 5:30'. Required only in that case.

Example input: `{"account_id":"<account_id>","from_address":"<from_address>","message_id":"<message_id>","to_address":"<to_address>"}`

### `zohomail_message_save_draft_template`

Save Draft or Template · Write

Save a composed email as a draft or as a reusable template in a connected Zoho Mail account, without sending it.
Returns the saved item's message ID and Zoho Mail's status confirmation.
Use mode to choose between saving a draft (including a reply draft, via in_reply_to/ref_header) or a template; use zohomail_message_send_email to send immediately instead.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to save the item under. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `from_address` (`string`, required): Sender's email address. Must be one of the addresses associated with the authenticated Zoho Mail account.
- `mode` (`string`, required): Whether to save this item as a 'draft' (a work-in-progress email you can send later) or a 'template' (a reusable message you can start new emails from). One of: `draft`, `template`.
- `to_address` (`string`, required): Recipient email address(es). For multiple recipients, separate addresses with commas.
- `ask_receipt` (`string`, optional): Whether to request a read receipt from the recipient. Set to 'yes' to request one, or 'no' (or leave blank) to skip it. One of: `yes`, `no`.
- `bcc_address` (`string`, optional): Blind carbon copy recipient(s) for this item. For multiple addresses, separate them with commas.
- `cc_address` (`string`, optional): Carbon copy recipient(s) for this item. For multiple addresses, separate them with commas.
- `content` (`string`, optional): Body content of the item, formatted according to mail_format (HTML markup if 'html', plain text if 'plaintext').
- `encoding` (`string`, optional): Character encoding of the item. Defaults to UTF-8. One of: `UTF-8`, `Big5`, `EUC-JP`, `EUC-KR`, `GB2312`, `ISO-2022-JP`, `ISO-8859-1`, `KOI8-R`, `Shift_JIS`, `US-ASCII`, `WINDOWS-1251`, `X-WINDOWS-ISO2022JP`. Default: `UTF-8`.
- `in_reply_to` (`string`, optional): The Message-ID header value of the email being replied to. Required only when saving a reply draft (i.e. this draft continues an existing thread).
- `mail_format` (`string`, optional): Format of the item's body. 'html' for HTML content, 'plaintext' for plain text. Defaults to html. One of: `html`, `plaintext`. Default: `html`.
- `ref_header` (`string`, optional): Message-IDs of every prior email in the thread, space-separated in chronological order. Required only for a threaded reply draft, alongside in_reply_to.
- `subject` (`string`, optional): Subject line of the item.

Example input: `{"account_id":"<account_id>","from_address":"<from_address>","mode":"draft","to_address":"<to_address>"}`

### `zohomail_message_send_email`

Send Email · Write

Send an email immediately from a connected Zoho Mail account, or schedule it for later delivery.
Returns the created message's ID and Zoho Mail's status confirmation.
Use this for a plain email with no file attachments; use zohomail_message_send_email_attachment to include previously uploaded attachments, or zohomail_message_reply_email to reply within an existing thread.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to send from. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `from_address` (`string`, required): Sender's email address. Must be one of the addresses associated with the authenticated Zoho Mail account.
- `to_address` (`string`, required): Recipient email address(es). For multiple recipients, separate addresses with commas.
- `ask_receipt` (`string`, optional): Whether to request a read receipt from the recipient. Set to 'yes' to request one, or 'no' (or leave blank) to skip it. One of: `yes`, `no`.
- `bcc_address` (`string`, optional): Blind carbon copy recipient(s) for this email. For multiple addresses, separate them with commas.
- `cc_address` (`string`, optional): Carbon copy recipient(s) for this email. For multiple addresses, separate them with commas.
- `content` (`string`, optional): Body content of the email, formatted according to mail_format (HTML markup if 'html', plain text if 'plaintext').
- `encoding` (`string`, optional): Character encoding of the email. Defaults to UTF-8. One of: `UTF-8`, `Big5`, `EUC-JP`, `EUC-KR`, `GB2312`, `ISO-2022-JP`, `ISO-8859-1`, `KOI8-R`, `Shift_JIS`, `US-ASCII`, `WINDOWS-1251`, `X-WINDOWS-ISO2022JP`. Default: `UTF-8`.
- `is_schedule` (`boolean`, optional): Set to true to schedule this email for later delivery instead of sending it immediately. When true, also set schedule_type (and time_zone/schedule_time for a custom time). Default: `false`.
- `mail_format` (`string`, optional): Format of the email body. 'html' for HTML content, 'plaintext' for plain text. Defaults to html. One of: `html`, `plaintext`. Default: `html`.
- `schedule_time` (`string`, optional): Exact delivery date/time, formatted MM/DD/YYYY HH:MM:SS. Required only when schedule_type is 6 (custom).
- `schedule_type` (`integer`, optional): Preset delay for scheduled delivery, used only when is_schedule is true: 1 = 1 hour, 2 = 2 hours, 3 = 4 hours, 4 = next morning, 5 = next afternoon, 6 = custom (requires time_zone and schedule_time). One of: `1`, `2`, `3`, `4`, `5`, `6`.
- `subject` (`string`, optional): Subject line of the email.
- `time_zone` (`string`, optional): Time zone to use when scheduleType is 6 (custom), e.g. 'GMT 5:30'. Required only in that case.

Example input: `{"account_id":"<account_id>","from_address":"<from_address>","to_address":"<to_address>"}`

### `zohomail_message_send_email_attachment`

Send Email with Attachment · Write

Send an email with one or more previously uploaded attachments from a connected Zoho Mail account.
Returns the created message's ID and Zoho Mail's status confirmation.
Use this when the email needs file attachments; use zohomail_message_send_email for a plain email with no attachments.
Requires the numeric Zoho Mail account ID (from zohomail_account_list_user) and each attachment's storeName, attachmentPath, and attachmentName, obtained by first uploading the file via Zoho Mail's Upload Attachment endpoint.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to send from. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `from_address` (`string`, required): Sender's email address. Must be one of the addresses associated with the authenticated Zoho Mail account.
- `to_address` (`string`, required): Recipient email address(es). For multiple recipients, separate addresses with commas.
- `ask_receipt` (`string`, optional): Whether to request a read receipt from the recipient. Set to 'yes' to request one, or 'no' (or leave blank) to skip it. One of: `yes`, `no`.
- `attachments` (`array`, optional): Files to attach, each referencing a file already uploaded via Zoho Mail's Upload Attachment endpoint. Each entry is an object with storeName, attachmentPath, and attachmentName. Example: [{"storeName": "zm123456", "attachmentPath": "/1/1234000000012345", "attachmentName": "invoice.pdf"}].
- `bcc_address` (`string`, optional): Blind carbon copy recipient(s) for this email. For multiple addresses, separate them with commas.
- `cc_address` (`string`, optional): Carbon copy recipient(s) for this email. For multiple addresses, separate them with commas.
- `content` (`string`, optional): Body content of the email, formatted according to mail_format (HTML markup if 'html', plain text if 'plaintext').
- `encoding` (`string`, optional): Character encoding of the email. Defaults to UTF-8. One of: `UTF-8`, `Big5`, `EUC-JP`, `EUC-KR`, `GB2312`, `ISO-2022-JP`, `ISO-8859-1`, `KOI8-R`, `Shift_JIS`, `US-ASCII`, `WINDOWS-1251`, `X-WINDOWS-ISO2022JP`. Default: `UTF-8`.
- `is_schedule` (`boolean`, optional): Set to true to schedule this email for later delivery instead of sending it immediately. When true, also set schedule_type (and time_zone/schedule_time for a custom time). Default: `false`.
- `mail_format` (`string`, optional): Format of the email body. 'html' for HTML content, 'plaintext' for plain text. Defaults to html. One of: `html`, `plaintext`. Default: `html`.
- `schedule_time` (`string`, optional): Exact delivery date/time, formatted MM/DD/YYYY HH:MM:SS. Required only when schedule_type is 6 (custom).
- `schedule_type` (`integer`, optional): Preset delay for scheduled delivery, used only when is_schedule is true: 1 = 1 hour, 2 = 2 hours, 3 = 4 hours, 4 = next morning, 5 = next afternoon, 6 = custom (requires time_zone and schedule_time). One of: `1`, `2`, `3`, `4`, `5`, `6`.
- `subject` (`string`, optional): Subject line of the email.
- `time_zone` (`string`, optional): Time zone to use when scheduleType is 6 (custom), e.g. 'GMT 5:30'. Required only in that case.

Example input: `{"account_id":"<account_id>","from_address":"<from_address>","to_address":"<to_address>"}`

### `zohomail_message_unarchive_email`

Unarchive Email · Write

Unarchive one or more Zoho Mail messages, or an entire thread, moving them out of the Archive folder.
Returns a status object confirming success.
Use this to restore archived mail; use zohomail_message_mark_email_spam or zohomail_message_mark_email_not_spam for spam handling instead.
Requires the numeric Zoho Mail account ID from zohomail_account_list_user, and message (or thread) IDs from the list emails endpoint.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the messages to unarchive. This is a Zoho-generated internal identifier, not the user's email address, and is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `message_ids` (`array`, required): Array of message IDs to unarchive, as strings (Zoho message IDs are large integers that should be passed as strings to avoid precision loss). Retrieve these from the list emails endpoint. Example: ["1198000000006002"].
- `thread_ids` (`array`, optional): Array of thread IDs to unarchive as strings, as an alternative to message_ids for unarchiving entire threads at once. Example: ["1198000000006050"].

Example input: `{"account_id":"<account_id>","message_ids":["1198000000006002"]}`

### `zohomail_note_create`

Create Note · Write

Create a note in a Zoho Mail notes group, optionally filed under a notebook and tagged with labels.
Returns the new note's entityId and resource URI.
Use zohomail_note_create to add a new note. Use zohomail_note_list to browse existing notes in the group instead.
Requires the group ID — obtain from zohomail_note_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): Body content of the note. This field is required and cannot be empty.
- `group_id` (`string`, required): Unique ID of the notes group the note belongs to. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_note_list_groups for this connection first.
- `book_id` (`string`, optional): Unique ID of the notebook (book) to associate this note with. Optional — omit to leave the note unfiled. Obtain from zohomail_note_list_books.
- `color` (`integer`, optional): Color to apply to the note. Valid values: 0=Blue, 1=Green, 2=Yellow, 3=Red. Leave unset to use Zoho Mail's default note color. One of: `0`, `1`, `2`, `3`.
- `tag_id` (`array`, optional): One or more label (tag) IDs to attach to the note, as a JSON array of ID strings. Optional. Obtain tag IDs from zohomail_label_list.
- `title` (`string`, optional): Title to give the note. Optional — the note can be created without one.

Example input: `{"content":"<p>Best regards,<br>Jane Doe<br>Support Team</p>","group_id":"<group_id>"}`

### `zohomail_note_create_book`

Create Notebook · Write

Create a new notebook (book) within a Zoho Mail notes group.
Returns the created book's name and assigned bookId.
Use zohomail_note_create_book to set up a new notebook for organizing notes. Use zohomail_note_list_books to check existing notebooks first.
Requires the group ID — obtain from zohomail_note_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `book_name` (`string`, required): Name to give the new notebook. Required.
- `group_id` (`string`, required): Unique ID of the notes group to create the notebook in. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_note_list_groups for this connection first.

Example input: `{"book_name":"<book_name>","group_id":"<group_id>"}`

### `zohomail_note_edit`

Edit Note · Write

Update the title, content, color, or notebook assignment of an existing note in Zoho Mail Notes.
Returns a status object confirming the note was updated.
Use this to change an existing note's content or metadata; use zohomail_note_mark_favorite or zohomail_note_unmark_favorite to change only its favorite flag instead.
Requires the group ID from zohomail_note_list_groups and the note ID from zohomail_note_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `content` (`string`, required): New content for the note. This field cannot be empty — it always overwrites the note's existing content.
- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note to update. Obtain it by calling zohomail_note_list for this group first.
- `book_id` (`string`, optional): Unique ID of the notebook (book) to move this note into. Leave blank to keep the note in its current notebook. Obtain it by calling zohomail_note_list_books for this group first.
- `color` (`integer`, optional): New color designation for the note: 0=Blue, 1=Green, 2=Yellow, 3=Red. Leave blank to keep the note's existing color. One of: `0`, `1`, `2`, `3`.
- `tag_ids` (`array`, optional): Array of label (tag) IDs to attach to the note, replacing any existing tags. Leave blank to keep the note's existing tags. Obtain label IDs by calling zohomail_label_list first. Example: ["190000000011111","190000000022222"].
- `title` (`string`, optional): New title for the note. Leave blank to keep the note's existing title.

Example input: `{"content":"<p>Best regards,<br>Jane Doe<br>Support Team</p>","group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_note_edit_book`

Edit Book · Write

Rename an existing notebook (book) in Zoho Mail Notes.
Returns a status object confirming the rename, including the notebook's updated name and ID.
Use this to rename an existing notebook; use zohomail_note_create_book to create a new one instead.
Requires the group ID from zohomail_note_list_groups and the book ID from zohomail_note_list_books.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `book_id` (`string`, required): Unique ID of the notebook (book) to rename. Obtain it by calling zohomail_note_list_books for this group first.
- `book_name` (`string`, required): New name for the notebook.
- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the notebook. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.

Example input: `{"book_id":"<book_id>","book_name":"<book_name>","group_id":"<group_id>"}`

### `zohomail_note_mark_favorite`

Mark Note Favorite · Write

Mark a note as a favorite in Zoho Mail Notes.
Returns a status object confirming the note was marked as a favorite.
Use this to flag an important note for quick access; use zohomail_note_unmark_favorite to remove the favorite flag instead.
Requires the group ID from zohomail_note_list_groups and the note ID from zohomail_note_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note to mark as a favorite. Obtain it by calling zohomail_note_list for this group first.

Example input: `{"group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_org_add_allowed_ips`

Add Allowed IPs · Write

Add one or more allowed IP address ranges that Zoho Mail organization users, admins, or the super admin can sign in from.
Returns the IP ranges that were added successfully, plus a list of any entries that failed to add.
Use this to expand an organization's sign-in IP allowlist.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `allowed_ips` (`array`, required): List of allowed IP-range entries to add. Each entry is an object with fromIpRange (start of the range), toIpRange (end of the range), and roleId (0=Users, 1=Admins, 2=Super Admin, -1=all members). Example: [{"fromIpRange": "192.168.1.1", "toIpRange": "192.168.1.255", "roleId": 0}]
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization to add allowed IPs to. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"allowed_ips":[{"fromIpRange":"192.168.1.1","toIpRange":"192.168.1.255","roleId":0}],"zoid":"<zoid>"}`

### `zohomail_org_add_child_organization`

Add Child Organization · Write

Create a new child organization under a Zoho Mail partner account, complete with its own domain, super admin, and subscription plan.
Returns the created organization's zoid, domain name, super admin email, license counts, and verification status.
Use this to provision a brand-new child organization; use zohomail_org_get_organization to fetch details of one that already exists.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `domain_name` (`string`, required): Domain name to register for the new child organization, e.g. example-corp.com. This becomes the primary mail domain for the organization.
- `email_id` (`string`, required): Email address of the super admin account to create for the new child organization. Must be a valid email on the domain being registered.
- `first_name` (`string`, required): First name of the super admin for the new child organization.
- `last_name` (`string`, required): Last name of the super admin for the new child organization.
- `org_name` (`string`, required): Display name of the new child organization.
- `password` (`string`, required): Password to set for the new super admin account. Treat as sensitive.
- `plan_name` (`string`, optional): Enrolled plan type for the new organization. One of basicTrial, professionalTrial, mailPremiumTrial, or free. Leave unset to use Zoho's default plan. One of: `basicTrial`, `professionalTrial`, `mailPremiumTrial`, `free`.

Example input: `{"domain_name":"<domain_name>","email_id":"<email_id>","first_name":"<first_name>","last_name":"<last_name>","org_name":"<org_name>","password":"<password>"}`

### `zohomail_org_update_spam_listing`

Update Org Spam Listing · Write

Add or update entries in a Zoho Mail organization's anti-spam listing, such as whitelisted or blocked emails, domains, IPs, or top-level domains.
Returns a status object confirming the spam listing was added or updated successfully.
Use this to manage individual allow/block-list entries; use zohomail_org_update_spam_process_type to change the org-wide spam processing strategy instead. Use zohomail_org_get_spam_listing to review current entries first.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `spam_category` (`string`, required): The type of spam listing to add or update, e.g. whiteListEmail, spamEmail, rejectDomain, quarantineIP, spamTLD. One of: `whiteListEmail`, `spamEmail`, `rejectEmail`, `quarantineEmail`, `trustedEmail`, `whiteListDomain`, `spamDomain`, `rejectDomain`, `quarantineDomain`, `trustedDomain`, `whiteListIP`, `spamIP`, `rejectIP`, `quarantineIP`, `spamTLD`, `rejectTLD`, `quarantineTLD`, `recipientSpamEmail`, `recipientRejectEmail`, `recipientQuarantineEmail`.
- `values` (`array`, required): Email addresses, domains, or IP addresses to add or update for the selected spam category. Example: ["spam@example.com", "baddomain.com"]
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"spam_category":"spamEmail","values":["spam@example.com","baddomain.com"],"zoid":"<zoid>"}`

### `zohomail_org_update_spam_process_type`

Update Org Spam Process Type · Write

Update how a Zoho Mail organization processes suspected spam, such as filtering by full message content, sender, or sender header, or turning spam processing off.
Returns a status object confirming the update completed successfully.
Use this to change the organization-wide spam processing strategy; use zohomail_org_update_spam_listing to manage individual allow/block entries instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `spam_process_type` (`string`, required): The spam process to apply for the organization. One of Off (disable spam processing), complete, content, sender, or sender_header. One of: `Off`, `complete`, `content`, `sender`, `sender_header`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.

Example input: `{"spam_process_type":"Off","zoid":"<zoid>"}`

### `zohomail_org_update_user_storage`

Update User Storage · Write

Update a Zoho Mail user's base storage plan or add extra storage add-ons.
Returns a status object confirming the storage update completed successfully.
Use mode=updateBaseStorage with plan_type to change the base plan, or mode=updateExtraStorage with add_on_type to add extra storage; use zohomail_org_get_user_storage to check current usage first.
Requires the organization's zoid and the user's zuid, obtained from zohomail_org_get_organization and Zoho Mail's User Account Details endpoint respectively.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mode` (`string`, required): Which storage update operation to perform: updateBaseStorage changes the user's base plan (requires plan_type), or updateExtraStorage adds storage add-ons (requires add_on_type). One of: `updateBaseStorage`, `updateExtraStorage`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization. Obtain it by calling zohomail_org_get_organization first.
- `zuid` (`string`, required): Unique Zoho User Identifier (zuid) for the user whose storage to update. Obtain it from Zoho Mail's User Account Details endpoint.
- `add_on_type` (`array`, optional): Required when mode is updateExtraStorage; ignored otherwise. Add-on storage units in 'Xgb:quantity' format, e.g. ["25gb:1", "5gb:2"]. Valid size values: 5gb, 25gb, 50gb, 100gb, 200gb.
- `plan_type` (`string`, optional): Required when mode is updateBaseStorage; ignored otherwise. The new base storage plan for the user. One of newMail5gb, newMail10gb, mailPremium, basic, professional. One of: `newMail5gb`, `newMail10gb`, `mailPremium`, `basic`, `professional`.

Example input: `{"mode":"updateBaseStorage","zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_policy_add_allowed_ips_access_restriction`

Add Allowed IPs to Access Restriction · Write

Add allowed IP address ranges to a Zoho Mail organization access restriction.
Returns a success confirmation once the ranges are added.
Use this to widen an access restriction's allowlist without recreating it; the ranges are appended to any already on the restriction.
Requires an access restriction ID — get one from zohomail_policy_list_access_restrictions.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `access_restriction_id` (`string`, required): Unique identifier of the access restriction to add allowed IP ranges to. Obtain it by calling zohomail_policy_list_access_restrictions for this organization first.
- `ip_restriction` (`array`, required): The IP ranges to allow, as an array of objects. Each object needs a startIP and endIP marking the beginning and end of an allowed IP address range, and may include a description noting what the range is for. Example: [{"startIP": "192.168.1.1", "endIP": "192.168.1.255", "description": "Office network"}].
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"access_restriction_id":"<access_restriction_id>","ip_restriction":[{"startIP":"192.168.1.1","endIP":"192.168.1.255","description":"Office network"}],"zoid":"<zoid>"}`

### `zohomail_policy_apply_users_groups`

Apply Policy to Users/Groups · Write

Apply a Zoho Mail organization mail policy to one or more users or groups.
Returns a success confirmation once the policy assignment is saved.
Use this to move users or groups onto a different policy; use zohomail_policy_get_users or zohomail_policy_get_groups to see who a policy currently covers.
Requires a policy ID from zohomail_policy_list_policies, plus user IDs from zohomail_user_list_org and/or group IDs from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `policy_id` (`string`, required): Unique identifier of the mail policy to apply. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `user_list` (`array`, required): IDs of the users and/or groups to move onto this policy. Each entry is either a user's Zoho user ID (zuid), obtainable from zohomail_user_list_org, or a group's Zoho group ID (zgid), obtainable from zohomail_group_list. Mixing user and group IDs in the same call is supported. Example: ["60000000000011111", "60000000000022222"].
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"policy_id":"<policy_id>","user_list":["60000000000011111","60000000000022222"],"zoid":"<zoid>"}`

### `zohomail_policy_assign_access_restriction`

Assign Access Restriction to Policy · Write

Assign an access restriction to a Zoho Mail organization mail policy.
Returns a success confirmation once the restriction is linked to the policy.
Use this after creating or choosing an access restriction to enforce it on everyone the policy applies to; use zohomail_policy_assign_email_restriction, zohomail_policy_assign_account_restriction, or zohomail_policy_assign_forward_restriction for the other restriction types.
Requires a policy ID from zohomail_policy_list_policies and a restriction ID from zohomail_policy_list_access_restrictions.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `org_mail_restriction_id` (`string`, required): Unique identifier of the access restriction to assign to the policy. Obtain it by calling zohomail_policy_list_access_restrictions for this organization first.
- `policy_id` (`string`, required): Unique identifier of the mail policy to update. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"org_mail_restriction_id":"<org_mail_restriction_id>","policy_id":"<policy_id>","zoid":"<zoid>"}`

### `zohomail_policy_assign_account_restriction`

Assign Account Restriction to Policy · Write

Assign an account restriction to a Zoho Mail organization mail policy.
Returns a success confirmation once the restriction is linked to the policy.
Use this after creating or choosing an account restriction to enforce it on everyone the policy applies to; use zohomail_policy_assign_email_restriction, zohomail_policy_assign_access_restriction, or zohomail_policy_assign_forward_restriction for the other restriction types.
Requires a policy ID from zohomail_policy_list_policies and a restriction ID from zohomail_policy_list_account_restrictions.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `org_mail_restriction_id` (`string`, required): Unique identifier of the account restriction to assign to the policy. Obtain it by calling zohomail_policy_list_account_restrictions for this organization first.
- `policy_id` (`string`, required): Unique identifier of the mail policy to update. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"org_mail_restriction_id":"<org_mail_restriction_id>","policy_id":"<policy_id>","zoid":"<zoid>"}`

### `zohomail_policy_assign_email_restriction`

Assign Email Restriction to Policy · Write

Assign an email restriction to a Zoho Mail organization mail policy.
Returns a success confirmation once the restriction is linked to the policy.
Use this after creating or choosing an email restriction to enforce it on everyone the policy applies to; use zohomail_policy_assign_account_restriction, zohomail_policy_assign_access_restriction, or zohomail_policy_assign_forward_restriction for the other restriction types.
Requires a policy ID from zohomail_policy_list_policies and a restriction ID from zohomail_policy_list_email_restrictions.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `org_mail_restriction_id` (`string`, required): Unique identifier of the email restriction to assign to the policy. Obtain it by calling zohomail_policy_list_email_restrictions for this organization first.
- `policy_id` (`string`, required): Unique identifier of the mail policy to update. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"org_mail_restriction_id":"<org_mail_restriction_id>","policy_id":"<policy_id>","zoid":"<zoid>"}`

### `zohomail_policy_assign_forward_restriction`

Assign Forward Restriction to Policy · Write

Assign a mail forward restriction to a Zoho Mail organization mail policy.
Returns a success confirmation once the restriction is linked to the policy.
Use this after creating or choosing a forward restriction to enforce it on everyone the policy applies to; use zohomail_policy_assign_email_restriction, zohomail_policy_assign_account_restriction, or zohomail_policy_assign_access_restriction for the other restriction types.
Requires a policy ID from zohomail_policy_list_policies and a restriction ID from zohomail_policy_list_forward_restrictions.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `org_mail_restriction_id` (`string`, required): Unique identifier of the forward restriction to assign to the policy. Obtain it by calling zohomail_policy_list_forward_restrictions for this organization first.
- `policy_id` (`string`, required): Unique identifier of the mail policy to update. Obtain it by calling zohomail_policy_list_policies for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the Zoho Mail organization. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"org_mail_restriction_id":"<org_mail_restriction_id>","policy_id":"<policy_id>","zoid":"<zoid>"}`

### `zohomail_policy_create_access_restriction`

Create Access Restriction · Write

Create an access restriction rule for a Zoho Mail organization.
Returns the created restriction's ID and name.
Use this to control access channels such as IMAP, POP, ActiveSync, or webmail login that can later be attached to a mail policy. Use zohomail_policy_create_forward_restriction to restrict mail forwarding instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `restriction_name` (`string`, required): Name to assign to the new access restriction. Must be unique within the organization and should describe what the restriction is for, since it will be shown when attaching the restriction to a policy. Example: "Disable POP Access".
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization the restriction is created in. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"restriction_name":"Disable POP Access","zoid":"<zoid>"}`

### `zohomail_policy_create_account_restriction`

Create Account Restriction · Write

Create an account restriction rule for a Zoho Mail organization.
Returns the created restriction's ID and name.
Use this to define account-level restrictions such as external IMAP/POP access, mailbox sharing, or storage limits that can later be attached to a mail policy. Use zohomail_policy_create_email_restriction for email-address/domain rules instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `restriction_name` (`string`, required): Name to assign to the new account restriction. Must be unique within the organization and should describe what the restriction is for, since it will be shown when attaching the restriction to a policy. Example: "No External IMAP".
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization the restriction is created in. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"restriction_name":"No External IMAP","zoid":"<zoid>"}`

### `zohomail_policy_create_email_restriction`

Create Email Restriction · Write

Create an email restriction rule for a Zoho Mail organization.
Returns the created restriction's ID and name.
Use this to define incoming/outgoing domain, attachment, subject, or address restrictions that can later be attached to a mail policy. Use zohomail_policy_create_account_restriction, zohomail_policy_create_access_restriction, or zohomail_policy_create_forward_restriction for other restriction types.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `restriction_name` (`string`, required): Name to assign to the new email restriction. Must be unique within the organization and should describe what the restriction is for, since it will be shown when attaching the restriction to a policy. Example: "Block External Attachments".
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization the restriction is created in. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"restriction_name":"Block External Attachments","zoid":"<zoid>"}`

### `zohomail_policy_create_forward_restriction`

Create Forward Restriction · Write

Create a mail forwarding restriction rule for a Zoho Mail organization.
Returns the created restriction's ID and name.
Use this to control whether users can auto-forward mail to external addresses, then attach the restriction to a mail policy. Use zohomail_policy_create_access_restriction for login/protocol access controls instead.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `restriction_name` (`string`, required): Name to assign to the new forward restriction. Must be unique within the organization and should describe what the restriction is for, since it will be shown when attaching the restriction to a policy. Example: "No External Auto-Forward".
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization the restriction is created in. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"restriction_name":"No External Auto-Forward","zoid":"<zoid>"}`

### `zohomail_policy_create_org`

Create Org Policy · Write

Create a new mail policy for a Zoho Mail organization.
Returns the created policy's ID and name.
Use this to define a reusable policy container before adding restriction rules with zohomail_policy_create_email_restriction and related tools, or assigning it to users or groups.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `policy_name` (`string`, required): Name to assign to the new mail policy. Must be unique within the organization and should describe what the policy is for, since it will be shown when assigning the policy to users or groups. Example: "Sales Team Policy".
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization the policy is created in. This is a Zoho-generated numeric ID, not the organization's domain or display name. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"policy_name":"Sales Team Policy","zoid":"<zoid>"}`

### `zohomail_signature_add_admin_added_user`

Add Admin-Added User Signature · Write

Create a user-level email signature for another user in a Zoho Mail organization, as an org admin.
Returns the created signature's id, name, content, signature type, and position.
Use this when an admin sets up a signature on behalf of a user. Use zohomail_signature_add_user instead when a user is adding their own signature. This endpoint creates user-level signatures only; organization-level signatures are not supported here.
Requires the organization's zoid and the target user's zuid — obtain from zohomail_org_get_organization and zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): HTML content of the signature, as it will appear appended to the user's outgoing messages. Example: "Best regards,<br>Jane Doe<br>Support Team
".
- `name` (`string`, required): Name to give the new signature, used to identify it among the user's other signatures. Example: "Support Signature".
- `position` (`integer`, required): Placement of the signature relative to quoted content when the user replies or forwards. Use 0 to place the signature below the quoted content, or 1 to place it above the quoted content. One of: `0`, `1`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the target user. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho User Identifier (zuid) for the user the signature is being created for. Obtain it by calling zohomail_user_list_org for this organization first.
- `assignUsers` (`array`, optional): Email addresses of users this signature should be assigned to, beyond the target user. Optional — provide as an array of strings. Example: ["jane@company.com", "john@company.com"].

Example input: `{"content":"<p>Best regards,<br>Jane Doe<br>Support Team</p>","name":"Support Signature","position":0,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_signature_add_user`

Add User Signature · Write

Add a new email signature to the authenticated user's own Zoho Mail account.
Returns the created signature's id, name, content, signature type, and position.
Use this for a self-service signature on the connected mailbox. Use zohomail_signature_add_admin_added_user instead when an org admin is creating a signature on behalf of a different user.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): HTML content of the signature, as it will appear appended to outgoing messages. Example: "Best regards,<br>Jane Doe<br>Support Team
".
- `name` (`string`, required): Name to give the new signature, used to identify it among the account's other signatures. Must be unique within the account — a duplicate name is rejected. Example: "Support Signature".
- `position` (`integer`, required): Placement of the signature relative to quoted content when replying or forwarding. Use 0 to place the signature below the quoted content, or 1 to place it above the quoted content. One of: `0`, `1`.
- `assignUsers` (`string`, optional): Comma-separated email addresses of additional users this signature should also be assigned to, beyond the authenticated account. Optional — omit to only create it for the authenticated account. Example: "jane@company.com,john@company.com".

Example input: `{"content":"<p>Best regards,<br>Jane Doe<br>Support Team</p>","name":"Support Signature","position":0}`

### `zohomail_signature_update_admin_added_user`

Update Admin-Added User Signature · Write

Update the name, content, position, or user assignments of an existing signature for another user in a Zoho Mail organization, as an org admin.
Returns the updated signature's name, type, id, position, and content.
Use this to edit another user's signature as an admin; call zohomail_signature_get_admin_added_user first to find its id. This endpoint updates only user-level signatures, not organization-level ones. Use zohomail_signature_update_user instead to edit your own signature.
Requires the organization's zoid and the target user's zuid — obtain from zohomail_org_get_organization and zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `content` (`string`, required): New HTML content of the signature, as it will appear appended to the user's outgoing messages. Example: "Best regards,<br>Jane Doe<br>Support Team
".
- `id` (`string`, required): Unique key of the signature to update. Obtain it by calling zohomail_signature_get_admin_added_user first. Example: "6000000012345".
- `name` (`string`, required): New name for the signature. Example: "Support Signature".
- `position` (`integer`, required): Placement of the signature relative to quoted content when the user replies or forwards. Use 0 to place the signature below the quoted content, or 1 to place it above the quoted content. One of: `0`, `1`.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the target user. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho User Identifier (zuid) for the user whose signature is being updated. Obtain it by calling zohomail_user_list_org for this organization first.
- `assignUsers` (`array`, optional): Email addresses of users to assign this signature to. Optional — provide as an array of strings; omit to leave assignments unchanged. Example: ["jane@company.com"].
- `unassignUsers` (`array`, optional): Email addresses of users to unassign this signature from. Optional — provide as an array of strings; omit to leave assignments unchanged. Example: ["jane@company.com"].

Example input: `{"content":"<p>Best regards,<br>Jane Doe<br>Support Team</p>","id":"6000000012345","name":"Support Signature","position":0,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_signature_update_user`

Update User Signature · Write

Update the name, content, position, or user assignments of an existing signature on the authenticated user's own Zoho Mail account.
Returns the updated signature's name, content, position, id, and signature type.
Use this to edit your own signature; call zohomail_signature_get_user first to find its id. Use zohomail_signature_update_admin_added_user instead to edit another user's signature as an org admin.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `content` (`string`, required): New HTML content of the signature, as it will appear appended to outgoing messages. Example: "Best regards,<br>Jane Doe<br>Support Team
".
- `id` (`string`, required): Unique key of the signature to update. Obtain it by calling zohomail_signature_get_user first. Example: "6000000012345".
- `name` (`string`, required): New name for the signature. Example: "Support Signature".
- `position` (`integer`, required): Placement of the signature relative to quoted content when replying or forwarding. Use 0 to place the signature below the quoted content, or 1 to place it above the quoted content. One of: `0`, `1`.
- `assignUsers` (`string`, optional): Comma-separated email addresses of users to assign this signature to. Optional — omit to leave assignments unchanged. Example: "jane@company.com,john@company.com".
- `unassignUsers` (`string`, optional): Comma-separated email addresses of users to unassign this signature from. Optional — omit to leave assignments unchanged. Example: "jane@company.com".

Example input: `{"content":"<p>Best regards,<br>Jane Doe<br>Support Team</p>","id":"6000000012345","name":"Support Signature","position":0}`

### `zohomail_task_add_custom_status_group`

Add Group Custom Task Status · Write

Create a new custom task status for a Zoho Mail group's Streams task list.
Returns the created status's name, color, and assigned status ID.
Use this to add a status option (beyond the built-in inprogress/completed) for tasks within a group. Use zohomail_task_add_custom_status_personal for your personal task list instead.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `statusName` (`string`, required): Name of the custom status to add, e.g. 'Waiting on client'. Shown alongside the built-in inprogress/completed statuses.
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `statusColour` (`string`, optional): Hexadecimal color code used to represent this custom status in the task UI, e.g. '#FFA500'.

Example input: `{"statusName":"Waiting on client","zgid":"<zgid>"}`

### `zohomail_task_add_custom_status_personal`

Add Personal Custom Task Status · Write

Create a new custom task status for your own personal Zoho Mail Streams task list.
Returns the created status's name, color, and assigned status ID.
Use this to add a status option (beyond the built-in inprogress/completed) for your personal tasks. Use zohomail_task_add_custom_status_group for a group's task list instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `statusName` (`string`, required): Name of the custom status to add, e.g. 'Waiting on client'. Shown alongside the built-in inprogress/completed statuses.
- `statusColour` (`string`, optional): Hexadecimal color code used to represent this custom status in the task UI, e.g. '#FFA500'.

Example input: `{"statusName":"Waiting on client"}`

### `zohomail_task_add_group`

Add Group Task · Write

Create a new task in a Zoho Mail group's Streams task list.
Returns the created task's ID, title, owner, due date, priority, assignee, and project details.
Use this for tasks that belong to a group; use zohomail_task_add_personal for tasks in your own personal task list.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Title of the task. This is the short summary shown in task lists. Example: 'Follow up with vendor'.
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.
- `accountId` (`string`, optional): Numeric Zoho Mail account ID to associate this task with, such as when creating a task from an email in a particular mailbox. Obtain it from zohomail_account_list_user.
- `assignee` (`string`, optional): Zoho user ID (zuid) of the person this task is assigned to. For a group task, the assignee is not defaulted and should be provided explicitly.
- `attachPath` (`array`, optional): List of attachment paths corresponding to attachStoreName, identifying where each attached file lives in the attachment store.
- `attachStoreName` (`array`, optional): List of attachment store names to attach to this task, referencing files already uploaded to Zoho's attachment store.
- `description` (`string`, optional): Longer free-text description of the task, giving details beyond the title.
- `dueDate` (`string`, optional): Due date for the task, in the format DD/MM/YYYY. Example: 25/12/2026.
- `emailReminder` (`boolean`, optional): Whether Zoho Mail should send an email reminder for this task at the reminder date.
- `messageId` (`string`, optional): Identifier of a Zoho Mail email message to link this task to, such as when converting an email into a task.
- `parentTaskId` (`string`, optional): Identifier of an existing task to attach this task to as a subtask of. Leave blank to create a top-level task.
- `popupReminder` (`boolean`, optional): Whether Zoho Mail should show a popup notification for this task at the reminder date.
- `priority` (`string`, optional): Priority level of the task. One of 'high', 'medium', or 'low'. One of: `high`, `medium`, `low`.
- `projectId` (`string`, optional): Identifier of the project (within this group) that this task belongs to. Only applies to group tasks. Obtain it by calling zohomail_task_list_projects_group first.
- `recurDailyOnlyOnWeekdays` (`boolean`, optional): For daily recurrence, whether to skip weekends and only recur on weekdays.
- `recurFor` (`integer`, optional): Number of occurrences to generate for this recurring task, as an alternative to setting recurUntil.
- `recurFrom` (`string`, optional): Date the recurrence pattern starts from, in the format DD/MM/YYYY.
- `recurMonthlyOnDayOfMonth` (`integer`, optional): For monthly recurrence by date, the day of the month to recur on (1-31).
- `recurMonthlyOnDayOfWeek` (`integer`, optional): For monthly recurrence by weekday, the day of the week to recur on, where 1=Sunday through 7=Saturday.
- `recurMonthlyOnDayOfWeekInMonth` (`integer`, optional): For monthly recurrence by weekday, which occurrence of the weekday in the month to use (e.g. 1st, 2nd, 3rd, 4th, or last).
- `recurringFrequency` (`integer`, optional): How often the task recurs within the chosen recurrence type, e.g. 2 with recurringType 'Weekly' means every 2 weeks.
- `recurringType` (`string`, optional): How this task repeats. One of 'Daily', 'Weekly', 'Monthly', or 'Yearly'. Leave blank for a one-time task. One of: `Daily`, `Weekly`, `Monthly`, `Yearly`.
- `recurUntil` (`string`, optional): Date the recurrence pattern ends on, in the format DD/MM/YYYY. Leave blank together with recurFor for an open-ended recurrence.
- `recurWeeklyOn` (`integer`, optional): For weekly recurrence, the day of the week to recur on, where 1=Sunday through 7=Saturday.
- `recurYearlyOnDayOfMonth` (`integer`, optional): For yearly recurrence by date, the day of the month to recur on (1-31).
- `recurYearlyOnDayOfWeek` (`integer`, optional): For yearly recurrence by weekday, the day of the week to recur on, where 1=Sunday through 7=Saturday.
- `recurYearlyOnDayOfWeekInMonth` (`integer`, optional): For yearly recurrence by weekday, which occurrence of the weekday in the month to use (e.g. 1st, 2nd, 3rd, 4th, or last).
- `recurYearlyOnMonth` (`integer`, optional): For yearly recurrence, the month to recur in (1=January through 12=December).
- `reminderDate` (`string`, optional): Date and time to trigger a reminder for this task, in ISO 8601 format. Example: 2026-12-24T09:00:00Z.
- `status` (`string`, optional): Current status of the task. One of 'inprogress' or 'completed'. Leave blank to use Zoho Mail's default status for a new task. One of: `inprogress`, `completed`.
- `subtask` (`object`, optional): Optional nested subtask to create together with this task, using the same fields as the parent task (a 'title' is required inside it, plus any of this tool's other optional fields). Example: {"title": "Call the vendor", "priority": "high"}.

Example input: `{"title":"Follow up with vendor","zgid":"<zgid>"}`

### `zohomail_task_add_personal`

Add Personal Task · Write

Create a new personal task in your own Zoho Mail Streams task list.
Returns the created task's ID, title, owner, due date, priority, assignee, and project details.
Use this for tasks in your own personal task list; use zohomail_task_add_group for tasks that belong to a group.
The assignee defaults to yourself if not specified.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Title of the task. This is the short summary shown in task lists. Example: 'Follow up with vendor'.
- `accountId` (`string`, optional): Numeric Zoho Mail account ID to associate this task with, such as when creating a task from an email in a particular mailbox. Obtain it from zohomail_account_list_user.
- `assignee` (`string`, optional): Zoho user ID (zuid) of the person this task is assigned to. For a personal task, this defaults to your own Zoho user ID (zuid) if left blank.
- `attachPath` (`array`, optional): List of attachment paths corresponding to attachStoreName, identifying where each attached file lives in the attachment store.
- `attachStoreName` (`array`, optional): List of attachment store names to attach to this task, referencing files already uploaded to Zoho's attachment store.
- `description` (`string`, optional): Longer free-text description of the task, giving details beyond the title.
- `dueDate` (`string`, optional): Due date for the task, in the format DD/MM/YYYY. Example: 25/12/2026.
- `emailReminder` (`boolean`, optional): Whether Zoho Mail should send an email reminder for this task at the reminder date.
- `messageId` (`string`, optional): Identifier of a Zoho Mail email message to link this task to, such as when converting an email into a task.
- `parentTaskId` (`string`, optional): Identifier of an existing task to attach this task to as a subtask of. Leave blank to create a top-level task.
- `popupReminder` (`boolean`, optional): Whether Zoho Mail should show a popup notification for this task at the reminder date.
- `priority` (`string`, optional): Priority level of the task. One of 'high', 'medium', or 'low'. One of: `high`, `medium`, `low`.
- `recurDailyOnlyOnWeekdays` (`boolean`, optional): For daily recurrence, whether to skip weekends and only recur on weekdays.
- `recurFor` (`integer`, optional): Number of occurrences to generate for this recurring task, as an alternative to setting recurUntil.
- `recurFrom` (`string`, optional): Date the recurrence pattern starts from, in the format DD/MM/YYYY.
- `recurMonthlyOnDayOfMonth` (`integer`, optional): For monthly recurrence by date, the day of the month to recur on (1-31).
- `recurMonthlyOnDayOfWeek` (`integer`, optional): For monthly recurrence by weekday, the day of the week to recur on, where 1=Sunday through 7=Saturday.
- `recurMonthlyOnDayOfWeekInMonth` (`integer`, optional): For monthly recurrence by weekday, which occurrence of the weekday in the month to use (e.g. 1st, 2nd, 3rd, 4th, or last).
- `recurringFrequency` (`integer`, optional): How often the task recurs within the chosen recurrence type, e.g. 2 with recurringType 'Weekly' means every 2 weeks.
- `recurringType` (`string`, optional): How this task repeats. One of 'Daily', 'Weekly', 'Monthly', or 'Yearly'. Leave blank for a one-time task. One of: `Daily`, `Weekly`, `Monthly`, `Yearly`.
- `recurUntil` (`string`, optional): Date the recurrence pattern ends on, in the format DD/MM/YYYY. Leave blank together with recurFor for an open-ended recurrence.
- `recurWeeklyOn` (`integer`, optional): For weekly recurrence, the day of the week to recur on, where 1=Sunday through 7=Saturday.
- `recurYearlyOnDayOfMonth` (`integer`, optional): For yearly recurrence by date, the day of the month to recur on (1-31).
- `recurYearlyOnDayOfWeek` (`integer`, optional): For yearly recurrence by weekday, the day of the week to recur on, where 1=Sunday through 7=Saturday.
- `recurYearlyOnDayOfWeekInMonth` (`integer`, optional): For yearly recurrence by weekday, which occurrence of the weekday in the month to use (e.g. 1st, 2nd, 3rd, 4th, or last).
- `recurYearlyOnMonth` (`integer`, optional): For yearly recurrence, the month to recur in (1=January through 12=December).
- `reminderDate` (`string`, optional): Date and time to trigger a reminder for this task, in ISO 8601 format. Example: 2026-12-24T09:00:00Z.
- `status` (`string`, optional): Current status of the task. One of 'inprogress' or 'completed'. Leave blank to use Zoho Mail's default status for a new task. One of: `inprogress`, `completed`.
- `subtask` (`object`, optional): Optional nested subtask to create together with this task, using the same fields as the parent task (a 'title' is required inside it, plus any of this tool's other optional fields). Example: {"title": "Call the vendor", "priority": "high"}.

Example input: `{"title":"Follow up with vendor"}`

### `zohomail_task_add_project`

Add Project · Write

Create a new project under a Zoho Mail group's Streams task list.
Returns the created project's name and unique identifier.
Use this to set up a project before filing group tasks under it with the projectId field on zohomail_task_add_group.
Requires the group's zgid — obtain from zohomail_group_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `projectName` (`string`, required): Name to give the new project, shown in the group's task/project list. Example: 'Website Redesign'.
- `zgid` (`string`, required): Unique identifier (zgid) of the mail group that owns this task, project, or custom status. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.

Example input: `{"projectName":"Website Redesign","zgid":"<zgid>"}`

### `zohomail_task_change_assignee`

Change Task Assignee · Write

Reassign a Zoho Mail group task to a different member.
Returns Zoho Mail's standard task-update response confirming the change.
Use this to hand a task off to another member of the task's group; only group tasks are supported here, not personal (non-group) tasks.
Requires the task's ID and its task group's ID — obtain them from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `assignee_id` (`string`, required): Zoho user ID (zuid) of the group member to assign this task to. This is a Zoho-generated internal identifier, not an email address or display name — look it up via Zoho's User Account Details API for the target member.
- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `task_id` (`string`, required): Unique ID of the task to update. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.

Example input: `{"assignee_id":"<assignee_id>","group_id":"<group_id>","task_id":"<task_id>"}`

### `zohomail_task_change_description`

Change Task Description · Write

Change the description of a task in a Zoho Mail task group.
Returns a status object confirming the update.
Use this to update an existing task's details. Use zohomail_task_change_title, zohomail_task_change_priority, zohomail_task_change_status, or zohomail_task_change_project to update those other fields instead.
Requires the group ID (zgid) from zohomail_task_list_groups and the task ID from zohomail_task_list_group_given_status or zohomail_task_list_project_given_status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `description` (`string`, required): New description to assign to the task, describing what needs to be done. Free-text, e.g. "Compile actuals from finance and draft slides for the review meeting."
- `task_id` (`string`, required): Unique identifier of the task whose description should be changed. This is a Zoho-generated internal identifier, typically a large integer such as 90000000012321. Obtain it by calling zohomail_task_list_group_given_status or zohomail_task_list_project_given_status for this group first.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group that owns the task. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"description":"Compile actuals from finance and draft slides for the review meeting.","task_id":"<task_id>","zgid":"<zgid>"}`

### `zohomail_task_change_priority`

Change Task Priority · Write

Change the priority level of a task in a Zoho Mail task group.
Returns a status object confirming the update.
Use this to re-prioritize an existing task. Use zohomail_task_change_title, zohomail_task_change_description, zohomail_task_change_status, or zohomail_task_change_project to update those other fields instead.
Requires the group ID (zgid) from zohomail_task_list_groups and the task ID from zohomail_task_list_group_given_status or zohomail_task_list_project_given_status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `priority` (`string`, required): New priority level to assign to the task. Valid values: high, medium, low. One of: `high`, `medium`, `low`.
- `task_id` (`string`, required): Unique identifier of the task whose priority should be changed. This is a Zoho-generated internal identifier, typically a large integer such as 90000000012321. Obtain it by calling zohomail_task_list_group_given_status or zohomail_task_list_project_given_status for this group first.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group that owns the task. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"priority":"high","task_id":"<task_id>","zgid":"<zgid>"}`

### `zohomail_task_change_project`

Change Task Project · Write

Move a task in a Zoho Mail task group to a different project.
Returns a status object confirming the update.
Use this to reassign an existing task's project. Use zohomail_task_change_title, zohomail_task_change_description, zohomail_task_change_priority, or zohomail_task_change_status to update those other fields instead.
Requires the group ID (zgid) from zohomail_task_list_groups, the task ID from zohomail_task_list_group_given_status or zohomail_task_list_project_given_status, and the ID of the destination project in the same group.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`string`, required): Unique identifier of the project, within the same group, that the task should be moved to. This is a Zoho-generated internal identifier, typically a large integer such as 80000000098765.
- `task_id` (`string`, required): Unique identifier of the task to move to a different project. This is a Zoho-generated internal identifier, typically a large integer such as 90000000012321. Obtain it by calling zohomail_task_list_group_given_status or zohomail_task_list_project_given_status for this group first.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group that owns the task. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"project_id":"<project_id>","task_id":"<task_id>","zgid":"<zgid>"}`

### `zohomail_task_change_status`

Change Task Status · Write

Change the completion status of a task in a Zoho Mail task group.
Returns a status object confirming the update.
Use this to mark a task in-progress or completed. Use zohomail_task_change_title, zohomail_task_change_description, zohomail_task_change_priority, or zohomail_task_change_project to update those other fields instead.
Requires the group ID (zgid) from zohomail_task_list_groups and the task ID from zohomail_task_list_group_given_status or zohomail_task_list_project_given_status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `status` (`string`, required): New completion status to assign to the task. Valid values: inprogress, completed. One of: `inprogress`, `completed`.
- `task_id` (`string`, required): Unique identifier of the task whose status should be changed. This is a Zoho-generated internal identifier, typically a large integer such as 90000000012321. Obtain it by calling zohomail_task_list_group_given_status or zohomail_task_list_project_given_status for this group first.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group that owns the task. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"status":"inprogress","task_id":"<task_id>","zgid":"<zgid>"}`

### `zohomail_task_change_title`

Change Task Title · Write

Change the title of a task in a Zoho Mail task group.
Returns a status object confirming the update.
Use this to rename an existing task. Use zohomail_task_change_description, zohomail_task_change_priority, zohomail_task_change_status, or zohomail_task_change_project to update those other fields instead.
Requires the group ID (zgid) from zohomail_task_list_groups and the task ID from zohomail_task_list_group_given_status or zohomail_task_list_project_given_status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `task_id` (`string`, required): Unique identifier of the task whose title should be changed. This is a Zoho-generated internal identifier, typically a large integer such as 90000000012321. Obtain it by calling zohomail_task_list_group_given_status or zohomail_task_list_project_given_status for this group first.
- `title` (`string`, required): New title to assign to the task, e.g. "Prepare Q4 budget review".
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail task group that owns the task. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_task_list_groups first.

Example input: `{"task_id":"<task_id>","title":"Prepare Q4 budget review","zgid":"<zgid>"}`

### `zohomail_task_edit_custom_status`

Edit Task Custom Status · Write

Rename or recolor an existing custom task status in a Zoho Mail task group.
Returns HTTP 200 with the updated status name, color, and identifier.
Use this to edit a custom status that group members can assign to tasks; use zohomail_task_change_status to change an individual task's status.
Requires the task group's ID and the custom status's numeric identifier — obtain them from zohomail_task_list_groups and zohomail_task_get_custom_status.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Numeric ID of the task group that owns this custom status. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `status_id` (`integer`, required): Unique numeric identifier of the custom status to update. Obtain it from a custom-status-listing tool such as zohomail_task_get_custom_status.
- `status_name` (`string`, required): New name for the custom status.
- `status_colour` (`string`, optional): Color to represent the custom status, as a hexadecimal color code. Example: #FF5733. Leave unset to keep the current color.

Example input: `{"group_id":"<group_id>","status_id":1,"status_name":"<status_name>"}`

### `zohomail_task_edit_project`

Rename Task Project · Write

Rename an existing project used to organize group tasks in Zoho Mail.
Returns Zoho Mail's standard update response confirming the new project name.
Use this to change a project's display name; use zohomail_task_change_project to move an individual task into a different project.
Requires the project's ID and its task group's ID — obtain them from zohomail_task_list_projects_group and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Numeric ID of the task group that owns this project. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `project_id` (`string`, required): Unique ID of the project to rename. Obtain it from a project-listing tool such as zohomail_task_list_projects_group.
- `project_name` (`string`, required): New name to give the project.

Example input: `{"group_id":"<group_id>","project_id":"<project_id>","project_name":"<project_name>"}`

### `zohomail_task_restore_deleted_group_personal`

Restore Deleted Task · Write

Restore a Zoho Mail group task that was previously moved to trash.
Returns the restored task's ID; if the task and one of its subtasks were deleted together, restoring the parent also restores the subtask.
Use this to undo a task deletion; the call fails if the task is not currently in trash.
Requires the task's ID and its task group's ID — obtain them from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `task_id` (`string`, required): Unique ID of the trashed task to restore. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.

Example input: `{"group_id":"<group_id>","task_id":"<task_id>"}`

### `zohomail_task_set_change_due_date`

Set Task Due Date · Write

Set or change the due date of a Zoho Mail group task.
Returns Zoho Mail's standard task-update response confirming the new due date.
Use this to schedule or reschedule when a task is due; use zohomail_task_set_change_reminder or zohomail_task_set_change_reminder_based_due_date instead to configure reminder notifications.
Requires the task's ID and its task group's ID — obtain them from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `due_date` (`string`, required): Due date to set for the task, in DD/MM/YYYY format (day first). Example: 23/01/2024 means January 23, 2024.
- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `task_id` (`string`, required): Unique ID of the task to update. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.

Example input: `{"due_date":"<due_date>","group_id":"<group_id>","task_id":"<task_id>"}`

### `zohomail_task_set_change_recurring`

Set Task Recurrence · Write

Set or change the recurrence pattern of a Zoho Mail group task so it repeats on a schedule.
Returns the updated recurring-task configuration, including its recurrence type and frequency.
Use this to make a task repeat daily, weekly, monthly, or yearly; which optional fields matter depends on the recurrence type chosen.
Requires the task's ID and its task group's ID — obtain them from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `recurring_frequency` (`integer`, required): How often the recurrence repeats, counted in units of recurring_type. Any positive whole number — e.g. 2 with recurring_type Weekly means every 2 weeks.
- `recurring_type` (`string`, required): Recurrence pattern for the task: Daily, Weekly, Monthly, or Yearly. Determines which of the optional recur_* fields below are relevant. One of: `Daily`, `Weekly`, `Monthly`, `Yearly`.
- `task_id` (`string`, required): Unique ID of the task to update. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.
- `recur_daily_only_on_weekdays` (`boolean`, optional): Only used when recurring_type is Daily. True to skip weekends so the task only recurs Monday through Friday.
- `recur_for` (`integer`, optional): Number of times the task should recur before it stops, used as an alternative to recur_until. Any positive whole number, e.g. 10.
- `recur_from` (`string`, optional): Date the recurrence should start, in DD/MM/YYYY format. Example: 01/02/2024.
- `recur_monthly_on_day_of_month` (`integer`, optional): Only used when recurring_type is Monthly. The day of the month to recur on, e.g. 15 for the 15th of each month.
- `recur_monthly_on_day_of_week` (`integer`, optional): Only used when recurring_type is Monthly and recurring by weekday rather than day-of-month. Day of the week: 1=Sunday through 7=Saturday. Use together with recur_monthly_on_day_of_week_in_month.
- `recur_monthly_on_day_of_week_in_month` (`integer`, optional): Only used when recurring_type is Monthly and recurring by weekday. Which occurrence of that weekday in the month: 1 through 4 (e.g. 2 for the second Tuesday). Use together with recur_monthly_on_day_of_week.
- `recur_until` (`string`, optional): Date the recurrence should end, in DD/MM/YYYY format. Leave unset for no end date, or use recur_for to stop after a number of occurrences instead. Example: 31/12/2024.
- `recur_weekly_on` (`integer`, optional): Only used when recurring_type is Weekly. Day of the week to recur on: 1=Sunday through 7=Saturday.
- `recur_yearly_on_day_of_month` (`integer`, optional): Only used when recurring_type is Yearly. The day of the month to recur on, used together with recur_yearly_on_month. Example: 15.
- `recur_yearly_on_day_of_week` (`integer`, optional): Only used when recurring_type is Yearly and recurring by weekday rather than day-of-month. Day of the week: 1=Sunday through 7=Saturday. Use together with recur_yearly_on_day_of_week_in_month and recur_yearly_on_month.
- `recur_yearly_on_day_of_week_in_month` (`integer`, optional): Only used when recurring_type is Yearly and recurring by weekday. Which occurrence of that weekday in the month: 1 through 4.
- `recur_yearly_on_month` (`integer`, optional): Only used when recurring_type is Yearly. The month to recur in, zero-indexed: 0=January through 11=December.

Example input: `{"group_id":"<group_id>","recurring_frequency":2,"recurring_type":"Daily","task_id":"<task_id>"}`

### `zohomail_task_set_change_reminder`

Set Task Reminder · Write

Set or change a Zoho Mail group task's reminder, including exactly when it fires and how it notifies.
Returns Zoho Mail's standard task-update response confirming the reminder settings.
Use this for a reminder at a fixed date and time; use zohomail_task_set_change_reminder_based_due_date instead for a reminder expressed as a number of days before the task's due date.
Requires the task's ID and its task group's ID — obtain them from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email_reminder` (`boolean`, required): Whether the reminder should be sent by email. At least one of email_reminder or popup_reminder must be true; both may be true.
- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `popup_reminder` (`boolean`, required): Whether a popup notification should be sent for the reminder. At least one of email_reminder or popup_reminder must be true; both may be true.
- `reminder_date` (`string`, required): Date and time the reminder should fire, in ISO 8601 format including the timezone offset. Example: 2024-01-23T12:34:56+05:30.
- `task_id` (`string`, required): Unique ID of the task to update. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.

Example input: `{"email_reminder":true,"group_id":"<group_id>","popup_reminder":true,"reminder_date":"<reminder_date>","task_id":"<task_id>"}`

### `zohomail_task_set_change_reminder_based_due_date`

Set Task Reminder Relative To Due Date · Write

Set or change a Zoho Mail group task's reminder as a number of days before its due date, instead of a fixed date and time.
Returns Zoho Mail's standard task-update response confirming the reminder settings.
Use this when the reminder should automatically track the task's due date; use zohomail_task_set_change_reminder instead for a reminder at a fixed date and time.
Requires the task's ID and its task group's ID, and a due date already set on the task — obtain the IDs from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email_reminder` (`boolean`, required): Whether the reminder should be sent by email. At least one of email_reminder or popup_reminder must be true; both may be true.
- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `popup_reminder` (`boolean`, required): Whether a popup notification should be sent for the reminder. At least one of email_reminder or popup_reminder must be true; both may be true.
- `reminder_due_date` (`integer`, required): Number of days before the task's due date to fire the reminder. Any positive whole number, e.g. 2 for two days before the due date.
- `task_id` (`string`, required): Unique ID of the task to update. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.

Example input: `{"email_reminder":true,"group_id":"<group_id>","popup_reminder":true,"reminder_due_date":2,"task_id":"<task_id>"}`

### `zohomail_thread_apply_label`

Apply Label to Thread · Write

Apply one or more labels to every message in a Zoho Mail thread.
Returns a status object confirming the labels were applied.
Use this to tag an entire conversation for organization; use zohomail_thread_remove_label to remove specific labels instead, or zohomail_message_apply_labels_emails to label individual messages.
Requires the account ID from zohomail_account_list_user, label IDs from Zoho Mail's label list, and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`array`, required): One or more numeric label IDs to apply to every message in the thread. Obtain label IDs from Zoho Mail's label list for this account. Example: ["6000000056789"].
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to apply labels to. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the labeling action to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being labeled is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this labeling action should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","label_id":["6000000056789"],"thread_id":"<thread_id>"}`

### `zohomail_thread_flag`

Flag Thread · Write

Set or clear a flag on a Zoho Mail thread, applying it to every message in the thread.
Returns a status object confirming the flag was applied.
Use this to mark a thread as important, follow-up, or informational, or to clear its flag; use zohomail_message_flag_emails instead to flag individual messages.
Requires the account ID from zohomail_account_list_user and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `flagid` (`string`, required): The flag to set on the thread. Zoho Mail uses numeric flag codes passed as strings: "0" removes any existing flag, "1" sets an informational flag, "2" marks it important, and "3" marks it for follow-up. Example: "2". One of: `0`, `1`, `2`, `3`.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to flag. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the flag action to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being flagged is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this flag action should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","flagid":"2","thread_id":"<thread_id>"}`

### `zohomail_thread_mark_not_spam`

Mark Thread as Not Spam · Write

Mark every message in a Zoho Mail thread as not spam, moving it out of the Spam folder.
Returns a status object confirming success.
Use this to reverse zohomail_thread_mark_spam; use zohomail_message_mark_email_not_spam to reverse it for individual messages instead.
Requires the account ID from zohomail_account_list_user and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to mark as not spam. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope this action to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being updated is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this action should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","thread_id":"<thread_id>"}`

### `zohomail_thread_mark_read`

Mark Thread Read · Write

Mark every message in a Zoho Mail thread as read.
Returns a status object confirming the thread was marked read.
Use this instead of zohomail_thread_mark_unread when clearing the unread flag on a whole conversation; use zohomail_message_mark_emails_read to mark individual messages instead.
Requires the account ID from zohomail_account_list_user and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to mark as read. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope this action to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being updated is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this action should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","thread_id":"<thread_id>"}`

### `zohomail_thread_mark_spam`

Mark Thread as Spam · Write

Mark every message in a Zoho Mail thread as spam, moving the thread to the Spam folder.
Returns a status object confirming success.
Use this to flag an entire unwanted conversation as spam; use zohomail_thread_mark_not_spam to reverse it, or zohomail_message_mark_email_spam to mark individual messages instead.
Requires the account ID from zohomail_account_list_user and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to mark as spam. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope this action to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being marked as spam is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this action should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","thread_id":"<thread_id>"}`

### `zohomail_thread_mark_unread`

Mark Thread Unread · Write

Mark every message in a Zoho Mail thread as unread.
Returns a status object confirming the thread was marked unread.
Use this instead of zohomail_thread_mark_read when a whole conversation should show as unread; use zohomail_message_mark_emails_unread to mark individual messages instead.
Requires the account ID from zohomail_account_list_user and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to mark as unread. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope this action to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being updated is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this action should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","thread_id":"<thread_id>"}`

### `zohomail_thread_move`

Move Thread · Write

Move every message in a Zoho Mail thread into a different folder.
Returns a status object confirming the thread was moved to the destination folder.
Use this to file an entire conversation into Inbox, Trash, or a custom folder; use zohomail_message_move_emails instead to move individual messages.
Requires the account ID from zohomail_account_list_user, the destination folder ID from zohomail_folder_list, and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to move this thread into. Obtain it by calling zohomail_folder_list for this account first. Example: 6000000023456.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to move. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `is_archive` (`boolean`, optional): Whether the thread being moved is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","thread_id":"<thread_id>"}`

### `zohomail_thread_remove_all_labels`

Remove All Labels from Thread · Write

Remove every label from all messages in a Zoho Mail thread.
Returns a status object confirming all labels were removed.
Use this to strip all labels at once; use zohomail_thread_remove_label instead to remove only specific labels.
Requires the account ID from zohomail_account_list_user and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to remove all labels from. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the removal to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being updated is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this removal should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","thread_id":"<thread_id>"}`

### `zohomail_thread_remove_label`

Remove Label from Thread · Write

Remove one or more specific labels from every message in a Zoho Mail thread.
Returns a status object confirming the labels were removed.
Use this to remove particular labels while leaving others in place; use zohomail_thread_remove_all_labels instead to strip every label from the thread, or zohomail_thread_apply_label to add labels.
Requires the account ID from zohomail_account_list_user, label IDs from Zoho Mail's label list, and a thread ID from zohomail_message_list_search_results.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the thread. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`array`, required): One or more numeric label IDs to remove from every message in the thread. Obtain label IDs from Zoho Mail's label list for this account. Example: ["6000000056789"].
- `thread_id` (`string`, required): Numeric ID of the Zoho Mail thread to remove labels from. Obtain it from zohomail_message_list_search_results, which returns each message's threadId. Example: 1198000000006050.
- `folder_id` (`string`, optional): Numeric ID of the folder to scope the removal to. Only messages of the thread present in this folder are affected when is_folder_specific is true; required in that case, ignored otherwise. Obtain it by calling zohomail_folder_list. Example: 6000000023456.
- `is_archive` (`boolean`, optional): Whether the thread being updated is archived. Set to true if the thread lives in the Archive; defaults to false. Default: `false`.
- `is_folder_specific` (`boolean`, optional): Whether this removal should be scoped to only the thread's messages that are present in a specific folder. Set to true and also provide folder_id to restrict it that way; otherwise leave false. Default: false. Default: `false`.

Example input: `{"account_id":"<account_id>","label_id":["6000000056789"],"thread_id":"<thread_id>"}`

### `zohomail_user_add_email_alias`

Add Email Alias · Write

Add one or more email aliases to a user in a Zoho Mail organization.
Returns a status object mapping each newly added alias to its identifier.
Use this to give a user additional addresses that deliver to the same mailbox. Use zohomail_user_remove_email_alias to remove one later.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and the user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `emailAlias` (`array`, required): Array of one or more email addresses to add as aliases for this user, each on a domain already verified in this Zoho Mail organization. Example: ["j.doe@yourcompany.com"].
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this user account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account the aliases should be added to. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"emailAlias":["j.doe@yourcompany.com"],"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_add_organization`

Add User to Organization · Write

Create a new user account in a Zoho Mail organization, on a domain already verified for that org.
Returns the created account's details, including contact info, mailbox configuration, group assignments, and storage allocation.
Use this to add a new user; use zohomail_user_list_org to see existing users afterward, or zohomail_user_change_role to change a role later.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `password` (`string`, required): Password to set for the new user account. Must meet Zoho Mail's password policy for this organization.
- `primaryEmailAddress` (`string`, required): The domain-based primary email address for the user to be created. The domain must already be verified in this Zoho Mail organization. Example: john.doe@yourcompany.com.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization the new user will belong to. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `country` (`string`, optional): Country the user works from. Optional. Example: US.
- `department` (`string`, optional): Department the user works in. Optional.
- `designation` (`string`, optional): Job title/designation the user holds. Optional.
- `displayName` (`string`, optional): Display name to assign to the user, shown in mail clients and directories. Optional — if omitted, Zoho Mail derives one from the first and last name.
- `employeeId` (`string`, optional): The user's employee ID. Required when this Zoho Mail organization is integrated with Zoho People; otherwise optional.
- `extension` (`string`, optional): Phone extension number of the user. Optional.
- `firstName` (`string`, optional): First name of the user. Optional.
- `groupMailList` (`array`, optional): Array of group email addresses this user should be added to as a member on creation. Optional. Example: ["engineering@yourcompany.com"].
- `language` (`string`, optional): Preferred language/locale for the user's mailbox interface. Optional. Example: en.
- `lastName` (`string`, optional): Last name of the user. Optional.
- `mobileNumber` (`string`, optional): Mobile phone number of the user, including country code. Optional.
- `oneTimePassword` (`boolean`, optional): Whether the password provided should be treated as a one-time password that the user must change at first login. Set to true or false. Optional.
- `role` (`string`, optional): Organization role to assign the new user. Allowed values: 'member', 'admin', 'super_admin'. If omitted, Zoho Mail assigns its own default role. One of: `member`, `admin`, `super_admin`.
- `timeZone` (`string`, optional): IANA time zone the user works from. Optional. Example: America/Los_Angeles.
- `userExpiry` (`integer`, optional): Number of days after which the user account will automatically expire. Optional — leave unset for no expiry. Example: 90.

Example input: `{"password":"<password>","primaryEmailAddress":"<primaryEmailAddress>","zoid":"<zoid>"}`

### `zohomail_user_change_activesync_status`

Change ActiveSync Status · Write

Enable or disable ActiveSync for a user's Zoho Mail account, controlling mobile device sync access.
Returns a success status confirming the user's ActiveSync setting was updated.
Use this to control mobile ActiveSync access, independent of IMAP access (zohomail_user_change_imap_status) or POP access (zohomail_user_change_pop_status).
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account whose ActiveSync status is being changed. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `activeSyncEnabled` (`boolean`, required): Whether to enable ActiveSync for this user's mail account. Set to true to enable ActiveSync (mobile sync), or false to disable it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being updated, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","activeSyncEnabled":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_change_imap_status`

Change IMAP Status · Write

Enable or disable IMAP access for a user's Zoho Mail account.
Returns a success status confirming the user's IMAP access setting was updated.
Use this to control whether the user can connect via IMAP clients, independent of POP access (zohomail_user_change_pop_status) or ActiveSync access (zohomail_user_change_activesync_status).
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account whose IMAP status is being changed. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `imapAccessEnabled` (`boolean`, required): Whether to enable IMAP access for this user's mailbox. Set to true to enable IMAP, or false to disable it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being updated, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","imapAccessEnabled":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_change_incoming_status`

Change Incoming Status · Write

Block or unblock incoming mail delivery for a user in a Zoho Mail organization, without disabling the account.
Returns a success status confirming the incoming-mail setting was updated.
Use this to control incoming mail flow independently of zohomail_user_change_outgoing_status (outgoing mail) or zohomail_user_disable (full account suspension).
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account whose incoming-mail status is being changed. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `incomingBlocked` (`boolean`, required): Whether incoming mail should be blocked for this user. Set to true to block incoming mail delivery, or false to allow it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being updated, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","incomingBlocked":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_change_outgoing_status`

Change Outgoing Status · Write

Block or unblock outgoing mail delivery for a user in a Zoho Mail organization, without disabling the account.
Returns a success status confirming the outgoing-mail setting was updated.
Use this to control outgoing mail flow independently of zohomail_user_change_incoming_status (incoming mail) or zohomail_user_disable (full account suspension).
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account whose outgoing-mail status is being changed. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `outgoingBlocked` (`boolean`, required): Whether outgoing mail should be blocked for this user. Set to true to block the user from sending mail, or false to allow it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being updated, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","outgoingBlocked":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_change_pop_status`

Change POP Status · Write

Enable or disable POP access for a user's Zoho Mail account.
Returns a success status confirming the user's POP access setting was updated.
Use this to control whether the user can connect via POP clients, independent of IMAP access (zohomail_user_change_imap_status) or ActiveSync access (zohomail_user_change_activesync_status).
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account whose POP status is being changed. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `popAccessEnabled` (`boolean`, required): Whether to enable POP access for this user's mailbox. Set to true to enable POP, or false to disable it. This is sent to Zoho Mail's API as the 'popAccessEnabled' body field, distinct from the fixed operation-type field also used by this endpoint. Note: Zoho's own API docs (put-change-pop-status-user.html) incorrectly name this field 'updatePOPStatus'; the live endpoint actually expects 'popAccessEnabled' and rejects 'updatePOPStatus' with EXTRA_KEY_FOUND_IN_JSON (verified by live testing).
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being updated, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","popAccessEnabled":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_change_role`

Change User Role · Write

Change the organization role for one or more users in a Zoho Mail organization.
Returns a status object with a success flag for each user ID whose role was updated.
Use this to promote or demote users between member and admin. Use zohomail_user_get_single first to confirm a user's current role.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and each target user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `role` (`string`, required): The role to assign to every user listed. Allowed values: 'member', 'admin'. One of: `member`, `admin`.
- `userList` (`array`, required): Array of one or more zuids whose role should be changed to the same new role. Obtain each zuid by calling zohomail_user_list_org for this organization first. Example: ["60012345601", "60012345602"].
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the target users. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"role":"member","userList":["60012345601","60012345602"],"zoid":"<zoid>"}`

### `zohomail_user_change_tfa_preference`

Change TFA Preference · Write

Enable or disable two-factor authentication (TFA) for a user in a Zoho Mail organization.
Returns a success status confirming the TFA preference was updated.
Use this to enforce or relax TFA for a specific user. Use zohomail_user_get_single first to check a user's current TFA status.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and the user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tfaEnabled` (`boolean`, required): Whether to enable or disable Two-Factor Authentication for this user. Set to true to enable, or false to disable.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this user account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account whose TFA preference is being changed. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"tfaEnabled":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_disable`

Disable User · Write

Disable a user's Zoho Mail account, revoking their access to Zoho Mail and blocking further sign-in.
Returns a success status confirming the account was disabled.
Use this to suspend a user without deleting their account or data. Use zohomail_user_enable to restore access afterward, or zohomail_user_delete_account to permanently remove the account instead.
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account to disable. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being disabled, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.
- `blockIncoming` (`boolean`, optional): Whether to also block incoming mail delivery for this user as part of disabling the account. Set to true to block incoming mail, or false to leave incoming mail delivery unchanged. Omit to leave the current incoming-mail setting as-is.
- `removeAlias` (`boolean`, optional): Whether to remove all email aliases configured for this user as part of disabling the account. Set to true to remove aliases, or false/omit to leave them in place.
- `removeGroupMembership` (`boolean`, optional): Whether to remove this user from all mail groups as part of disabling the account. Set to true to remove group memberships, or false/omit to leave them in place.
- `removeMailforward` (`boolean`, optional): Whether to remove all mail-forwarding rules configured for this user as part of disabling the account. Set to true to remove forwarding rules, or false/omit to leave them in place.

Example input: `{"accountId":"<accountId>","zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_disable_external_account_imap_pop`

Disable External Account (IMAP/POP) · Write

Disable an external IMAP or POP mail-fetch account belonging to a user in a Zoho Mail organization, pausing mail fetching without affecting the user's primary mailbox or login access.
Returns a success status confirming the external account was disabled.
Use this to pause a misbehaving or unneeded external account. Use zohomail_user_enable_external_account_imap_pop to resume it later. A user can also disable their own external account directly, without an admin zoid/zuid, via Zoho Mail's user-scoped accounts endpoint.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and the owning user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Unique identifier of the external IMAP or POP mail-fetch account to disable. This is the external account's own ID, distinct from the owning user's zuid — it is returned when the external account was added or listed via Zoho Mail's Mail Fetch APIs for that user.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the user this external account belongs to. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) of the user who owns this external account. Required for admin-scoped calls such as this one. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_enable`

Enable User · Write

Enable a disabled user's Zoho Mail account, restoring their access to Zoho Mail and associated services.
Returns a success status confirming the account was reactivated.
Use this to reverse zohomail_user_disable. Use zohomail_user_change_incoming_status or zohomail_user_change_outgoing_status instead if you only need to adjust mail flow without changing the account's enabled state.
Requires the organization ID from zohomail_org_get_organization and the account's accountId/zuid from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Numeric identifier for the mail account to enable. This is a Zoho-generated internal identifier distinct from the user's email address, typically a large integer. Obtain it by calling zohomail_user_list_org for this organization first.
- `unblockIncoming` (`boolean`, required): Whether to also unblock incoming mail delivery for this user as part of re-enabling the account. Set to true to unblock incoming mail, or false to enable the account without changing its incoming-mail block state.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this mail account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account being enabled, distinct from the account ID and the user's email address. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","unblockIncoming":true,"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_enable_external_account_imap_pop`

Enable External Account (IMAP/POP) · Write

Re-enable a previously disabled external IMAP or POP mail-fetch account belonging to a user in a Zoho Mail organization.
Returns a success status confirming the external account was re-enabled.
Use this to resume mail fetching for a paused external account. Use zohomail_user_disable_external_account_imap_pop to pause one instead. A user can also re-enable their own external account directly, without an admin zoid/zuid, via Zoho Mail's user-scoped accounts endpoint.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and the owning user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accountId` (`string`, required): Unique identifier of the external IMAP or POP mail-fetch account to re-enable. This is the external account's own ID, distinct from the owning user's zuid — it is returned when the external account was added or listed via Zoho Mail's Mail Fetch APIs for that user.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the user this external account belongs to. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) of the user who owns this external account. Required for admin-scoped calls such as this one. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"accountId":"<accountId>","zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_remove_email_alias`

Remove Email Alias · Write

Remove one or more email aliases from a user in a Zoho Mail organization.
Returns a success status confirming the alias removal.
Use this to revoke addresses a user no longer needs. Use zohomail_user_add_email_alias to add one instead.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and the user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `emailAlias` (`array`, required): Array of one or more email alias addresses to remove from this user. Example: ["j.doe@yourcompany.com"].
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this user account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account the aliases should be removed from. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"emailAlias":["j.doe@yourcompany.com"],"zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_user_reset_password`

Reset User Password · Write

Reset the password for a user in a Zoho Mail organization.
Returns a success status confirming the password was reset.
Use this when a user is locked out or needs a new password. Leave One-Time Password enabled so the user must choose their own password at next login.
Requires the organization ID (zoid) — obtain from zohomail_org_get_organization, and the user's zuid — obtain from zohomail_user_list_org.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `password` (`string`, required): The new password to set for the user.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns this user account. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho user identifier (zuid) for the account whose password is being reset. Obtain it by calling zohomail_user_list_org for this organization first.
- `oneTimePassword` (`boolean`, optional): Whether the new password should be treated as a one-time password (OTP) that the user must change at next login. Defaults to true. Default: `true`.
- `resetAuthToken` (`boolean`, optional): Whether the user's auth token must also be regenerated as part of this reset, signing them out of existing sessions and app-specific integrations. Defaults to true. Default: `true`.

Example input: `{"password":"<password>","zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_account_remove_email_forwarding`

Remove Email Forwarding · Destructive

Delete an email-forwarding configuration from a Zoho Mail account.
Returns a status object confirming the forwarding entry was removed.
Use zohomail_account_disable_email_forwarding instead if you only want to pause forwarding while keeping the entry configured.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `mail_forward_to` (`string`, required): Email address whose forwarding configuration should be deleted entirely from this Zoho Mail account.

Example input: `{"account_id":"<account_id>","mail_forward_to":"<mail_forward_to>"}`

### `zohomail_account_remove_vacation_reply`

Remove Vacation Reply · Destructive

Delete the vacation auto-reply configured on a Zoho Mail account.
Returns a status object confirming the vacation reply was removed.
Use zohomail_account_add_vacation_reply to create a new one afterward.
Requires the numeric Zoho Mail account ID, obtained from zohomail_account_list_user.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox to act on. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.

Example input: `{"account_id":"<account_id>"}`

### `zohomail_bookmark_delete`

Delete Bookmark · Destructive

Delete a bookmark from a Zoho Mail bookmark group, permanently or by moving it to trash.
Returns a success status confirming the deletion.
Use this to remove a bookmark; use zohomail_bookmark_restore afterward to bring back one that was moved to trash instead of permanently deleted.
Requires a group ID (from zohomail_bookmark_list_groups) and a bookmark ID (from zohomail_bookmark_list).

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bookmark_id` (`string`, required): Numeric ID of the bookmark to delete. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000054321. Obtain it by calling zohomail_bookmark_list for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this bookmark. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.
- `force_delete` (`boolean`, optional): Whether to permanently delete the bookmark (true) or move it to trash where it can be restored with zohomail_bookmark_restore (false). Zoho's documentation lists true as the default, though its sample requests don't demonstrate passing this field, so the fallback behavior if omitted hasn't been independently confirmed. Default: `true`.

Example input: `{"bookmark_id":"<bookmark_id>","group_id":"<group_id>"}`

### `zohomail_bookmark_delete_collection`

Delete Bookmark Collection · Destructive

Delete a bookmark collection from a Zoho Mail bookmark group.
Returns a success status confirming the collection was deleted.
Use this to remove an entire collection; use zohomail_bookmark_delete to remove a single bookmark instead.
Requires a group ID (from zohomail_bookmark_list_groups) and a collection ID (from zohomail_bookmark_list_collections).

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, required): Numeric ID of the collection to delete. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000067890. Obtain it by calling zohomail_bookmark_list_collections for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this collection. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.

Example input: `{"collection_id":"<collection_id>","group_id":"<group_id>"}`

### `zohomail_bookmark_unmark_favorite`

Unmark Bookmark as Favorite · Destructive

Remove the favorite flag from a bookmark in a Zoho Mail bookmark group.
Returns a success status confirming the favorite flag was removed.
Use this to undo zohomail_bookmark_mark_favorite; it does not delete the bookmark itself, use zohomail_bookmark_delete for that.
Requires a group ID (from zohomail_bookmark_list_groups) and a bookmark ID (from zohomail_bookmark_list).

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bookmark_id` (`string`, required): Numeric ID of the bookmark to unmark as favorite. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000054321. Obtain it by calling zohomail_bookmark_list for the group first.
- `group_id` (`string`, required): Numeric ID of the bookmark group that owns this bookmark. This is a Zoho Mail-generated internal identifier, typically a large integer such as 3542000000012345. Obtain it by calling zohomail_bookmark_list_groups for this connection first.

Example input: `{"bookmark_id":"<bookmark_id>","group_id":"<group_id>"}`

### `zohomail_domain_delete_catch_all_address`

Delete Catch-All Address · Destructive

Remove the catch-all email address configured for a domain in a Zoho Mail organization.
Returns a status object confirming the catch-all address was removed.
Use this to stop routing mail sent to non-existent addresses on the domain; mail to invalid addresses will bounce again. Use zohomail_domain_add_catch_all_address to set a catch-all address instead.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name whose catch-all address should be removed, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_delete_dkim`

Delete DKIM Details · Destructive

Delete a DKIM key configuration from a domain in a Zoho Mail organization.
Returns a status object confirming the DKIM detail was deleted.
Use this to remove a DKIM key that is no longer needed, such as after rotating to a new one with zohomail_domain_add_dkim; use zohomail_domain_set_dkim_default first if you're deleting the key currently used for signing.
Requires the organization ID from zohomail_org_get_organization and a dkimId from zohomail_domain_add_dkim or a domain detail lookup.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `dkimId` (`integer`, required): The unique ID of the DKIM configuration to delete. This is a numeric identifier returned by zohomail_domain_add_dkim or listed in a domain's details, not the selector string. Example: 60002018490.
- `domainName` (`string`, required): The fully-qualified domain name whose DKIM key should be deleted, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"dkimId":60002018490,"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_delete_notification_address`

Delete Notification Address · Destructive

Delete the notification email address configured for a domain in Zoho Mail.
Returns a status object confirming the address was removed.
Use this to stop domain-related notification emails from being sent; use zohomail_domain_add_notification_address to set or replace the address instead of deleting it.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name whose notification email address should be deleted, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_domain_delete_organization`

Delete Domain · Destructive

Permanently delete a domain from a Zoho Mail organization.
Returns a status object confirming the domain was removed.
Use this to remove a domain you no longer want hosted in the organization; this cannot be undone, so confirm the exact domain name first with zohomail_domain_get or zohomail_domain_list.
Requires the organization ID from zohomail_org_get_organization.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `domainName` (`string`, required): The fully-qualified domain name to permanently remove from the organization, exactly as it is registered in Zoho Mail, e.g. example.com. Use zohomail_domain_list to look up the exact domain name if you're not sure of it.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns the domain. This is a numeric identifier assigned by Zoho, not the domain name or an email address — it is typically a large integer such as 60002018481. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"domainName":"<domainName>","zoid":"<zoid>"}`

### `zohomail_folder_delete`

Delete Folder · Destructive

Delete a folder from a Zoho Mail account.
Returns a status confirming the deletion.
Use this to permanently remove a folder and its contents from the mailbox; use zohomail_folder_empty first if you only want to clear its messages while keeping the folder itself.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to delete. Obtain it from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_folder_empty`

Empty Folder · Destructive

Permanently delete all messages within a folder in a Zoho Mail account.
Returns a status confirming the operation.
Use this to clear a folder's contents while keeping the folder itself; use zohomail_folder_delete to remove the folder entirely instead.
Requires the account ID from zohomail_account_list_user and the folder ID from zohomail_folder_list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the folder belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `folder_id` (`string`, required): Numeric ID of the folder to empty. All messages in this folder will be permanently deleted. Obtain it from zohomail_folder_list.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>"}`

### `zohomail_group_delete`

Delete Group · Destructive

Permanently delete a Zoho Mail organization group.
Returns a status object confirming the group was deleted.
Use this to remove a group that is no longer needed. This cannot be undone.
Requires the group's zgid from zohomail_group_list and the organization's zoid from zohomail_org_get_organization.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `zgid` (`string`, required): Unique Zoho Group Identifier (ZGID) for the mail group to delete. Obtain it by calling zohomail_group_list for this organization first. Deletion is permanent and cannot be undone.
- `zoid` (`string`, required): Unique Zoho Organization Identifier (ZOID) for the organization that owns this group. This is a numeric ID, not the organization's name or domain. Obtain it by calling zohomail_org_get_organization for this connection first.

Example input: `{"zgid":"<zgid>","zoid":"<zoid>"}`

### `zohomail_label_delete`

Delete Label · Destructive

Delete a label from a Zoho Mail account, removing its association with every message it was applied to.
Returns HTTP 200 with a success message when the deletion succeeds.
Use this to permanently remove a label; use zohomail_label_update instead if you only want to rename or recolor it.
Requires the label ID (obtained from zohomail_label_list) and the numeric Zoho Mail account ID (obtained from zohomail_account_list_user).

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox the label belongs to. This is a Zoho-generated internal identifier assigned when the mail account was added — it is not the user's email address, and it is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user for this connection first.
- `label_id` (`string`, required): Numeric ID of the label to delete, as returned in the labelId field by zohomail_label_list or zohomail_label_create. Example: 4000000012345. This action is irreversible and removes the label from all messages it is applied to.

Example input: `{"account_id":"<account_id>","label_id":"<label_id>"}`

### `zohomail_message_delete_email`

Delete Email · Destructive

Delete a single Zoho Mail message from a specific folder, either moving it to Trash or removing it permanently.
Returns a status object including the conversation ID (cId) of the deleted message.
Use expunge to delete permanently and bypass Trash; otherwise the message moves to Trash and can still be recovered.
Requires the numeric Zoho Mail account ID from zohomail_account_list_user, the folder ID from zohomail_folder_list, and the message ID from the list emails endpoint.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`string`, required): Numeric Zoho Mail account ID identifying the mailbox that owns the message to delete. This is a Zoho-generated internal identifier, not the user's email address, and is typically a large integer such as 6000000012345. Obtain it by calling zohomail_account_list_user first.
- `folder_id` (`string`, required): Numeric ID of the folder containing the message to delete. Obtain it from zohomail_folder_list. Example: 116732000000008010.
- `message_id` (`string`, required): Unique ID of the message to delete, as a string (Zoho message IDs are large integers that should be passed as strings to avoid precision loss). Retrieve it from the list emails endpoint. Example: 1198000000006002.
- `expunge` (`boolean`, optional): Whether to delete the message permanently without moving it to Trash first. Defaults to false, which moves the message to Trash instead. One of: `true`, `false`. Default: `false`.

Example input: `{"account_id":"<account_id>","folder_id":"<folder_id>","message_id":"<message_id>"}`

### `zohomail_note_delete`

Delete Note · Destructive

Delete a note from Zoho Mail Notes, either permanently or by moving it to trash.
Returns a status object confirming the note was deleted.
Use this to remove a note you no longer need; use zohomail_note_unmark_favorite instead if you only want to clear its favorite flag.
Requires the group ID from zohomail_note_list_groups and the note ID from zohomail_note_list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note to delete. Obtain it by calling zohomail_note_list for this group first. Deletion cannot be undone once forced past trash.
- `force_delete` (`boolean`, optional): When true (the default), the note is deleted permanently and skips the trash folder; when false, the note is moved to the trash folder instead of being deleted outright. One of: `true`, `false`. Default: `true`.

Example input: `{"group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_note_delete_attachment`

Delete Note Attachment · Destructive

Permanently delete an attachment from a note in Zoho Mail Notes.
Returns a status object confirming the attachment was deleted.
Use this to remove a file attached to a note; use zohomail_note_get_attachment to download a copy first if you need to keep it. This cannot be undone.
Requires the group ID from zohomail_note_list_groups, the note ID from zohomail_note_list, and the attachment ID from zohomail_note_list_attachments.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `attachment_id` (`string`, required): Unique ID of the attachment to delete, as returned in the note's attachment list. Obtain it by calling zohomail_note_list_attachments for this note first. Deletion is permanent and cannot be undone.
- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note that the attachment belongs to. Obtain it by calling zohomail_note_list for this group first.

Example input: `{"attachment_id":"<attachment_id>","group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_note_delete_book`

Delete Book · Destructive

Permanently delete a notebook (book) from Zoho Mail Notes.
Returns a status object confirming the notebook was deleted.
Use this to remove a notebook you no longer need; use zohomail_note_edit_book to rename one instead of deleting it. This cannot be undone.
Requires the group ID from zohomail_note_list_groups and the book ID from zohomail_note_list_books.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `book_id` (`string`, required): Unique ID of the notebook (book) to delete. Obtain it by calling zohomail_note_list_books for this group first. Deletion is permanent and cannot be undone.
- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the notebook. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.

Example input: `{"book_id":"<book_id>","group_id":"<group_id>"}`

### `zohomail_note_unmark_favorite`

Unmark Note Favorite · Destructive

Remove the favorite flag from a note in Zoho Mail Notes.
Returns a status object confirming the note is no longer marked as a favorite.
Use this to undo zohomail_note_mark_favorite; the note itself is not deleted.
Requires the group ID from zohomail_note_list_groups and the note ID from zohomail_note_list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Unique ID of the Zoho Mail Notes group that owns the note. This is a Zoho-generated internal identifier (a large integer) specific to the Notes API. Obtain it by calling zohomail_note_list_groups for this connection first.
- `note_id` (`string`, required): Unique ID of the note to unmark as a favorite. Obtain it by calling zohomail_note_list for this group first.

Example input: `{"group_id":"<group_id>","note_id":"<note_id>"}`

### `zohomail_org_delete_allowed_ips`

Delete Allowed IPs · Destructive

Delete an allowed IP address range configured for a Zoho Mail organization's login access policy.
Returns a status code and description, plus a per-range success/failure status for the deleted IP range.
Use this to remove an IP-range login restriction previously configured for a role (all users, admins, or the super admin); requires org admin access.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `allowed_ips` (`array`, required): List of allowed IP-range entries to delete. Each entry is an object with fromIpRange (start of the range), toIpRange (end of the range), roleId (0=Users, 1=Admins, 2=Super Admin, -1=all members), and an optional ipId to disambiguate when more than one range could otherwise match. Must exactly match existing allowed IP range entries for this organization. Example: [{"fromIpRange": "192.168.1.1", "toIpRange": "192.168.1.255", "roleId": 0}]
- `zoid` (`string`, required): Numeric Zoho Mail organization ID (zoid) that owns the allowed IP range to delete. This is a Zoho-generated internal identifier for the organization, not a domain name or email address, and is typically a large integer such as 60002123456. Obtain it by calling Zoho Mail's Get Organization Details endpoint for this connection first.

Example input: `{"allowed_ips":[{"fromIpRange":"192.168.1.1","toIpRange":"192.168.1.255","roleId":0}],"zoid":"<zoid>"}`

### `zohomail_org_remove_spam_listing`

Remove Spam Listing · Destructive

Remove entries from a Zoho Mail organization's anti-spam listing, targeting a specific category such as whitelisted, blocked, or quarantined emails, domains, or IP addresses.
Returns a status object with a code and description confirming the removal.
Use this to clean up an organization's spam, allow, block, quarantine, or trusted lists; requires org admin access.
Requires the organization's zoid, obtained from zohomail_org_get_organization.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `spam_category` (`string`, required): The type of anti-spam listing entry to remove. Choose the category matching what you're deleting: whiteListEmail, spamEmail, rejectEmail, quarantineEmail, or trustedEmail for individual sender email addresses; whiteListDomain, spamDomain, rejectDomain, quarantineDomain, or trustedDomain for sender domains; whiteListIP, spamIP, rejectIP, or quarantineIP for sender IP addresses; spamTLD, rejectTLD, or quarantineTLD for top-level domains; and recipientSpamEmail, recipientRejectEmail, or recipientQuarantineEmail for recipient-side email rules. Example: "spamEmail". One of: `whiteListEmail`, `spamEmail`, `rejectEmail`, `quarantineEmail`, `trustedEmail`, `whiteListDomain`, `spamDomain`, `rejectDomain`, `quarantineDomain`, `trustedDomain`, `whiteListIP`, `spamIP`, `rejectIP`, `quarantineIP`, `spamTLD`, `rejectTLD`, `quarantineTLD`, `recipientSpamEmail`, `recipientRejectEmail`, `recipientQuarantineEmail`.
- `values` (`array`, required): The specific email addresses, domains, IP addresses, or top-level domains to remove from the chosen list, matching the type implied by spam_category (for example, email addresses for whiteListEmail, domains for spamDomain, IP addresses for whiteListIP). Provide as an array of strings. Example: ["spammer@example.com"].
- `zoid` (`string`, required): Numeric Zoho Mail organization ID (zoid) that owns the anti-spam listing to modify. This is a Zoho-generated internal identifier for the organization, not a domain name or email address, and is typically a large integer such as 60002123456. Obtain it by calling Zoho Mail's Get Organization Details endpoint for this connection first.

Example input: `{"spam_category":"spamEmail","values":["spammer@example.com"],"zoid":"<zoid>"}`

### `zohomail_signature_delete_admin_added_user`

Delete Admin-Added User Signature · Destructive

Delete a user-level signature from another user's account in a Zoho Mail organization, as an org admin.
Returns a status object indicating whether the deletion succeeded.
Use this to remove another user's signature as an admin; call zohomail_signature_get_admin_added_user first to find its id. This endpoint cannot delete organization-level signatures, only user-specific admin-added ones. Use zohomail_signature_delete_user instead to remove your own signature.
Requires the organization's zoid and the target user's zuid — obtain from zohomail_org_get_organization and zohomail_user_list_org.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): Unique key of the signature to delete. Obtain it by calling zohomail_signature_get_admin_added_user first. Example: "6000000012345".
- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the target user. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `zuid` (`string`, required): Unique Zoho User Identifier (zuid) for the user whose signature is being deleted. Obtain it by calling zohomail_user_list_org for this organization first.

Example input: `{"id":"6000000012345","zoid":"<zoid>","zuid":"<zuid>"}`

### `zohomail_signature_delete_user`

Delete User Signature · Destructive

Delete a signature from the authenticated user's own Zoho Mail account.
Returns a status object indicating whether the deletion succeeded.
Use this to remove your own signature; call zohomail_signature_get_user first to find its id. Use zohomail_signature_delete_admin_added_user instead to remove another user's signature as an org admin.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): Unique key of the signature to delete. Obtain it by calling zohomail_signature_get_user first. Example: "6000000012345".

Example input: `{"id":"6000000012345"}`

### `zohomail_task_delete_custom_status`

Delete Custom Task Status · Destructive

Delete a custom status from a Zoho Mail group's task list.
Returns a status object echoing back the deleted status id.
Use this to remove a custom status you created yourself; the built-in In Progress and Completed statuses can't be deleted, and you can't delete a custom status another member created.
Requires the group's zgid — obtain it from zohomail_group_list first.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `status` (`integer`, required): Numeric ID of the custom task status to delete. Must be a custom status you created yourself — the predefined 'In Progress' and 'Completed' statuses cannot be deleted, and you cannot delete a custom status another user created. Obtain the id from the custom status list (e.g. zohomail_task_get_custom_status) or from the response when the status was created. Example: 13.
- `zgid` (`string`, required): Unique identifier (zgid) of the Zoho Mail group whose task list the custom status belongs to. This is a Zoho-generated internal identifier, typically a large integer such as 70000000054321. Obtain it by calling zohomail_group_list for this organization first.

Example input: `{"status":13,"zgid":"<zgid>"}`

### `zohomail_task_delete_group_personal`

Delete Task · Destructive

Permanently delete a group task in Zoho Mail.
Returns Zoho Mail's standard success response; no task details are returned.
Use this to remove a task outright; use zohomail_task_restore_deleted_group_personal instead if you want to undo a deletion while the task is still in trash.
Requires the task's ID and its task group's ID — obtain them from zohomail_task_list_assigned_you and zohomail_task_list_groups.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Numeric ID of the task group that owns this task. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `task_id` (`string`, required): Unique ID of the task to delete. Obtain it from a task-listing tool such as zohomail_task_list_assigned_you.

Example input: `{"group_id":"<group_id>","task_id":"<task_id>"}`

### `zohomail_task_delete_project`

Delete Task Project · Destructive

Permanently delete a project used to organize group tasks in Zoho Mail.
Returns Zoho Mail's standard success response; no project details are returned.
Use this to remove a project you no longer need; this does not delete the tasks that belonged to it.
Requires the project's ID and its task group's ID — obtain them from zohomail_task_list_projects_group and zohomail_task_list_groups.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `group_id` (`string`, required): Numeric ID of the task group that owns this project. This is Zoho's internal group identifier, not the group's name — obtain it from a task-group-listing tool such as zohomail_task_list_groups.
- `project_id` (`string`, required): Unique ID of the project to delete. Obtain it from a project-listing tool such as zohomail_task_list_projects_group.

Example input: `{"group_id":"<group_id>","project_id":"<project_id>"}`

### `zohomail_user_delete_account`

Delete User Account · Destructive

Permanently delete one or more user accounts from a Zoho Mail organization, identified by account ID (zuid) or by email address.
Returns a success status confirming the specified account(s) were deleted.
Use this to permanently remove accounts and their data. Use zohomail_user_disable instead to suspend an account reversibly without deleting it.
Requires the organization ID from zohomail_org_get_organization, and either account IDs (zuid) or email addresses for the accounts to delete, both obtainable from zohomail_user_list_org.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `zoid` (`string`, required): Unique Zoho Organization Identifier (zoid) for the organization that owns the accounts to delete. This is a Zoho-generated numeric ID, distinct from any domain or email address, typically a large integer such as 60012345678. Obtain it by calling zohomail_org_get_organization for this connection first.
- `accountList` (`array`, optional): Array of zuid values (numeric Zoho user IDs, as strings) identifying the accounts to delete. Obtain these via zohomail_user_list_org. Conditionally required: provide either accountList or emailList (at least one is mandatory).
- `emailList` (`array`, optional): Array of email addresses identifying the accounts to delete. Conditionally required: provide either accountList or emailList (at least one is mandatory).

Example input: `{"zoid":"<zoid>"}`

## Related

Other Communication connectors ([all 57](/agentkit/connectors/?category=communication)):

- [Gmail](/agentkit/connectors/gmail/): Scalekit connector, OAuth, 48 tools
- [Google Calendar](/agentkit/connectors/googlecalendar/): Scalekit connector, OAuth, 30 tools
- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
