Zendesk MCP server

Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on Zendesk, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.

Overview

This pack gives an agent full control over a Zendesk Support instance, covering the complete ticket lifecycle, user and organization management, group browsing, search, and file uploads for attachments. All tools take a subdomain parameter, so one server can work against any Zendesk instance the conversation is about.

For setup instructions, see SnapLogic MCP Server quickstart.

Example Prompts

  • Upload this screenshot to Zendesk as screenshot.png
  • Push the error log at that URL into Zendesk so I can attach it to a ticket
  • Get me an upload token for invoice-2026-04.pdf from this link
  • Upload the customer's attachment to Zendesk before we reply on the ticket
  • What support groups exist in our Zendesk?
  • List the Zendesk agent groups and their ids
  • Which team would a billing question be routed to?
  • Show me the groups configured on the acme instance
  • List the organizations in our Zendesk
  • Which customer accounts are set up in Zendesk?

Tools

Tool Name Functions
ZendeskAttachmentUpload Upload a file to Zendesk's attachment store and get an upload token.
ZendeskGroupList List the agent groups in a Zendesk instance.
ZendeskOrgList List the organizations in a Zendesk instance, paged.
ZendeskOrgShow Retrieve a single Zendesk organization by id.
ZendeskSearch Search Zendesk with its native query syntax across tickets, users and organizations.
ZendeskTicketComments Read the full comment thread on a Zendesk ticket.
ZendeskTicketCreate Create a new Zendesk ticket with a subject and opening comment.
ZendeskTicketDelete Delete a Zendesk ticket by id.
ZendeskTicketList List tickets from a Zendesk instance, sorted and paged.
ZendeskTicketMerge Merge duplicate Zendesk tickets into a target ticket.
ZendeskTicketShow Retrieve a single Zendesk ticket by id.
ZendeskTicketUpdate Update a Zendesk ticket's status, priority, assignee, tags or add a comment.
ZendeskUserCreate Create a new Zendesk user with a name, email and role.
ZendeskUserSearch Find Zendesk users by email, name or partial text.
ZendeskUserShow Retrieve a single Zendesk user by id.

Set up the MCP Server tools

  1. Download zendesk_tools.zip.
  2. In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded zendesk_tools.zip. Designer unpacks each pipeline into the project.
  3. Attach the required account to the connectivity snaps (see Connection Setup).
  4. Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.

Configure account

Attach an API Suite account (OAuth 2.0 or Bearer token) to the HTTP Client snap in Designer after import.

These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.

See the SnapLogic account documentation for this connector: API Suite Account Configuration.

Important: These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute. Credentials live in the SnapLogic account store, never in the pipeline JSON.

ZendeskAttachmentUpload

Uploads a file to Zendesk by URL and returns an upload token that can be used when adding a comment. This is a preparatory step; to attach the file to a ticket, pass the token with a ZendeskTicketUpdate comment.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

filename* string

Filename Zendesk records for the upload, e.g. screenshot.png; URL-encoded onto the uploads endpoint.

file_url* string

URL the file content is read from and posted as the multipart file part.

* Required parameter.

Try asking:

  • Upload this screenshot to Zendesk as screenshot.png
  • Push the error log at that URL into Zendesk so I can attach it to a ticket
  • Get me an upload token for invoice-2026-04.pdf from this link
  • Upload the customer's attachment to Zendesk before we reply on the ticket

ZendeskGroupList

Lists all agent groups in a Zendesk instance, with their names and IDs. Use this for orientation before triaging tickets, to see which teams exist and what they are called.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

* Required parameter.

Try asking:

  • What support groups exist in our Zendesk?
  • List the Zendesk agent groups and their ids
  • Which team would a billing question be routed to?
  • Show me the groups configured on the acme instance

ZendeskOrgList

Returns a page of organizations in the Zendesk instance. Use this to browse customer accounts and get org IDs for ZendeskOrgShow; for finding a specific org by name, ZendeskSearch is faster.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

page string

Page number of the organization collection to return, e.g. 2. Omitted from the request when blank, giving the first page.

* Required parameter.

Try asking:

  • List the organizations in our Zendesk
  • Which customer accounts are set up in Zendesk?
  • Get me the second page of organizations
  • Show me the organizations on the acme Zendesk instance

ZendeskOrgShow

Returns the full record for a single Zendesk organization by its numeric ID. Use this once you have an org ID from ZendeskOrgList, a search, or a ticket's organization_id field.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

