Zendesk
Support ticketing. Create, triage, and resolve tickets, manage the customers and organizations who file them, and apply macros.
| Property | Value |
|---|---|
| Slug | zendesk |
| Definition version | 0.3.0 |
| Base URL | https://{{account.subdomain}}.zendesk.com |
| Auth schemes | oauth2 |
| Action tools | 34 |
| By class | 19 read, 11 write, 4 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |
Measured routing accuracy
52 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 34 cases written by hand and 18 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.
| Measure | Cases | Share |
|---|---|---|
| top-1 | 30/52 | 57.7% |
| top-8 | 42/52 | 80.8% |
The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.
Authentication
Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.
oauth2
| Property | Value |
|---|---|
| Authorization URL | https://{{account.subdomain}}.zendesk.com/oauth/authorizations/new |
| Token URL | https://{{account.subdomain}}.zendesk.com/oauth/token |
| Default scopes | read, write |
| Refresh tokens | no, so the end user reauthorizes when the token expires |
Tools
34 action tools. The catalog-wide slug is zendesk.<tool>, which is what search_tools returns and call_tool takes.
zendesk.create_ticket
Open a new Zendesk support ticket. Use when a user wants to file, log, or report a customer issue, complaint, or request in Zendesk. Requires a subject and the first comment; requester, assignee, group, priority, type, and tags are optional.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls POST /api/v2/tickets.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
assignee_id | integer | no | Agent user id to assign the ticket to. Omit to leave unassigned. |
comment_body | string | yes | Text of the ticket's first comment (the reported issue). |
comment_public | boolean | no | Whether the first comment is customer-visible. Default true. |
group_id | integer | no | Group id to route the ticket to, from list_groups. |
priority | string, one of low, normal, high, urgent | no | Ticket priority. Omit for Zendesk's default. |
requester_id | integer | no | User id of the person the ticket is filed for, from search_users. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
subject | string | yes | Ticket subject line. |
tags | array of string | no | Tags to attach at creation. Omit for none. |
type | string, one of problem, incident, question, task | no | Ticket type. Omit to leave unset. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
ticket | object | |
ticket.assignee_id | integer | |
ticket.created_at | string | |
ticket.id | integer | |
ticket.priority | string | |
ticket.requester_id | integer | |
ticket.status | string | |
ticket.subject | string |
Also retrieved by: "open a support case for a customer", "log a customer complaint", "file a new help desk ticket", "start tracking a customer's issue", "report a problem a customer is having".
zendesk.get_ticket
Get one Zendesk ticket's full detail by id: subject, status, priority, requester, assignee, and tags. Use when the user names a specific ticket number. For many tickets at once use list_tickets or search_tickets.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/tickets/{{params.ticket_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
ticket | object | |
ticket.assignee_id | integer | |
ticket.created_at | string | |
ticket.description | string | |
ticket.group_id | integer | |
ticket.id | integer | |
ticket.priority | string | |
ticket.requester_id | integer | |
ticket.status | string | |
ticket.subject | string | |
ticket.tags | array of string | |
ticket.type | string | |
ticket.updated_at | string |
Also retrieved by: "pull up a customer's support case", "check the status of a help desk ticket", "show me what this complaint says", "what's going on with this support case".
zendesk.update_ticket
Edit a Zendesk ticket's own fields: subject, priority, type, or tags. Use when the user wants to retitle, reprioritize, or retag a ticket. For its status use update_ticket_status; for assignee or group use assign_ticket; to add a reply use add_ticket_comment.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls PUT /api/v2/tickets/{{params.ticket_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
priority | string, one of low, normal, high, urgent | no | New priority. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
subject | string | no | New subject line. |
tags | array of string | no | Replacement tag list. Omit to leave tags unchanged. |
ticket_id | integer | yes | Ticket id to edit, from list_tickets or search_tickets. |
type | string, one of problem, incident, question, task | no | New ticket type. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
ticket | object | |
ticket.id | integer | |
ticket.priority | string | |
ticket.subject | string | |
ticket.tags | array of string | |
ticket.type | string |
Also retrieved by: "retitle a support case", "change the priority on a customer issue", "edit the details on a complaint", "retag a help desk ticket".
zendesk.delete_ticket
Permanently delete a Zendesk ticket. Use when the user wants to delete or remove a ticket for good, not just close or solve it. Irreversible; prefer update_ticket_status (closed) when the user might want the record kept.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes tickets:write. Calls DELETE /api/v2/tickets/{{params.ticket_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id to delete, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "wipe a support case from the system for good", "purge a customer complaint record entirely", "get rid of a help desk ticket permanently".
zendesk.list_tickets
List Zendesk tickets across the whole account, most recently updated first. Use when the user asks what tickets exist or wants a general queue, not a keyword search. For text or field filters use search_tickets; for one known ticket use get_ticket.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/tickets.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
sort_by | string, one of id, status, updated_at, created_at | no | Field to sort by. Default updated_at. |
sort_order | string, one of asc, desc | no | Sort direction. Default desc. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
next_page | string | |
tickets | array of object | |
tickets[].assignee_id | integer | |
tickets[].id | integer | |
tickets[].priority | string | |
tickets[].requester_id | integer | |
tickets[].status | string | |
tickets[].subject | string | |
tickets[].updated_at | string |
Also retrieved by: "show me every open support case", "what's in the help desk queue", "browse the whole ticket backlog".
zendesk.search_tickets
Search Zendesk tickets by keyword and field filters, e.g. status, priority, requester, or tag. Use for any ticket lookup that names a customer, keyword, or filter rather than a known ticket id. Zendesk query syntax, e.g. "status:open priority:urgent tag:billing".
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/search.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | yes | Zendesk search syntax, scoped to tickets, e.g. "type:ticket status:open requester:jane@example.com". |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
count | integer | |
results | array of object | |
results[].id | integer | |
results[].priority | string | |
results[].requester_id | integer | |
results[].status | string | |
results[].subject | string |
Also retrieved by: "find a support case by keyword", "look up tickets from a certain customer", "hunt down complaints tagged a certain way", "which cases are still open and urgent".
zendesk.list_ticket_comments
List the comments (replies) on a Zendesk ticket, in order, including whether each is public or an internal note. Use when the user wants to read a ticket's conversation or history. To post a new one use add_ticket_comment.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/tickets/{{params.ticket_id}}/comments.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
comments | array of object | |
comments[].author_id | integer | |
comments[].body | string | |
comments[].created_at | string | |
comments[].id | integer | |
comments[].public | boolean |
Also retrieved by: "show me the conversation on this support case", "what has been said back and forth on this ticket", "read the history of replies on this complaint".
zendesk.add_ticket_comment
Post a new comment or reply on a Zendesk ticket, public (customer visible) or an internal note. Use when the user wants to reply, respond, or add a note to a ticket. For its subject or priority use update_ticket instead.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls PUT /api/v2/tickets/{{params.ticket_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
body | string | yes | Comment text. |
public | boolean | no | Customer-visible reply if true, internal note if false. Default true. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id to comment on, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
ticket | object | |
ticket.id | integer | |
ticket.status | string | |
ticket.updated_at | string |
Also retrieved by: "reply to a customer's support case", "leave an internal note on a ticket", "respond to a help desk complaint", "write back to the customer on this case".
zendesk.assign_ticket
Assign a Zendesk ticket to an agent, a group, or both. Use when the user wants to assign, route, or hand off a ticket to someone or to a team. For the ticket's own fields use update_ticket.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls PUT /api/v2/tickets/{{params.ticket_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
assignee_id | integer | no | Agent user id to assign to, from search_users or list_users. |
group_id | integer | no | Group id to route to, from list_groups. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id to assign, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
ticket | object | |
ticket.assignee_id | integer | |
ticket.group_id | integer | |
ticket.id | integer |
Also retrieved by: "hand this support case to an agent", "route this ticket to the billing team", "put this complaint on someone's plate".
zendesk.update_ticket_status
Change a Zendesk ticket's workflow status: open, pending, solved, or closed. Use when the user wants to close, solve, reopen, or mark a ticket pending. For the ticket's own fields use update_ticket; to delete it entirely use delete_ticket.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls PUT /api/v2/tickets/{{params.ticket_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
status | string, one of new, open, pending, hold, solved, closed | yes | New ticket status. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
ticket | object | |
ticket.id | integer | |
ticket.status | string |
Also retrieved by: "mark a support case as solved", "reopen a closed ticket", "put a complaint on hold", "close out a help desk case".
zendesk.merge_tickets
Merge one or more Zendesk tickets into a target ticket, closing the merged-away tickets. Use when the user wants to merge, combine, or fold duplicate tickets together. Irreversible: the merged-away tickets' own identity is gone, the same reasoning as a CRM merge_contacts.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes tickets:write. Calls POST /api/v2/tickets/{{params.ticket_id}}/merge.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
ids | array of integer | yes | Ticket ids to merge into the target. |
source_comment | string | no | Optional comment left on the merged-away tickets. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
target_comment | string | no | Optional comment left on the target ticket. |
ticket_id | integer | yes | Target ticket id that survives the merge. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
job_status | object | |
job_status.id | string | |
job_status.status | string |
Also retrieved by: "combine two duplicate support cases into one", "fold this ticket into the other one", "treat these two complaints as the same case".
zendesk.create_user
Create a new Zendesk user: a customer (end-user) or, with the right role, an agent. Use when the user wants to add, register, or create a new customer or contact in Zendesk. Requires a name and email.
Class write (writes, no confirmation needed). Scopes users:write. Calls POST /api/v2/users.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
email | string | yes | Email address. |
name | string | yes | Full name. |
organization_id | integer | no | Organization id to file the user under, from list_organizations. |
phone | string | no | Optional phone number. |
role | string, one of end-user, agent, admin | no | Zendesk role to grant. Default end-user. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
user | object | |
user.email | string | |
user.id | integer | |
user.name | string | |
user.role | string |
Also retrieved by: "add a new customer to zendesk", "register a new contact in the help desk", "set up a new agent account".
zendesk.get_user
Get one Zendesk user's profile by id: name, email, role, and organization. Use when the user names a specific customer or agent. For many users at once use list_users, or search_users to find one by name or email.
Class read (reads only). Scopes users:read. Calls GET /api/v2/users/{{params.user_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
user_id | integer | yes | User id, from list_users or search_users. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
user | object | |
user.created_at | string | |
user.email | string | |
user.id | integer | |
user.name | string | |
user.organization_id | integer | |
user.phone | string | |
user.role | string |
Also retrieved by: "pull up a customer's zendesk profile", "check an agent's account details", "show me what we have on file for this person".
zendesk.update_user
Edit a Zendesk user's name, email, role, organization, or phone. Use when the user wants to edit, correct, or update a customer's or agent's own profile details.
Class write (writes, no confirmation needed). Scopes users:write. Calls PUT /api/v2/users/{{params.user_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
email | string | no | New email address. |
name | string | no | New full name. |
organization_id | integer | no | New organization id, from list_organizations. |
phone | string | no | New phone number. |
role | string, one of end-user, agent, admin | no | New Zendesk role. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
user_id | integer | yes | User id to edit, from list_users or search_users. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
user | object | |
user.email | string | |
user.id | integer | |
user.name | string | |
user.role | string |
Also retrieved by: "fix a customer's phone number on file", "change someone's role in zendesk", "edit a contact's email address".
zendesk.delete_user
Permanently delete a Zendesk user. Use when the user wants to delete, remove, or purge a customer or agent record for good. Irreversible.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes users:write. Calls DELETE /api/v2/users/{{params.user_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
user_id | integer | yes | User id to delete, from list_users or search_users. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "wipe a customer's record from zendesk for good", "purge an old contact entirely", "remove someone's account permanently".
zendesk.list_users
List Zendesk users, optionally filtered to one role or organization. Use when the user asks who exists in Zendesk, e.g. every agent or everyone in an organization, rather than a name or email lookup. For a keyword lookup use search_users.
Class read (reads only). Scopes users:read. Calls GET /api/v2/users.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
organization_id | integer | no | Restrict to one organization's users. Omit for all. |
role | string, one of end-user, agent, admin | no | Restrict to one role. Omit for all roles. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
users | array of object | |
users[].email | string | |
users[].id | integer | |
users[].name | string | |
users[].role | string |
Also retrieved by: "show me everyone in zendesk", "list all the agents in the help desk", "browse every contact in one organization".
zendesk.search_users
Search Zendesk users by name, email, or other field. Use when the user names a specific person by name or email rather than asking for a whole list. For every user in a role or organization use list_users.
Class read (reads only). Scopes users:read. Calls GET /api/v2/search.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | yes | Name, email, or Zendesk search syntax, e.g. "jane@example.com" or "type:user role:agent". |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
count | integer | |
results | array of object | |
results[].email | string | |
results[].id | integer | |
results[].name | string | |
results[].role | string |
Also retrieved by: "find a customer by their email", "look up someone by name in zendesk", "who matches this email address in the help desk".
zendesk.create_organization
Create a new Zendesk organization (a company or account grouping customers). Use when the user wants to add, register, or set up a new company or account in Zendesk.
Class write (writes, no confirmation needed). Scopes organizations:write. Calls POST /api/v2/organizations.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
details | string | no | Optional free-text details about the organization. |
name | string | yes | Organization name. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
organization | object | |
organization.id | integer | |
organization.name | string |
Also retrieved by: "add a new company to zendesk", "register a new account grouping for customers", "set up a business record in the help desk".
zendesk.get_organization
Get one Zendesk organization's detail by id: name and details. Use when the user names a specific company or account. For the whole list use list_organizations.
Class read (reads only). Scopes organizations:read. Calls GET /api/v2/organizations/{{params.organization_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
organization_id | integer | yes | Organization id, from list_organizations. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
organization | object | |
organization.created_at | string | |
organization.details | string | |
organization.id | integer | |
organization.name | string |
Also retrieved by: "pull up a company's zendesk record", "show me details for an account", "what do we have on file for this business".
zendesk.update_organization
Rename a Zendesk organization or edit its details. Use when the user wants to edit, rename, or retitle a company or account record.
Class write (writes, no confirmation needed). Scopes organizations:write. Calls PUT /api/v2/organizations/{{params.organization_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
details | string | no | New free-text details. |
name | string | no | New organization name. |
organization_id | integer | yes | Organization id to edit, from list_organizations. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
organization | object | |
organization.details | string | |
organization.id | integer | |
organization.name | string |
Also retrieved by: "rename a company on file", "edit the details on an account record", "fix the name of a business record".
zendesk.delete_organization
Permanently delete a Zendesk organization. Use when the user wants to delete or remove a company or account record for good. Irreversible; the users that belonged to it are not deleted along with it.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes organizations:write. Calls DELETE /api/v2/organizations/{{params.organization_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
organization_id | integer | yes | Organization id to delete, from list_organizations. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "remove a company from zendesk for good", "purge an account record entirely", "wipe a business record out completely".
zendesk.list_organizations
List every organization (company or account) in the Zendesk account. Use when the user asks what companies, accounts, or organizations exist in Zendesk, or wants to find one's id for another tool.
Class read (reads only). Scopes organizations:read. Calls GET /api/v2/organizations.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
organizations | array of object | |
organizations[].id | integer | |
organizations[].name | string |
Also retrieved by: "show me every company in zendesk", "what accounts exist in the help desk", "browse the whole organization list".
zendesk.list_groups
List the agent groups (teams) configured in Zendesk. Use when the user asks what teams or groups exist, or wants a group's id for assign_ticket.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/groups.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
groups | array of object | |
groups[].description | string | |
groups[].id | integer | |
groups[].name | string |
Also retrieved by: "what teams exist in zendesk", "show me the agent groups configured", "which support teams are set up".
zendesk.get_group
Get one Zendesk agent group's detail by id: name and description. Use when the user names a specific team or group. For the whole list use list_groups.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/groups/{{params.group_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
group_id | integer | yes | Group id, from list_groups. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
group | object | |
group.description | string | |
group.id | integer | |
group.name | string |
Also retrieved by: "pull up details on a support team", "show me who's in a specific agent group", "what's this particular team called".
zendesk.list_macros
List the macros (canned reply and action bundles) configured in Zendesk. Use when the user asks what macros or canned responses exist, or wants a macro's id for preview_macro_on_ticket.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/macros.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
active | boolean | no | Restrict to active (true) or inactive (false) macros. Omit for all. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
macros | array of object | |
macros[].active | boolean | |
macros[].id | integer | |
macros[].title | string |
Also retrieved by: "what canned responses do we have set up", "show me the macros configured in zendesk", "list the quick-reply templates".
zendesk.preview_macro_on_ticket
Compute what a Zendesk macro would change on a ticket (its resulting status, priority, tags, or comment) without saving anything. Use when the user wants to preview, check, or see what a macro would do before applying it. Does not itself change the ticket.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/tickets/{{params.ticket_id}}/macros/{{params.macro_id}}/apply.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
macro_id | integer | yes | Macro id, from list_macros. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
ticket_id | integer | yes | Ticket id to preview against, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
result | object | |
result.ticket | object | |
result.ticket.id | integer | |
result.ticket.priority | string | |
result.ticket.status | string | |
result.ticket.tags | array of string |
Also retrieved by: "check what a canned response would do to this ticket", "see what this macro would change before applying it", "preview a quick reply's effect on a support case".
zendesk.add_tags_to_ticket
Add one or more tags to a Zendesk ticket without removing its existing tags. Use when the user wants to tag, label, or categorize a ticket. To take tags off use remove_tags_from_ticket.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls POST /api/v2/tickets/{{params.ticket_id}}/tags.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
tags | array of string | yes | Tags to add, e.g. ["billing", "vip"]. |
ticket_id | integer | yes | Ticket id, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
tags | array of string |
Also retrieved by: "label this support case as billing", "tag this complaint as vip", "categorize this ticket with a tag".
zendesk.remove_tags_from_ticket
Remove one or more tags from a Zendesk ticket, leaving its other tags in place. Use when the user wants to untag, unlabel, or remove a category from a ticket. To add tags use add_tags_to_ticket.
Class write (writes, no confirmation needed). Scopes tickets:write. Calls DELETE /api/v2/tickets/{{params.ticket_id}}/tags.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
tags | array of string | yes | Tags to remove, e.g. ["billing"]. |
ticket_id | integer | yes | Ticket id, from list_tickets or search_tickets. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
tags | array of string |
Also retrieved by: "untag this support case", "take a label off this complaint", "drop a category tag from this ticket".
zendesk.list_views
List the ticket views (saved filters like "Unassigned tickets" or "My open tickets") configured in Zendesk. Use when the user asks what views or queues exist, or wants a view's id for list_tickets_in_view.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/views.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
views | array of object | |
views[].active | boolean | |
views[].id | integer | |
views[].title | string |
Also retrieved by: "what saved filters exist in zendesk", "show me the ticket queues set up", "what views can I look at".
zendesk.list_tickets_in_view
List the tickets currently sitting in one Zendesk view (saved filter), e.g. everything in "Unassigned tickets" right now. Use when the user asks what's in a specific view or queue. For the whole account use list_tickets.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/views/{{params.view_id}}/tickets.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
view_id | integer | yes | View id, from list_views. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
tickets | array of object | |
tickets[].id | integer | |
tickets[].priority | string | |
tickets[].status | string | |
tickets[].subject | string |
Also retrieved by: "show me what's in the unassigned queue", "pull up every case in my open tickets view", "what's sitting in this saved filter right now".
zendesk.list_satisfaction_ratings
List the customer satisfaction (CSAT) ratings left on Zendesk tickets. Use when the user asks about customer satisfaction scores, CSAT, or ratings across many tickets. For one known rating use get_satisfaction_rating.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/satisfaction_ratings.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
score | string, one of good, bad, good_with_comment, bad_with_comment | no | Restrict to one score kind. Omit for all. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
satisfaction_ratings | array of object | |
satisfaction_ratings[].comment | string | |
satisfaction_ratings[].id | integer | |
satisfaction_ratings[].score | string | |
satisfaction_ratings[].ticket_id | integer |
Also retrieved by: "how are our csat scores looking", "show me customer satisfaction ratings", "what feedback have customers left on tickets".
zendesk.get_satisfaction_rating
Get one Zendesk customer satisfaction (CSAT) rating's detail by id: score, comment, and which ticket it belongs to. Use when the user names a specific rating. For many ratings use list_satisfaction_ratings.
Class read (reads only). Scopes tickets:read. Calls GET /api/v2/satisfaction_ratings/{{params.rating_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
rating_id | integer | yes | Satisfaction rating id, from list_satisfaction_ratings. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
satisfaction_rating | object | |
satisfaction_rating.comment | string | |
satisfaction_rating.id | integer | |
satisfaction_rating.score | string | |
satisfaction_rating.ticket_id | integer |
Also retrieved by: "pull up one customer's satisfaction score", "check the comment left on this csat rating", "what did this particular customer say in their feedback".
zendesk.search_help_center_articles
Search Zendesk's public help center (Guide) knowledge base articles by keyword. Use when the user asks whether a help article, doc, or FAQ already answers a question, before opening a support ticket. For one known article use get_help_center_article.
Class read (reads only). Scopes hc:read. Calls GET /api/v2/help_center/articles/search.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
locale | string | no | Locale to search, e.g. "en-us". Omit for the default locale. |
query | string | yes | Search keywords. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
results | array of object | |
results[].html_url | string | |
results[].id | integer | |
results[].title | string |
Also retrieved by: "is there a help doc that answers this", "search the knowledge base for an faq", "look for an existing article before opening a ticket".
zendesk.get_help_center_article
Get one Zendesk help center article's full content by id: title and body. Use when the user names a specific article. For keyword lookup across all articles use search_help_center_articles.
Class read (reads only). Scopes hc:read. Calls GET /api/v2/help_center/articles/{{params.article_id}}.json.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
article_id | integer | yes | Article id, from search_help_center_articles. |
locale | string | no | Locale to fetch, e.g. "en-us". Omit for the default locale. |
subdomain | string | yes | Zendesk account subdomain, e.g. "acmesupport". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
article | object | |
article.body | string | |
article.html_url | string | |
article.id | integer | |
article.title | string |
Also retrieved by: "pull up the full text of this help article", "show me what this knowledge base doc says", "read me the whole content of this faq entry".