---
title: Zendesk
description: Manage support tickets, users, and organizations in Zendesk
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="zendesk"
  color="#E0E0E0"
/>

{/* MANUAL-CONTENT-START:intro */}
[Zendesk](https://www.zendesk.com/) is a leading customer service and support platform that empowers organizations to efficiently manage support tickets, users, and organizations through a robust set of tools and APIs. The Zendesk integration in Sim lets your agents automate key support operations and synchronize your support data with the rest of your workflow.

With Zendesk in Sim, you can:

- **Manage Tickets:**
  - Retrieve lists of support tickets with advanced filtering and sorting.
  - Get detailed information on a single ticket for tracking and resolution.
  - Create new tickets individually or in bulk to log customer issues programmatically.
  - Update tickets or apply bulk updates to streamline complex workflows.
  - Delete or merge tickets as cases are resolved or duplicates arise.

- **User Management:**
  - Retrieve lists of users or search users by criteria to keep your customer and agent directories up-to-date.
  - Get detailed information on individual users or the current logged-in user.
  - Create new users or onboard them in bulk, automating customer and agent provisioning.
  - Update or bulk update user details to ensure information accuracy.
  - Delete users as needed for privacy or account management.

- **Organization Management:**
  - List, search, and autocomplete organizations for streamlined support and account management.
  - Get organization details and keep your database organized.
  - Create, update, or delete organizations to reflect changes in your customer base.
  - Perform bulk organization creation for large onboarding efforts.

- **Advanced Search & Analytics:**
  - Use versatile search endpoints to quickly locate tickets, users, or organizations by any field.
  - Retrieve counts of search results to power reporting and analytics.

By leveraging Zendesk’s Sim integration, your automated workflows can seamlessly handle support ticket triage, user onboarding/offboarding, company management, and keep your support operations running smoothly. Whether you’re integrating support with product, CRM, or automation systems, Zendesk tools in Sim provide robust, programmatic control to power best-in-class support at scale.
{/* MANUAL-CONTENT-END */}


## Usage Instructions

Integrate Zendesk into the workflow. Can get tickets, get ticket, create ticket, create tickets bulk, update ticket, update tickets bulk, delete ticket, merge tickets, get users, get user, get current user, search users, create user, create users bulk, update user, update users bulk, delete user, get organizations, get organization, autocomplete organizations, create organization, create organizations bulk, update organization, delete organization, search, search count.



## Tools

### `zendesk_get_tickets`

Retrieve a list of tickets from Zendesk with optional filtering

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain \(e.g., "mycompany" for mycompany.zendesk.com\) |
| `status` | string | No | Filter by status: "new", "open", "pending", "hold", "solved", or "closed" |
| `priority` | string | No | Filter by priority: "low", "normal", "high", or "urgent" |
| `type` | string | No | Filter by type: "problem", "incident", "question", or "task" |
| `assigneeId` | string | No | Filter by assignee user ID as a numeric string \(e.g., "12345"\) |
| `organizationId` | string | No | Filter by organization ID as a numeric string \(e.g., "67890"\) |
| `sort` | string | No | Sort field for ticket listing \(only applies without filters\): "updated_at", "id", or "status". Prefix with "-" for descending \(e.g., "-updated_at"\) |
| `perPage` | string | No | Results per page as a number string \(default: "100", max: "100"\) |
| `pageAfter` | string | No | Cursor from a previous response to fetch the next page of results |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `tickets` | array | Array of ticket objects |
|   ↳ `id` | number | Automatically assigned ticket ID |
|   ↳ `url` | string | API URL of the ticket |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `via` | object | How the ticket was created |
|     ↳ `channel` | string | Channel through which the ticket was created \(e.g., email, web, api\) |
|     ↳ `source` | object | Source details for the channel |
|       ↳ `from` | object | Information about the source sender |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the sender |
|       ↳ `to` | object | Information about the recipient |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the recipient |
|       ↳ `rel` | string | Relationship type |
|   ↳ `created_at` | string | When the ticket was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the ticket was last updated \(ISO 8601 format\) |
|   ↳ `type` | string | Ticket type \(problem, incident, question, task\) |
|   ↳ `subject` | string | Subject of the ticket |
|   ↳ `raw_subject` | string | Subject of the ticket as entered by the requester |
|   ↳ `description` | string | Read-only first comment on the ticket |
|   ↳ `priority` | string | Priority level \(low, normal, high, urgent\) |
|   ↳ `status` | string | Ticket status \(new, open, pending, hold, solved, closed\) |
|   ↳ `recipient` | string | Original recipient email address |
|   ↳ `requester_id` | number | User ID of the ticket requester |
|   ↳ `submitter_id` | number | User ID of the ticket submitter |
|   ↳ `assignee_id` | number | User ID of the agent assigned to the ticket |
|   ↳ `organization_id` | number | Organization ID of the requester |
|   ↳ `group_id` | number | Group ID assigned to the ticket |
|   ↳ `collaborator_ids` | array | User IDs of collaborators \(CC\) |
|   ↳ `follower_ids` | array | User IDs of followers |
|   ↳ `email_cc_ids` | array | User IDs of email CCs |
|   ↳ `forum_topic_id` | number | Topic ID in the community forum |
|   ↳ `problem_id` | number | For incident tickets, the ID of the associated problem ticket |
|   ↳ `has_incidents` | boolean | Whether the ticket has incident tickets linked |
|   ↳ `is_public` | boolean | Whether the first comment is public |
|   ↳ `due_at` | string | Due date for task tickets \(ISO 8601 format\) |
|   ↳ `tags` | array | Tags associated with the ticket |
|   ↳ `custom_fields` | array | Custom ticket fields |
|     ↳ `id` | number | Custom field ID |
|     ↳ `value` | string | Custom field value |
|   ↳ `custom_status_id` | number | Custom status ID |
|   ↳ `satisfaction_rating` | object | Customer satisfaction rating |
|     ↳ `id` | number | Satisfaction rating ID |
|     ↳ `score` | string | Rating score \(e.g., good, bad, offered, unoffered\) |
|     ↳ `comment` | string | Comment left with the rating |
|   ↳ `sharing_agreement_ids` | array | Sharing agreement IDs |
|   ↳ `followup_ids` | array | IDs of follow-up tickets |
|   ↳ `brand_id` | number | Brand ID the ticket belongs to |
|   ↳ `allow_attachments` | boolean | Whether attachments are allowed |
|   ↳ `allow_channelback` | boolean | Whether channelback is enabled |
|   ↳ `from_messaging_channel` | boolean | Whether the ticket originated from a messaging channel |
|   ↳ `ticket_form_id` | number | Ticket form ID |
|   ↳ `generated_timestamp` | number | Unix timestamp of the ticket generation |
| `paging` | object | Cursor-based pagination information |
|   ↳ `after_cursor` | string | Cursor for fetching the next page of results |
|   ↳ `has_more` | boolean | Whether more results are available |
|   ↳ `next_page` | string | URL for next page of results |
| `metadata` | object | Response metadata |
|   ↳ `total_returned` | number | Number of items returned in this response |
|   ↳ `has_more` | boolean | Whether more items are available |

### `zendesk_get_ticket`

Get a single ticket by ID from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `ticketId` | string | Yes | Ticket ID to retrieve as a numeric string \(e.g., "12345"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticket` | object | Ticket object |
|   ↳ `id` | number | Automatically assigned ticket ID |
|   ↳ `url` | string | API URL of the ticket |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `via` | object | How the ticket was created |
|     ↳ `channel` | string | Channel through which the ticket was created \(e.g., email, web, api\) |
|     ↳ `source` | object | Source details for the channel |
|       ↳ `from` | object | Information about the source sender |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the sender |
|       ↳ `to` | object | Information about the recipient |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the recipient |
|       ↳ `rel` | string | Relationship type |
|   ↳ `created_at` | string | When the ticket was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the ticket was last updated \(ISO 8601 format\) |
|   ↳ `type` | string | Ticket type \(problem, incident, question, task\) |
|   ↳ `subject` | string | Subject of the ticket |
|   ↳ `raw_subject` | string | Subject of the ticket as entered by the requester |
|   ↳ `description` | string | Read-only first comment on the ticket |
|   ↳ `priority` | string | Priority level \(low, normal, high, urgent\) |
|   ↳ `status` | string | Ticket status \(new, open, pending, hold, solved, closed\) |
|   ↳ `recipient` | string | Original recipient email address |
|   ↳ `requester_id` | number | User ID of the ticket requester |
|   ↳ `submitter_id` | number | User ID of the ticket submitter |
|   ↳ `assignee_id` | number | User ID of the agent assigned to the ticket |
|   ↳ `organization_id` | number | Organization ID of the requester |
|   ↳ `group_id` | number | Group ID assigned to the ticket |
|   ↳ `collaborator_ids` | array | User IDs of collaborators \(CC\) |
|   ↳ `follower_ids` | array | User IDs of followers |
|   ↳ `email_cc_ids` | array | User IDs of email CCs |
|   ↳ `forum_topic_id` | number | Topic ID in the community forum |
|   ↳ `problem_id` | number | For incident tickets, the ID of the associated problem ticket |
|   ↳ `has_incidents` | boolean | Whether the ticket has incident tickets linked |
|   ↳ `is_public` | boolean | Whether the first comment is public |
|   ↳ `due_at` | string | Due date for task tickets \(ISO 8601 format\) |
|   ↳ `tags` | array | Tags associated with the ticket |
|   ↳ `custom_fields` | array | Custom ticket fields |
|     ↳ `id` | number | Custom field ID |
|     ↳ `value` | string | Custom field value |
|   ↳ `custom_status_id` | number | Custom status ID |
|   ↳ `satisfaction_rating` | object | Customer satisfaction rating |
|     ↳ `id` | number | Satisfaction rating ID |
|     ↳ `score` | string | Rating score \(e.g., good, bad, offered, unoffered\) |
|     ↳ `comment` | string | Comment left with the rating |
|   ↳ `sharing_agreement_ids` | array | Sharing agreement IDs |
|   ↳ `followup_ids` | array | IDs of follow-up tickets |
|   ↳ `brand_id` | number | Brand ID the ticket belongs to |
|   ↳ `allow_attachments` | boolean | Whether attachments are allowed |
|   ↳ `allow_channelback` | boolean | Whether channelback is enabled |
|   ↳ `from_messaging_channel` | boolean | Whether the ticket originated from a messaging channel |
|   ↳ `ticket_form_id` | number | Ticket form ID |
|   ↳ `generated_timestamp` | number | Unix timestamp of the ticket generation |
| `ticket_id` | number | The ticket ID |

### `zendesk_create_ticket`

Create a new ticket in Zendesk with support for custom fields

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `subject` | string | No | Ticket subject \(optional - will be auto-generated if not provided\) |
| `description` | string | Yes | Ticket description text \(first comment\) |
| `priority` | string | No | Priority: "low", "normal", "high", or "urgent" |
| `status` | string | No | Status: "new", "open", "pending", "hold", "solved", or "closed" |
| `type` | string | No | Type: "problem", "incident", "question", or "task" |
| `tags` | string | No | Comma-separated tags \(e.g., "billing, urgent"\) |
| `assigneeId` | string | No | Assignee user ID as a numeric string \(e.g., "12345"\) |
| `groupId` | string | No | Group ID as a numeric string \(e.g., "67890"\) |
| `requesterId` | string | No | Requester user ID as a numeric string \(e.g., "11111"\) |
| `customFields` | string | No | Custom fields as JSON object \(e.g., \{"field_id": "value"\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticket` | object | Created ticket object |
|   ↳ `id` | number | Automatically assigned ticket ID |
|   ↳ `url` | string | API URL of the ticket |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `via` | object | How the ticket was created |
|     ↳ `channel` | string | Channel through which the ticket was created \(e.g., email, web, api\) |
|     ↳ `source` | object | Source details for the channel |
|       ↳ `from` | object | Information about the source sender |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the sender |
|       ↳ `to` | object | Information about the recipient |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the recipient |
|       ↳ `rel` | string | Relationship type |
|   ↳ `created_at` | string | When the ticket was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the ticket was last updated \(ISO 8601 format\) |
|   ↳ `type` | string | Ticket type \(problem, incident, question, task\) |
|   ↳ `subject` | string | Subject of the ticket |
|   ↳ `raw_subject` | string | Subject of the ticket as entered by the requester |
|   ↳ `description` | string | Read-only first comment on the ticket |
|   ↳ `priority` | string | Priority level \(low, normal, high, urgent\) |
|   ↳ `status` | string | Ticket status \(new, open, pending, hold, solved, closed\) |
|   ↳ `recipient` | string | Original recipient email address |
|   ↳ `requester_id` | number | User ID of the ticket requester |
|   ↳ `submitter_id` | number | User ID of the ticket submitter |
|   ↳ `assignee_id` | number | User ID of the agent assigned to the ticket |
|   ↳ `organization_id` | number | Organization ID of the requester |
|   ↳ `group_id` | number | Group ID assigned to the ticket |
|   ↳ `collaborator_ids` | array | User IDs of collaborators \(CC\) |
|   ↳ `follower_ids` | array | User IDs of followers |
|   ↳ `email_cc_ids` | array | User IDs of email CCs |
|   ↳ `forum_topic_id` | number | Topic ID in the community forum |
|   ↳ `problem_id` | number | For incident tickets, the ID of the associated problem ticket |
|   ↳ `has_incidents` | boolean | Whether the ticket has incident tickets linked |
|   ↳ `is_public` | boolean | Whether the first comment is public |
|   ↳ `due_at` | string | Due date for task tickets \(ISO 8601 format\) |
|   ↳ `tags` | array | Tags associated with the ticket |
|   ↳ `custom_fields` | array | Custom ticket fields |
|     ↳ `id` | number | Custom field ID |
|     ↳ `value` | string | Custom field value |
|   ↳ `custom_status_id` | number | Custom status ID |
|   ↳ `satisfaction_rating` | object | Customer satisfaction rating |
|     ↳ `id` | number | Satisfaction rating ID |
|     ↳ `score` | string | Rating score \(e.g., good, bad, offered, unoffered\) |
|     ↳ `comment` | string | Comment left with the rating |
|   ↳ `sharing_agreement_ids` | array | Sharing agreement IDs |
|   ↳ `followup_ids` | array | IDs of follow-up tickets |
|   ↳ `brand_id` | number | Brand ID the ticket belongs to |
|   ↳ `allow_attachments` | boolean | Whether attachments are allowed |
|   ↳ `allow_channelback` | boolean | Whether channelback is enabled |
|   ↳ `from_messaging_channel` | boolean | Whether the ticket originated from a messaging channel |
|   ↳ `ticket_form_id` | number | Ticket form ID |
|   ↳ `generated_timestamp` | number | Unix timestamp of the ticket generation |
| `ticket_id` | number | The created ticket ID |

### `zendesk_create_tickets_bulk`

Create multiple tickets in Zendesk at once (max 100)

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `tickets` | string | Yes | JSON array of ticket objects to create \(max 100\). Each ticket should have subject and comment properties \(e.g., \[\{"subject": "Issue 1", "comment": \{"body": "Description"\}\}\]\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `job_status` | object | Job status object for bulk operations |
|   ↳ `id` | string | Automatically assigned job ID |
|   ↳ `url` | string | URL to poll for status updates |
|   ↳ `status` | string | Current job status \(queued, working, failed, completed\) |
|   ↳ `job_type` | string | Category of background task |
|   ↳ `total` | number | Total number of tasks in this job |
|   ↳ `progress` | number | Number of tasks already completed |
|   ↳ `message` | string | Message from the job worker |
|   ↳ `results` | array | Array of result objects from the job |
|     ↳ `id` | number | ID of the created or updated resource |
|     ↳ `index` | number | Position of the result in the batch |
|     ↳ `action` | string | Action performed \(e.g., create, update\) |
|     ↳ `success` | boolean | Whether the operation succeeded |
|     ↳ `status` | string | Status message \(e.g., Updated, Created\) |
|     ↳ `error` | string | Error message if operation failed |
| `job_id` | string | The bulk operation job ID |

### `zendesk_update_ticket`

Update an existing ticket in Zendesk with support for custom fields

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `ticketId` | string | Yes | Ticket ID to update as a numeric string \(e.g., "12345"\) |
| `subject` | string | No | New ticket subject text |
| `comment` | string | No | Comment text to add to the ticket |
| `priority` | string | No | Priority: "low", "normal", "high", or "urgent" |
| `status` | string | No | Status: "new", "open", "pending", "hold", "solved", or "closed" |
| `type` | string | No | Type: "problem", "incident", "question", or "task" |
| `tags` | string | No | Comma-separated tags \(e.g., "billing, urgent"\) |
| `assigneeId` | string | No | Assignee user ID as a numeric string \(e.g., "12345"\) |
| `groupId` | string | No | Group ID as a numeric string \(e.g., "67890"\) |
| `customFields` | string | No | Custom fields as JSON object \(e.g., \{"field_id": "value"\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticket` | object | Updated ticket object |
|   ↳ `id` | number | Automatically assigned ticket ID |
|   ↳ `url` | string | API URL of the ticket |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `via` | object | How the ticket was created |
|     ↳ `channel` | string | Channel through which the ticket was created \(e.g., email, web, api\) |
|     ↳ `source` | object | Source details for the channel |
|       ↳ `from` | object | Information about the source sender |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the sender |
|       ↳ `to` | object | Information about the recipient |
|         ↳ `address` | string | Email address or other identifier |
|         ↳ `name` | string | Name of the recipient |
|       ↳ `rel` | string | Relationship type |
|   ↳ `created_at` | string | When the ticket was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the ticket was last updated \(ISO 8601 format\) |
|   ↳ `type` | string | Ticket type \(problem, incident, question, task\) |
|   ↳ `subject` | string | Subject of the ticket |
|   ↳ `raw_subject` | string | Subject of the ticket as entered by the requester |
|   ↳ `description` | string | Read-only first comment on the ticket |
|   ↳ `priority` | string | Priority level \(low, normal, high, urgent\) |
|   ↳ `status` | string | Ticket status \(new, open, pending, hold, solved, closed\) |
|   ↳ `recipient` | string | Original recipient email address |
|   ↳ `requester_id` | number | User ID of the ticket requester |
|   ↳ `submitter_id` | number | User ID of the ticket submitter |
|   ↳ `assignee_id` | number | User ID of the agent assigned to the ticket |
|   ↳ `organization_id` | number | Organization ID of the requester |
|   ↳ `group_id` | number | Group ID assigned to the ticket |
|   ↳ `collaborator_ids` | array | User IDs of collaborators \(CC\) |
|   ↳ `follower_ids` | array | User IDs of followers |
|   ↳ `email_cc_ids` | array | User IDs of email CCs |
|   ↳ `forum_topic_id` | number | Topic ID in the community forum |
|   ↳ `problem_id` | number | For incident tickets, the ID of the associated problem ticket |
|   ↳ `has_incidents` | boolean | Whether the ticket has incident tickets linked |
|   ↳ `is_public` | boolean | Whether the first comment is public |
|   ↳ `due_at` | string | Due date for task tickets \(ISO 8601 format\) |
|   ↳ `tags` | array | Tags associated with the ticket |
|   ↳ `custom_fields` | array | Custom ticket fields |
|     ↳ `id` | number | Custom field ID |
|     ↳ `value` | string | Custom field value |
|   ↳ `custom_status_id` | number | Custom status ID |
|   ↳ `satisfaction_rating` | object | Customer satisfaction rating |
|     ↳ `id` | number | Satisfaction rating ID |
|     ↳ `score` | string | Rating score \(e.g., good, bad, offered, unoffered\) |
|     ↳ `comment` | string | Comment left with the rating |
|   ↳ `sharing_agreement_ids` | array | Sharing agreement IDs |
|   ↳ `followup_ids` | array | IDs of follow-up tickets |
|   ↳ `brand_id` | number | Brand ID the ticket belongs to |
|   ↳ `allow_attachments` | boolean | Whether attachments are allowed |
|   ↳ `allow_channelback` | boolean | Whether channelback is enabled |
|   ↳ `from_messaging_channel` | boolean | Whether the ticket originated from a messaging channel |
|   ↳ `ticket_form_id` | number | Ticket form ID |
|   ↳ `generated_timestamp` | number | Unix timestamp of the ticket generation |
| `ticket_id` | number | The updated ticket ID |

### `zendesk_update_tickets_bulk`

Update multiple tickets in Zendesk at once (max 100)

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `ticketIds` | string | Yes | Comma-separated ticket IDs to update \(max 100, e.g., "111, 222, 333"\) |
| `status` | string | No | New status for all tickets: "new", "open", "pending", "hold", "solved", or "closed" |
| `priority` | string | No | New priority for all tickets: "low", "normal", "high", or "urgent" |
| `assigneeId` | string | No | New assignee ID for all tickets as a numeric string \(e.g., "12345"\) |
| `groupId` | string | No | New group ID for all tickets as a numeric string \(e.g., "67890"\) |
| `tags` | string | No | Comma-separated tags to add to all tickets \(e.g., "bulk-update, processed"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `job_status` | object | Job status object for bulk operations |
|   ↳ `id` | string | Automatically assigned job ID |
|   ↳ `url` | string | URL to poll for status updates |
|   ↳ `status` | string | Current job status \(queued, working, failed, completed\) |
|   ↳ `job_type` | string | Category of background task |
|   ↳ `total` | number | Total number of tasks in this job |
|   ↳ `progress` | number | Number of tasks already completed |
|   ↳ `message` | string | Message from the job worker |
|   ↳ `results` | array | Array of result objects from the job |
|     ↳ `id` | number | ID of the created or updated resource |
|     ↳ `index` | number | Position of the result in the batch |
|     ↳ `action` | string | Action performed \(e.g., create, update\) |
|     ↳ `success` | boolean | Whether the operation succeeded |
|     ↳ `status` | string | Status message \(e.g., Updated, Created\) |
|     ↳ `error` | string | Error message if operation failed |
| `job_id` | string | The bulk operation job ID |

### `zendesk_delete_ticket`

Delete a ticket from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `ticketId` | string | Yes | Ticket ID to delete as a numeric string \(e.g., "12345"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Deletion success |
| `ticket_id` | string | The deleted ticket ID |

### `zendesk_merge_tickets`

Merge multiple tickets into a target ticket

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `targetTicketId` | string | Yes | Target ticket ID as a numeric string \(tickets will be merged into this one, e.g., "12345"\) |
| `sourceTicketIds` | string | Yes | Comma-separated source ticket IDs to merge \(e.g., "111, 222, 333"\) |
| `targetComment` | string | No | Comment text to add to target ticket after merge |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `job_status` | object | Job status object for bulk operations |
|   ↳ `id` | string | Automatically assigned job ID |
|   ↳ `url` | string | URL to poll for status updates |
|   ↳ `status` | string | Current job status \(queued, working, failed, completed\) |
|   ↳ `job_type` | string | Category of background task |
|   ↳ `total` | number | Total number of tasks in this job |
|   ↳ `progress` | number | Number of tasks already completed |
|   ↳ `message` | string | Message from the job worker |
|   ↳ `results` | array | Array of result objects from the job |
|     ↳ `id` | number | ID of the created or updated resource |
|     ↳ `index` | number | Position of the result in the batch |
|     ↳ `action` | string | Action performed \(e.g., create, update\) |
|     ↳ `success` | boolean | Whether the operation succeeded |
|     ↳ `status` | string | Status message \(e.g., Updated, Created\) |
|     ↳ `error` | string | Error message if operation failed |
| `job_id` | string | The merge job ID |
| `target_ticket_id` | string | The target ticket ID that tickets were merged into |

### `zendesk_get_users`

Retrieve a list of users from Zendesk with optional filtering

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain \(e.g., "mycompany" for mycompany.zendesk.com\) |
| `role` | string | No | Filter by role: "end-user", "agent", or "admin" |
| `permissionSet` | string | No | Filter by permission set ID as a numeric string \(e.g., "12345"\) |
| `perPage` | string | No | Results per page as a number string \(default: "100", max: "100"\) |
| `pageAfter` | string | No | Cursor from a previous response to fetch the next page of results |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `users` | array | Array of user objects |
|   ↳ `id` | number | Automatically assigned user ID |
|   ↳ `url` | string | API URL of the user |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | Primary email address |
|   ↳ `created_at` | string | When the user was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the user was last updated \(ISO 8601 format\) |
|   ↳ `time_zone` | string | Time zone \(e.g., Eastern Time \(US & Canada\)\) |
|   ↳ `iana_time_zone` | string | IANA time zone \(e.g., America/New_York\) |
|   ↳ `phone` | string | Phone number |
|   ↳ `shared_phone_number` | boolean | Whether the phone number is shared |
|   ↳ `photo` | object | User photo details |
|     ↳ `content_url` | string | URL to the photo |
|     ↳ `file_name` | string | Photo file name |
|     ↳ `size` | number | File size in bytes |
|   ↳ `locale` | string | Locale \(e.g., en-US\) |
|   ↳ `locale_id` | number | Locale ID |
|   ↳ `organization_id` | number | Primary organization ID |
|   ↳ `role` | string | User role \(end-user, agent, admin\) |
|   ↳ `role_type` | number | Role type identifier |
|   ↳ `custom_role_id` | number | Custom role ID |
|   ↳ `active` | boolean | Whether the user is active \(false if deleted\) |
|   ↳ `verified` | boolean | Whether any user identity has been verified |
|   ↳ `alias` | string | Alias displayed to end users |
|   ↳ `details` | string | Details about the user |
|   ↳ `notes` | string | Notes about the user |
|   ↳ `signature` | string | User signature for email replies |
|   ↳ `default_group_id` | number | Default group ID for the user |
|   ↳ `tags` | array | Tags associated with the user |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `restricted_agent` | boolean | Whether the agent has restrictions |
|   ↳ `suspended` | boolean | Whether the user is suspended |
|   ↳ `moderator` | boolean | Whether the user has moderator permissions |
|   ↳ `chat_only` | boolean | Whether the user is a chat-only agent |
|   ↳ `only_private_comments` | boolean | Whether the user can only create private comments |
|   ↳ `two_factor_auth_enabled` | boolean | Whether two-factor auth is enabled |
|   ↳ `last_login_at` | string | Last login time \(ISO 8601 format\) |
|   ↳ `ticket_restriction` | string | Ticket access restriction \(organization, groups, assigned, requested\) |
|   ↳ `user_fields` | json | Custom user fields \(dynamic key-value pairs\) |
|   ↳ `shared` | boolean | Whether the user is shared from a different Zendesk |
|   ↳ `shared_agent` | boolean | Whether the agent is shared from a different Zendesk |
|   ↳ `remote_photo_url` | string | URL to a remote photo |
| `paging` | object | Cursor-based pagination information |
|   ↳ `after_cursor` | string | Cursor for fetching the next page of results |
|   ↳ `has_more` | boolean | Whether more results are available |
|   ↳ `next_page` | string | URL for next page of results |
| `metadata` | object | Response metadata |
|   ↳ `total_returned` | number | Number of items returned in this response |
|   ↳ `has_more` | boolean | Whether more items are available |

### `zendesk_get_user`

Get a single user by ID from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `userId` | string | Yes | User ID to retrieve as a numeric string \(e.g., "12345"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | User object |
|   ↳ `id` | number | Automatically assigned user ID |
|   ↳ `url` | string | API URL of the user |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | Primary email address |
|   ↳ `created_at` | string | When the user was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the user was last updated \(ISO 8601 format\) |
|   ↳ `time_zone` | string | Time zone \(e.g., Eastern Time \(US & Canada\)\) |
|   ↳ `iana_time_zone` | string | IANA time zone \(e.g., America/New_York\) |
|   ↳ `phone` | string | Phone number |
|   ↳ `shared_phone_number` | boolean | Whether the phone number is shared |
|   ↳ `photo` | object | User photo details |
|     ↳ `content_url` | string | URL to the photo |
|     ↳ `file_name` | string | Photo file name |
|     ↳ `size` | number | File size in bytes |
|   ↳ `locale` | string | Locale \(e.g., en-US\) |
|   ↳ `locale_id` | number | Locale ID |
|   ↳ `organization_id` | number | Primary organization ID |
|   ↳ `role` | string | User role \(end-user, agent, admin\) |
|   ↳ `role_type` | number | Role type identifier |
|   ↳ `custom_role_id` | number | Custom role ID |
|   ↳ `active` | boolean | Whether the user is active \(false if deleted\) |
|   ↳ `verified` | boolean | Whether any user identity has been verified |
|   ↳ `alias` | string | Alias displayed to end users |
|   ↳ `details` | string | Details about the user |
|   ↳ `notes` | string | Notes about the user |
|   ↳ `signature` | string | User signature for email replies |
|   ↳ `default_group_id` | number | Default group ID for the user |
|   ↳ `tags` | array | Tags associated with the user |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `restricted_agent` | boolean | Whether the agent has restrictions |
|   ↳ `suspended` | boolean | Whether the user is suspended |
|   ↳ `moderator` | boolean | Whether the user has moderator permissions |
|   ↳ `chat_only` | boolean | Whether the user is a chat-only agent |
|   ↳ `only_private_comments` | boolean | Whether the user can only create private comments |
|   ↳ `two_factor_auth_enabled` | boolean | Whether two-factor auth is enabled |
|   ↳ `last_login_at` | string | Last login time \(ISO 8601 format\) |
|   ↳ `ticket_restriction` | string | Ticket access restriction \(organization, groups, assigned, requested\) |
|   ↳ `user_fields` | json | Custom user fields \(dynamic key-value pairs\) |
|   ↳ `shared` | boolean | Whether the user is shared from a different Zendesk |
|   ↳ `shared_agent` | boolean | Whether the agent is shared from a different Zendesk |
|   ↳ `remote_photo_url` | string | URL to a remote photo |
| `user_id` | number | The user ID |

### `zendesk_get_current_user`

Get the currently authenticated user from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | Current user object |
|   ↳ `id` | number | Automatically assigned user ID |
|   ↳ `url` | string | API URL of the user |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | Primary email address |
|   ↳ `created_at` | string | When the user was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the user was last updated \(ISO 8601 format\) |
|   ↳ `time_zone` | string | Time zone \(e.g., Eastern Time \(US & Canada\)\) |
|   ↳ `iana_time_zone` | string | IANA time zone \(e.g., America/New_York\) |
|   ↳ `phone` | string | Phone number |
|   ↳ `shared_phone_number` | boolean | Whether the phone number is shared |
|   ↳ `photo` | object | User photo details |
|     ↳ `content_url` | string | URL to the photo |
|     ↳ `file_name` | string | Photo file name |
|     ↳ `size` | number | File size in bytes |
|   ↳ `locale` | string | Locale \(e.g., en-US\) |
|   ↳ `locale_id` | number | Locale ID |
|   ↳ `organization_id` | number | Primary organization ID |
|   ↳ `role` | string | User role \(end-user, agent, admin\) |
|   ↳ `role_type` | number | Role type identifier |
|   ↳ `custom_role_id` | number | Custom role ID |
|   ↳ `active` | boolean | Whether the user is active \(false if deleted\) |
|   ↳ `verified` | boolean | Whether any user identity has been verified |
|   ↳ `alias` | string | Alias displayed to end users |
|   ↳ `details` | string | Details about the user |
|   ↳ `notes` | string | Notes about the user |
|   ↳ `signature` | string | User signature for email replies |
|   ↳ `default_group_id` | number | Default group ID for the user |
|   ↳ `tags` | array | Tags associated with the user |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `restricted_agent` | boolean | Whether the agent has restrictions |
|   ↳ `suspended` | boolean | Whether the user is suspended |
|   ↳ `moderator` | boolean | Whether the user has moderator permissions |
|   ↳ `chat_only` | boolean | Whether the user is a chat-only agent |
|   ↳ `only_private_comments` | boolean | Whether the user can only create private comments |
|   ↳ `two_factor_auth_enabled` | boolean | Whether two-factor auth is enabled |
|   ↳ `last_login_at` | string | Last login time \(ISO 8601 format\) |
|   ↳ `ticket_restriction` | string | Ticket access restriction \(organization, groups, assigned, requested\) |
|   ↳ `user_fields` | json | Custom user fields \(dynamic key-value pairs\) |
|   ↳ `shared` | boolean | Whether the user is shared from a different Zendesk |
|   ↳ `shared_agent` | boolean | Whether the agent is shared from a different Zendesk |
|   ↳ `remote_photo_url` | string | URL to a remote photo |
| `user_id` | number | The current user ID |

### `zendesk_search_users`

Search for users in Zendesk using a query string

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `query` | string | No | Search query string \(e.g., user name or email\) |
| `externalId` | string | No | External ID to search by \(your system identifier\) |
| `perPage` | string | No | Results per page as a number string \(default: "100", max: "100"\) |
| `page` | string | No | Page number for pagination \(1-based\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `users` | array | Array of user objects |
|   ↳ `id` | number | Automatically assigned user ID |
|   ↳ `url` | string | API URL of the user |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | Primary email address |
|   ↳ `created_at` | string | When the user was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the user was last updated \(ISO 8601 format\) |
|   ↳ `time_zone` | string | Time zone \(e.g., Eastern Time \(US & Canada\)\) |
|   ↳ `iana_time_zone` | string | IANA time zone \(e.g., America/New_York\) |
|   ↳ `phone` | string | Phone number |
|   ↳ `shared_phone_number` | boolean | Whether the phone number is shared |
|   ↳ `photo` | object | User photo details |
|     ↳ `content_url` | string | URL to the photo |
|     ↳ `file_name` | string | Photo file name |
|     ↳ `size` | number | File size in bytes |
|   ↳ `locale` | string | Locale \(e.g., en-US\) |
|   ↳ `locale_id` | number | Locale ID |
|   ↳ `organization_id` | number | Primary organization ID |
|   ↳ `role` | string | User role \(end-user, agent, admin\) |
|   ↳ `role_type` | number | Role type identifier |
|   ↳ `custom_role_id` | number | Custom role ID |
|   ↳ `active` | boolean | Whether the user is active \(false if deleted\) |
|   ↳ `verified` | boolean | Whether any user identity has been verified |
|   ↳ `alias` | string | Alias displayed to end users |
|   ↳ `details` | string | Details about the user |
|   ↳ `notes` | string | Notes about the user |
|   ↳ `signature` | string | User signature for email replies |
|   ↳ `default_group_id` | number | Default group ID for the user |
|   ↳ `tags` | array | Tags associated with the user |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `restricted_agent` | boolean | Whether the agent has restrictions |
|   ↳ `suspended` | boolean | Whether the user is suspended |
|   ↳ `moderator` | boolean | Whether the user has moderator permissions |
|   ↳ `chat_only` | boolean | Whether the user is a chat-only agent |
|   ↳ `only_private_comments` | boolean | Whether the user can only create private comments |
|   ↳ `two_factor_auth_enabled` | boolean | Whether two-factor auth is enabled |
|   ↳ `last_login_at` | string | Last login time \(ISO 8601 format\) |
|   ↳ `ticket_restriction` | string | Ticket access restriction \(organization, groups, assigned, requested\) |
|   ↳ `user_fields` | json | Custom user fields \(dynamic key-value pairs\) |
|   ↳ `shared` | boolean | Whether the user is shared from a different Zendesk |
|   ↳ `shared_agent` | boolean | Whether the agent is shared from a different Zendesk |
|   ↳ `remote_photo_url` | string | URL to a remote photo |
| `paging` | object | Cursor-based pagination information |
|   ↳ `after_cursor` | string | Cursor for fetching the next page of results |
|   ↳ `has_more` | boolean | Whether more results are available |
|   ↳ `next_page` | string | URL for next page of results |
| `metadata` | object | Response metadata |
|   ↳ `total_returned` | number | Number of items returned in this response |
|   ↳ `has_more` | boolean | Whether more items are available |

### `zendesk_create_user`

Create a new user in Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `name` | string | Yes | User full name \(e.g., "John Smith"\) |
| `userEmail` | string | No | User email address \(e.g., "john@example.com"\) |
| `role` | string | No | User role: "end-user", "agent", or "admin" |
| `phone` | string | No | User phone number \(e.g., "+1-555-123-4567"\) |
| `organizationId` | string | No | Organization ID as a numeric string \(e.g., "12345"\) |
| `verified` | string | No | Set to "true" to skip email verification, or "false" otherwise |
| `tags` | string | No | Comma-separated tags \(e.g., "vip, enterprise"\) |
| `customFields` | string | No | Custom fields as JSON object \(e.g., \{"field_id": "value"\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | Created user object |
|   ↳ `id` | number | Automatically assigned user ID |
|   ↳ `url` | string | API URL of the user |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | Primary email address |
|   ↳ `created_at` | string | When the user was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the user was last updated \(ISO 8601 format\) |
|   ↳ `time_zone` | string | Time zone \(e.g., Eastern Time \(US & Canada\)\) |
|   ↳ `iana_time_zone` | string | IANA time zone \(e.g., America/New_York\) |
|   ↳ `phone` | string | Phone number |
|   ↳ `shared_phone_number` | boolean | Whether the phone number is shared |
|   ↳ `photo` | object | User photo details |
|     ↳ `content_url` | string | URL to the photo |
|     ↳ `file_name` | string | Photo file name |
|     ↳ `size` | number | File size in bytes |
|   ↳ `locale` | string | Locale \(e.g., en-US\) |
|   ↳ `locale_id` | number | Locale ID |
|   ↳ `organization_id` | number | Primary organization ID |
|   ↳ `role` | string | User role \(end-user, agent, admin\) |
|   ↳ `role_type` | number | Role type identifier |
|   ↳ `custom_role_id` | number | Custom role ID |
|   ↳ `active` | boolean | Whether the user is active \(false if deleted\) |
|   ↳ `verified` | boolean | Whether any user identity has been verified |
|   ↳ `alias` | string | Alias displayed to end users |
|   ↳ `details` | string | Details about the user |
|   ↳ `notes` | string | Notes about the user |
|   ↳ `signature` | string | User signature for email replies |
|   ↳ `default_group_id` | number | Default group ID for the user |
|   ↳ `tags` | array | Tags associated with the user |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `restricted_agent` | boolean | Whether the agent has restrictions |
|   ↳ `suspended` | boolean | Whether the user is suspended |
|   ↳ `moderator` | boolean | Whether the user has moderator permissions |
|   ↳ `chat_only` | boolean | Whether the user is a chat-only agent |
|   ↳ `only_private_comments` | boolean | Whether the user can only create private comments |
|   ↳ `two_factor_auth_enabled` | boolean | Whether two-factor auth is enabled |
|   ↳ `last_login_at` | string | Last login time \(ISO 8601 format\) |
|   ↳ `ticket_restriction` | string | Ticket access restriction \(organization, groups, assigned, requested\) |
|   ↳ `user_fields` | json | Custom user fields \(dynamic key-value pairs\) |
|   ↳ `shared` | boolean | Whether the user is shared from a different Zendesk |
|   ↳ `shared_agent` | boolean | Whether the agent is shared from a different Zendesk |
|   ↳ `remote_photo_url` | string | URL to a remote photo |
| `user_id` | number | The created user ID |

### `zendesk_create_users_bulk`

Create multiple users in Zendesk using bulk import

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `users` | string | Yes | JSON array of user objects to create \(e.g., \[\{"name": "User1", "email": "user1@example.com"\}\]\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `job_status` | object | Job status object for bulk operations |
|   ↳ `id` | string | Automatically assigned job ID |
|   ↳ `url` | string | URL to poll for status updates |
|   ↳ `status` | string | Current job status \(queued, working, failed, completed\) |
|   ↳ `job_type` | string | Category of background task |
|   ↳ `total` | number | Total number of tasks in this job |
|   ↳ `progress` | number | Number of tasks already completed |
|   ↳ `message` | string | Message from the job worker |
|   ↳ `results` | array | Array of result objects from the job |
|     ↳ `id` | number | ID of the created or updated resource |
|     ↳ `index` | number | Position of the result in the batch |
|     ↳ `action` | string | Action performed \(e.g., create, update\) |
|     ↳ `success` | boolean | Whether the operation succeeded |
|     ↳ `status` | string | Status message \(e.g., Updated, Created\) |
|     ↳ `error` | string | Error message if operation failed |
| `job_id` | string | The bulk operation job ID |

### `zendesk_update_user`

Update an existing user in Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `userId` | string | Yes | User ID to update as a numeric string \(e.g., "12345"\) |
| `name` | string | No | New user full name \(e.g., "John Smith"\) |
| `userEmail` | string | No | New user email address \(e.g., "john@example.com"\) |
| `role` | string | No | User role: "end-user", "agent", or "admin" |
| `phone` | string | No | User phone number \(e.g., "+1-555-123-4567"\) |
| `organizationId` | string | No | Organization ID as a numeric string \(e.g., "67890"\) |
| `verified` | string | No | Set to "true" to mark user as verified, or "false" otherwise |
| `tags` | string | No | Comma-separated tags \(e.g., "vip, enterprise"\) |
| `customFields` | string | No | Custom fields as JSON object \(e.g., \{"field_id": "value"\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | Updated user object |
|   ↳ `id` | number | Automatically assigned user ID |
|   ↳ `url` | string | API URL of the user |
|   ↳ `name` | string | User name |
|   ↳ `email` | string | Primary email address |
|   ↳ `created_at` | string | When the user was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the user was last updated \(ISO 8601 format\) |
|   ↳ `time_zone` | string | Time zone \(e.g., Eastern Time \(US & Canada\)\) |
|   ↳ `iana_time_zone` | string | IANA time zone \(e.g., America/New_York\) |
|   ↳ `phone` | string | Phone number |
|   ↳ `shared_phone_number` | boolean | Whether the phone number is shared |
|   ↳ `photo` | object | User photo details |
|     ↳ `content_url` | string | URL to the photo |
|     ↳ `file_name` | string | Photo file name |
|     ↳ `size` | number | File size in bytes |
|   ↳ `locale` | string | Locale \(e.g., en-US\) |
|   ↳ `locale_id` | number | Locale ID |
|   ↳ `organization_id` | number | Primary organization ID |
|   ↳ `role` | string | User role \(end-user, agent, admin\) |
|   ↳ `role_type` | number | Role type identifier |
|   ↳ `custom_role_id` | number | Custom role ID |
|   ↳ `active` | boolean | Whether the user is active \(false if deleted\) |
|   ↳ `verified` | boolean | Whether any user identity has been verified |
|   ↳ `alias` | string | Alias displayed to end users |
|   ↳ `details` | string | Details about the user |
|   ↳ `notes` | string | Notes about the user |
|   ↳ `signature` | string | User signature for email replies |
|   ↳ `default_group_id` | number | Default group ID for the user |
|   ↳ `tags` | array | Tags associated with the user |
|   ↳ `external_id` | string | External ID for linking to external records |
|   ↳ `restricted_agent` | boolean | Whether the agent has restrictions |
|   ↳ `suspended` | boolean | Whether the user is suspended |
|   ↳ `moderator` | boolean | Whether the user has moderator permissions |
|   ↳ `chat_only` | boolean | Whether the user is a chat-only agent |
|   ↳ `only_private_comments` | boolean | Whether the user can only create private comments |
|   ↳ `two_factor_auth_enabled` | boolean | Whether two-factor auth is enabled |
|   ↳ `last_login_at` | string | Last login time \(ISO 8601 format\) |
|   ↳ `ticket_restriction` | string | Ticket access restriction \(organization, groups, assigned, requested\) |
|   ↳ `user_fields` | json | Custom user fields \(dynamic key-value pairs\) |
|   ↳ `shared` | boolean | Whether the user is shared from a different Zendesk |
|   ↳ `shared_agent` | boolean | Whether the agent is shared from a different Zendesk |
|   ↳ `remote_photo_url` | string | URL to a remote photo |
| `user_id` | number | The updated user ID |

### `zendesk_update_users_bulk`

Update multiple users in Zendesk using bulk update

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `users` | string | Yes | JSON array of user objects to update, each must include id field \(e.g., \[\{"id": "123", "name": "New Name"\}\]\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `job_status` | object | Job status object for bulk operations |
|   ↳ `id` | string | Automatically assigned job ID |
|   ↳ `url` | string | URL to poll for status updates |
|   ↳ `status` | string | Current job status \(queued, working, failed, completed\) |
|   ↳ `job_type` | string | Category of background task |
|   ↳ `total` | number | Total number of tasks in this job |
|   ↳ `progress` | number | Number of tasks already completed |
|   ↳ `message` | string | Message from the job worker |
|   ↳ `results` | array | Array of result objects from the job |
|     ↳ `id` | number | ID of the created or updated resource |
|     ↳ `index` | number | Position of the result in the batch |
|     ↳ `action` | string | Action performed \(e.g., create, update\) |
|     ↳ `success` | boolean | Whether the operation succeeded |
|     ↳ `status` | string | Status message \(e.g., Updated, Created\) |
|     ↳ `error` | string | Error message if operation failed |
| `job_id` | string | The bulk operation job ID |

### `zendesk_delete_user`

Delete a user from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `userId` | string | Yes | User ID to delete as a numeric string \(e.g., "12345"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Deletion success |
| `user_id` | string | The deleted user ID |

### `zendesk_get_organizations`

Retrieve a list of organizations from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain \(e.g., "mycompany" for mycompany.zendesk.com\) |
| `perPage` | string | No | Results per page as a number string \(default: "100", max: "100"\) |
| `pageAfter` | string | No | Cursor from a previous response to fetch the next page of results |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `organizations` | array | Array of organization objects |
|   ↳ `id` | number | Automatically assigned organization ID |
|   ↳ `url` | string | API URL of the organization |
|   ↳ `name` | string | Unique organization name |
|   ↳ `domain_names` | array | Domain names for automatic user assignment |
|   ↳ `details` | string | Details about the organization |
|   ↳ `notes` | string | Notes about the organization |
|   ↳ `group_id` | number | Group ID for auto-routing new tickets |
|   ↳ `shared_tickets` | boolean | Whether end users can see each others tickets |
|   ↳ `shared_comments` | boolean | Whether end users can see each others comments |
|   ↳ `tags` | array | Tags associated with the organization |
|   ↳ `organization_fields` | json | Custom organization fields \(dynamic key-value pairs\) |
|   ↳ `created_at` | string | When the organization was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the organization was last updated \(ISO 8601 format\) |
|   ↳ `external_id` | string | External ID for linking to external records |
| `paging` | object | Cursor-based pagination information |
|   ↳ `after_cursor` | string | Cursor for fetching the next page of results |
|   ↳ `has_more` | boolean | Whether more results are available |
|   ↳ `next_page` | string | URL for next page of results |
| `metadata` | object | Response metadata |
|   ↳ `total_returned` | number | Number of items returned in this response |
|   ↳ `has_more` | boolean | Whether more items are available |

### `zendesk_get_organization`

Get a single organization by ID from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `organizationId` | string | Yes | Organization ID to retrieve as a numeric string \(e.g., "12345"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `organization` | object | Organization object |
|   ↳ `id` | number | Automatically assigned organization ID |
|   ↳ `url` | string | API URL of the organization |
|   ↳ `name` | string | Unique organization name |
|   ↳ `domain_names` | array | Domain names for automatic user assignment |
|   ↳ `details` | string | Details about the organization |
|   ↳ `notes` | string | Notes about the organization |
|   ↳ `group_id` | number | Group ID for auto-routing new tickets |
|   ↳ `shared_tickets` | boolean | Whether end users can see each others tickets |
|   ↳ `shared_comments` | boolean | Whether end users can see each others comments |
|   ↳ `tags` | array | Tags associated with the organization |
|   ↳ `organization_fields` | json | Custom organization fields \(dynamic key-value pairs\) |
|   ↳ `created_at` | string | When the organization was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the organization was last updated \(ISO 8601 format\) |
|   ↳ `external_id` | string | External ID for linking to external records |
| `organization_id` | number | The organization ID |

### `zendesk_autocomplete_organizations`

Autocomplete organizations in Zendesk by name prefix (for name matching/autocomplete)

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `name` | string | Yes | Organization name prefix to search for \(e.g., "Acme"\) |
| `perPage` | string | No | Results per page as a number string \(default: "100", max: "100"\) |
| `page` | string | No | Page number for pagination \(1-based\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `organizations` | array | Array of organization objects |
|   ↳ `id` | number | Automatically assigned organization ID |
|   ↳ `url` | string | API URL of the organization |
|   ↳ `name` | string | Unique organization name |
|   ↳ `domain_names` | array | Domain names for automatic user assignment |
|   ↳ `details` | string | Details about the organization |
|   ↳ `notes` | string | Notes about the organization |
|   ↳ `group_id` | number | Group ID for auto-routing new tickets |
|   ↳ `shared_tickets` | boolean | Whether end users can see each others tickets |
|   ↳ `shared_comments` | boolean | Whether end users can see each others comments |
|   ↳ `tags` | array | Tags associated with the organization |
|   ↳ `organization_fields` | json | Custom organization fields \(dynamic key-value pairs\) |
|   ↳ `created_at` | string | When the organization was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the organization was last updated \(ISO 8601 format\) |
|   ↳ `external_id` | string | External ID for linking to external records |
| `paging` | object | Cursor-based pagination information |
|   ↳ `after_cursor` | string | Cursor for fetching the next page of results |
|   ↳ `has_more` | boolean | Whether more results are available |
|   ↳ `next_page` | string | URL for next page of results |
| `metadata` | object | Response metadata |
|   ↳ `total_returned` | number | Number of items returned in this response |
|   ↳ `has_more` | boolean | Whether more items are available |

### `zendesk_create_organization`

Create a new organization in Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `name` | string | Yes | Organization name \(e.g., "Acme Corporation"\) |
| `domainNames` | string | No | Comma-separated domain names \(e.g., "acme.com, acme.org"\) |
| `details` | string | No | Organization details text |
| `notes` | string | No | Organization notes text |
| `tags` | string | No | Comma-separated tags \(e.g., "enterprise, priority"\) |
| `customFields` | string | No | Custom fields as JSON object \(e.g., \{"field_id": "value"\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `organization` | object | Created organization object |
|   ↳ `id` | number | Automatically assigned organization ID |
|   ↳ `url` | string | API URL of the organization |
|   ↳ `name` | string | Unique organization name |
|   ↳ `domain_names` | array | Domain names for automatic user assignment |
|   ↳ `details` | string | Details about the organization |
|   ↳ `notes` | string | Notes about the organization |
|   ↳ `group_id` | number | Group ID for auto-routing new tickets |
|   ↳ `shared_tickets` | boolean | Whether end users can see each others tickets |
|   ↳ `shared_comments` | boolean | Whether end users can see each others comments |
|   ↳ `tags` | array | Tags associated with the organization |
|   ↳ `organization_fields` | json | Custom organization fields \(dynamic key-value pairs\) |
|   ↳ `created_at` | string | When the organization was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the organization was last updated \(ISO 8601 format\) |
|   ↳ `external_id` | string | External ID for linking to external records |
| `organization_id` | number | The created organization ID |

### `zendesk_create_organizations_bulk`

Create multiple organizations in Zendesk using bulk import

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `organizations` | string | Yes | JSON array of organization objects to create \(e.g., \[\{"name": "Org1"\}, \{"name": "Org2"\}\]\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `job_status` | object | Job status object for bulk operations |
|   ↳ `id` | string | Automatically assigned job ID |
|   ↳ `url` | string | URL to poll for status updates |
|   ↳ `status` | string | Current job status \(queued, working, failed, completed\) |
|   ↳ `job_type` | string | Category of background task |
|   ↳ `total` | number | Total number of tasks in this job |
|   ↳ `progress` | number | Number of tasks already completed |
|   ↳ `message` | string | Message from the job worker |
|   ↳ `results` | array | Array of result objects from the job |
|     ↳ `id` | number | ID of the created or updated resource |
|     ↳ `index` | number | Position of the result in the batch |
|     ↳ `action` | string | Action performed \(e.g., create, update\) |
|     ↳ `success` | boolean | Whether the operation succeeded |
|     ↳ `status` | string | Status message \(e.g., Updated, Created\) |
|     ↳ `error` | string | Error message if operation failed |
| `job_id` | string | The bulk operation job ID |

### `zendesk_update_organization`

Update an existing organization in Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `organizationId` | string | Yes | Organization ID to update as a numeric string \(e.g., "12345"\) |
| `name` | string | No | New organization name \(e.g., "Acme Corporation"\) |
| `domainNames` | string | No | Comma-separated domain names \(e.g., "acme.com, acme.org"\) |
| `details` | string | No | Organization details text |
| `notes` | string | No | Organization notes text |
| `tags` | string | No | Comma-separated tags \(e.g., "enterprise, priority"\) |
| `customFields` | string | No | Custom fields as JSON object \(e.g., \{"field_id": "value"\}\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `organization` | object | Updated organization object |
|   ↳ `id` | number | Automatically assigned organization ID |
|   ↳ `url` | string | API URL of the organization |
|   ↳ `name` | string | Unique organization name |
|   ↳ `domain_names` | array | Domain names for automatic user assignment |
|   ↳ `details` | string | Details about the organization |
|   ↳ `notes` | string | Notes about the organization |
|   ↳ `group_id` | number | Group ID for auto-routing new tickets |
|   ↳ `shared_tickets` | boolean | Whether end users can see each others tickets |
|   ↳ `shared_comments` | boolean | Whether end users can see each others comments |
|   ↳ `tags` | array | Tags associated with the organization |
|   ↳ `organization_fields` | json | Custom organization fields \(dynamic key-value pairs\) |
|   ↳ `created_at` | string | When the organization was created \(ISO 8601 format\) |
|   ↳ `updated_at` | string | When the organization was last updated \(ISO 8601 format\) |
|   ↳ `external_id` | string | External ID for linking to external records |
| `organization_id` | number | The updated organization ID |

### `zendesk_delete_organization`

Delete an organization from Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `organizationId` | string | Yes | Organization ID to delete as a numeric string \(e.g., "12345"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the organization was successfully deleted |
| `organization_id` | string | The deleted organization ID |

### `zendesk_search`

Unified search across tickets, users, and organizations in Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `query` | string | Yes | Search query string using Zendesk search syntax \(e.g., "type:ticket status:open"\) |
| `filterType` | string | Yes | Resource type to search for: "ticket", "user", "organization", or "group" |
| `perPage` | string | No | Results per page as a number string \(default: "100", max: "100"\) |
| `pageAfter` | string | No | Cursor from a previous response to fetch the next page of results |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `paging` | object | Cursor-based pagination information |
|   ↳ `after_cursor` | string | Cursor for fetching the next page of results |
|   ↳ `has_more` | boolean | Whether more results are available |
|   ↳ `next_page` | string | URL for next page of results |
| `metadata` | object | Response metadata |
|   ↳ `total_returned` | number | Number of items returned in this response |
|   ↳ `has_more` | boolean | Whether more items are available |
| `results` | array | Array of result objects \(tickets, users, or organizations depending on search query\) |

### `zendesk_search_count`

Count the number of search results matching a query in Zendesk

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | Your Zendesk email address |
| `apiToken` | string | Yes | Zendesk API token |
| `subdomain` | string | Yes | Your Zendesk subdomain |
| `query` | string | Yes | Search query string using Zendesk search syntax \(e.g., "type:ticket status:open"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `count` | number | Number of matching results |