organization_id* string

Numeric id of the organization to retrieve, e.g. 123456.

* Required parameter.

Try asking:

  • Show me organization 123456
  • Which customer does this ticket belong to? Pull up their org record
  • What domains are registered against that organization?
  • Get the notes and tags on the Acme organization record

ZendeskSearch

Runs a query through Zendesk's search API using its native syntax, covering tickets, users, and organizations in one call. Use this whenever the question has a qualifier such as status, priority, assignee, or date; the list tools apply no filtering.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

query* string

Zendesk search query in its native syntax, e.g. type:ticket status:open priority:urgent; URL-encoded into the search endpoint.

sort_by string

Field to sort the results by, e.g. updated_at. Omitted from the request when blank.

sort_order string

Sort direction, asc or desc. Omitted from the request when blank.

* Required parameter.

Try asking:

  • Find all open urgent tickets
  • Search for unassigned tickets tagged billing
  • Which tickets from the Acme organization are still pending?
  • Show me tickets created in the last week about login failures, newest first
  • Find solved tickets assigned to that agent, sorted by updated date

ZendeskTicketComments

Returns all comments on a ticket, including public replies and internal notes, in the order you choose. Use this when the user wants to know what was said, needs a summary, or is drafting a reply; ZendeskTicketShow returns the ticket fields but not the conversation history.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

ticket_id* string

Numeric id of the ticket whose comment thread is returned, e.g. 12345.

sort_order string

Order of the returned comments, asc or desc. Omitted from the request when blank.

* Required parameter.

Try asking:

  • Summarise the conversation on ticket 12345
  • What did the customer last say on ticket 4821?
  • Show me all the comments on ticket 900123, oldest first
  • Read me the notes on that escalated ticket, newest first

ZendeskTicketCreate

Opens a new Zendesk ticket with a subject and opening comment. Optional fields include priority, type, assignee, tags, and a requester email; Zendesk creates the requester user automatically if the email is not already in the system.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

subject* string

Subject line of the new ticket, e.g. Printer not working.

comment_body* string

Text of the ticket's opening comment, which becomes its description.

priority string

Ticket priority, e.g. low, normal, high or urgent. Omitted from the request body when blank.

type string

Ticket type, e.g. question, incident, problem or task. Omitted from the request body when blank.

assignee_id string

Numeric user id of the agent to assign the ticket to; parsed to an integer. Omitted when blank.

requester_email string

Email address of the requester the ticket is raised for, sent as requester.email. Omitted when blank.

tags string

Comma-separated tags to set on the ticket, e.g. billing,outage; split and trimmed into a list. Omitted when blank.

* Required parameter.

Try asking:

  • Open a ticket: 'Printer on floor 3 is jammed', normal priority
  • Raise an urgent incident ticket about the checkout page being down and tag it billing,outage
  • Create a ticket on behalf of [email protected] about her missing invoice
  • Log a question ticket asking how to reset SSO, and assign it to user 388291
  • File a high-priority task ticket for the office move and tag it facilities

ZendeskTicketDelete

Permanently deletes a single ticket by ID, with no undo. Confirm the ticket ID with the user before calling; for genuine duplicates, ZendeskTicketMerge preserves history and is usually the better choice.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

ticket_id* string

Numeric id of the ticket to delete, e.g. 99999.

* Required parameter.

Try asking:

  • Delete ticket 99999, it was a test
  • Remove the spam ticket 41022 from the queue
  • Get rid of the duplicate ticket I created by mistake

ZendeskTicketList

Returns a page of tickets from the Zendesk instance, sortable by field and direction. This tool applies no filtering; for a filtered view by status, priority, or requester, use ZendeskSearch instead.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

sort_by string

Zendesk sort field for the ticket page, e.g. updated_at or created_at. Omitted from the request when blank.

sort_order string

Sort direction, asc or desc. Omitted from the request when blank.

page string

Page number of the ticket collection to return, e.g. 3. Omitted from the request when blank, giving the first page.

* Required parameter.

Try asking:

  • Show me the tickets in our Zendesk, newest updated first
  • List the latest tickets from the acme Zendesk instance
  • Get me page 3 of the ticket list sorted by created_at ascending
  • What tickets are currently in the system? Sort by updated date descending
  • Pull the next page of tickets

ZendeskTicketMerge

Merges one or more duplicate tickets into a target ticket, closing the sources and preserving their history. Prefer this over ZendeskTicketDelete when the tickets represent the same issue.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

ticket_id* string

Numeric id of the target ticket the sources are merged into, e.g. 100.

source_ticket_ids* string

Comma-separated ids of the source tickets to merge in, e.g. 101, 102; split and parsed to integers.

target_comment string

Comment left on the target ticket recording the merge. Omitted from the request body when blank.

source_comment string

Comment left on each closed source ticket, e.g. closing as duplicate, see #550. Omitted when blank.

* Required parameter.

Try asking:

  • Merge tickets 101 and 102 into ticket 100 as duplicates
  • Fold ticket 4822 into 4821 and leave a note explaining they're the same outage
  • Combine these three duplicate password-reset tickets into the oldest one
  • Merge 555 into 550 with the source comment 'closing as duplicate, see #550'

ZendeskTicketShow

Returns the full record for a single ticket by its numeric ID, including status, priority, assignee, tags, and timestamps. This returns the ticket fields only; for the conversation history, use ZendeskTicketComments.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

ticket_id* string

Numeric id of the ticket to retrieve, e.g. 12345.

* Required parameter.

Try asking:

  • Show me ticket 12345
  • What's the current status and priority of ticket 4821?
  • Pull up the full details of that ticket we just found
  • Who is assigned to ticket 900123 and which organization raised it?

ZendeskTicketUpdate

Updates a ticket's status, priority, assignee, or tags, and optionally adds a comment that can be public or internal. Only the fields you supply are changed; tags replace the existing set rather than appending, so pass the full list you want.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

ticket_id* string

Numeric id of the ticket to update, e.g. 12345.

status string

New ticket status, e.g. new, open, pending, hold, solved or closed. Omitted from the request body when blank.

priority string

New ticket priority, e.g. low, normal, high or urgent. Omitted from the request body when blank.

assignee_id string

Numeric user id of the agent to reassign the ticket to; parsed to an integer. Omitted when blank.

comment_body string

Text of a comment to add to the ticket. No comment is sent when blank.

comment_public string

Whether the added comment is public: pass 'false' for an internal note. Defaults to public when blank, and only applies when comment_body is set.

tags string

Comma-separated tags to set on the ticket, e.g. billing,refund; split and trimmed into a list. Replaces the existing tags rather than appending; omitted when blank.

* Required parameter.

Try asking:

  • Set ticket 12345 to pending and add an internal note saying we're waiting on the customer
  • Escalate ticket 4821 to urgent and reassign it to user 388291
  • Solve that ticket with a public reply thanking the customer
  • Add a private comment to ticket 900123 with the workaround we found
  • Retag ticket 12345 as billing, refund and set it back to open

ZendeskUserCreate

Creates a Zendesk user with a name and email, defaulting to the end-user role unless you specify agent or admin. Use this when you need a user record to assign tickets to or attach to an organization.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

name* string

Full name of the new user, e.g. Jane Doe.

email* string

Email address of the new user, e.g. [email protected].

role string

Zendesk role for the new user, e.g. end-user, agent or admin. Defaults to end-user when blank.

* Required parameter.

Try asking:

  • Add Jane Doe, [email protected], as an end-user in Zendesk
  • Create a Zendesk agent account for our new hire Marco
  • Set up a user record for the customer contact at Acme before I raise their ticket
  • Add [email protected] to Zendesk as an admin

ZendeskUserSearch

Searches the Zendesk user directory by email, name, or partial text and returns matching user records. Use this to resolve a person's name or email into the numeric user ID that ticket assignment and profile lookups require.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

query* string

Free-text query matched against the user directory, e.g. an email address or name; URL-encoded into the user search endpoint.

* Required parameter.

Try asking:

  • Find the Zendesk user with the email [email protected]
  • Who in our Zendesk is called Jane Doe?
  • Look up the user id for our support agent Priya
  • Search for any users with an acme.com email address

ZendeskUserShow

Returns the full profile for a single Zendesk user by their numeric ID. Use this when you already have a user ID and need to see their role, organization, or other profile details.

Parameter Type Default Description
subdomain* string

Zendesk instance subdomain, e.g. acme for acme.zendesk.com.

user_id* string

Numeric id of the user to retrieve, e.g. 987654321.

* Required parameter.

Try asking:

  • Show me the profile for user 987654321
  • Who is the requester on this ticket? Look up their user record
  • Is user 388291 an agent or an end-user?
  • What organization does that user belong to?