Skip to content

Zendesk MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Read tickets, users, orgs, macros and satisfaction ratings; create, update and comment on tickets.

Deletes · 3Changes · 1

19 tools: 3 can delete or cancel things, 1 change things and 15 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http zendesk https://zendesk.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn1 info
  • The server marks "zendesk_execute_view" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "zendesk_execute_view" says "execute": a word for a change.

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...henticated user — a quick way to verify credentials and subdomain. Zendesk REST: GET /users..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

19 tools

Deletes or cancels 3Claude Code: deny
  • zendesk_add_ticket_commentMUTATING: add a comment to a ticket.No findings

    Why it is in this group

    • The name "zendesk_add_ticket_comment" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    MUTATING: add a comment to a ticket. `public` defaults to true (a reply visible to the requester); set it false for an internal agent note. Convenience over PUT /tickets/{id}.json.

    Annotations the server declares

    • title: Add ticket comment
    • destructiveHint: true
  • zendesk_create_ticketMUTATING: create a new support ticket.No findings

    Why it is in this group

    • The name "zendesk_create_ticket" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    MUTATING: create a new support ticket. `subject` and `comment_body` are required; the comment becomes the ticket's first message. Zendesk REST: POST /tickets.json.

    Annotations the server declares

    • title: Create ticket
    • destructiveHint: true
  • zendesk_update_ticketMUTATING: update an existing ticket.No findings

    Why it is in this group

    • The name "zendesk_update_ticket" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    MUTATING: update an existing ticket. Provide the ticket `id` plus at least one field to change (status, priority, assignee_id, group_id, type, tags, or a comment). Zendesk REST: PUT /tickets/{id}.json.

    Annotations the server declares

    • title: Update ticket
    • destructiveHint: true
Changes things 1Claude Code: ask
  • zendesk_execute_viewRun a saved view by id and return the matching tickets.1 finding

    Why it is in this group

    • The name "zendesk_execute_view" says "execute": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "zendesk_execute_view" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "zendesk_execute_view" says "execute": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run a saved view by id and return the matching tickets. Zendesk REST: GET /views/{id}/execute.json.

    Annotations the server declares

    • title: Execute view
    • readOnlyHint: true
Only reads 15Claude Code: allow
  • zendesk_current_userReturn the currently authenticated user — a quick way to verify credentials and subdomain.1 finding

    Why it is in this group

    • The description's first verb is "return": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...henticated user — a quick way to verify credentials and subdomain. Zendesk REST: GET /users..."

      What this check looks for
    Description, as the server wrote it
    Return the currently authenticated user — a quick way to verify credentials and subdomain. Zendesk REST: GET /users/me.json.

    Annotations the server declares

    • title: Current user (whoami)
    • readOnlyHint: true
  • zendesk_get_organizationFetch a single organization by id.No findings

    Why it is in this group

    • The name "zendesk_get_organization" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single organization by id. Zendesk REST: GET /organizations/{id}.json.

    Annotations the server declares

    • title: Get organization
    • readOnlyHint: true
  • zendesk_get_ticketFetch a single ticket by id.No findings

    Why it is in this group

    • The name "zendesk_get_ticket" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single ticket by id. Zendesk REST: GET /tickets/{id}.json.

    Annotations the server declares

    • title: Get ticket
    • readOnlyHint: true
  • zendesk_get_ticket_metricsFetch SLA / response / resolution time metrics for a ticket.No findings

    Why it is in this group

    • The name "zendesk_get_ticket_metrics" says "get": a word for reading.
    Description, as the server wrote it
    Fetch SLA / response / resolution time metrics for a ticket. Zendesk REST: GET /tickets/{id}/metrics.json.

    Annotations the server declares

    • title: Get ticket metrics
    • readOnlyHint: true
  • zendesk_get_userFetch a single user by id.No findings

    Why it is in this group

    • The name "zendesk_get_user" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single user by id. Zendesk REST: GET /users/{id}.json.

    Annotations the server declares

    • title: Get user
    • readOnlyHint: true
  • zendesk_list_groupsList agent groups.No findings

    Why it is in this group

    • The name "zendesk_list_groups" says "list": a word for reading.
    Description, as the server wrote it
    List agent groups. Zendesk REST: GET /groups.json.

    Annotations the server declares

    • title: List groups
    • readOnlyHint: true
  • zendesk_list_macrosList macros (reusable sets of ticket actions/replies agents apply).No findings

    Why it is in this group

    • The name "zendesk_list_macros" says "list": a word for reading.
    Description, as the server wrote it
    List macros (reusable sets of ticket actions/replies agents apply). Zendesk REST: GET /macros.json.

    Annotations the server declares

    • title: List macros
    • readOnlyHint: true
  • zendesk_list_organizationsList organizations (offset pagination).No findings

    Why it is in this group

    • The name "zendesk_list_organizations" says "list": a word for reading.
    Description, as the server wrote it
    List organizations (offset pagination). Zendesk REST: GET /organizations.json.

    Annotations the server declares

    • title: List organizations
    • readOnlyHint: true
  • zendesk_list_satisfaction_ratingsList customer satisfaction (CSAT) ratings, optionally filtered by score.No findings

    Why it is in this group

    • The name "zendesk_list_satisfaction_ratings" says "list": a word for reading.
    Description, as the server wrote it
    List customer satisfaction (CSAT) ratings, optionally filtered by score. Zendesk REST: GET /satisfaction_ratings.json.

    Annotations the server declares

    • title: List satisfaction ratings
    • readOnlyHint: true
  • zendesk_list_ticket_commentsList the comments (public replies and internal notes) on a ticket, oldest first.No findings

    Why it is in this group

    • The name "zendesk_list_ticket_comments" says "list": a word for reading.
    Description, as the server wrote it
    List the comments (public replies and internal notes) on a ticket, oldest first. Zendesk REST: GET /tickets/{id}/comments.json.

    Annotations the server declares

    • title: List ticket comments
    • readOnlyHint: true
  • zendesk_list_ticket_fieldsList all standard and custom ticket fields — useful for discovering field ids/values before creating or updating tickets.No findings

    Why it is in this group

    • The name "zendesk_list_ticket_fields" says "list": a word for reading.
    Description, as the server wrote it
    List all standard and custom ticket fields — useful for discovering field ids/values before creating or updating tickets. Zendesk REST: GET /ticket_fields.json.

    Annotations the server declares

    • title: List ticket fields
    • readOnlyHint: true
  • zendesk_list_ticketsList recent tickets (offset pagination).No findings

    Why it is in this group

    • The name "zendesk_list_tickets" says "list": a word for reading.
    Description, as the server wrote it
    List recent tickets (offset pagination). Zendesk REST: GET /tickets.json.

    Annotations the server declares

    • title: List tickets
    • readOnlyHint: true
  • zendesk_list_viewsList saved ticket views (curated ticket lists).No findings

    Why it is in this group

    • The name "zendesk_list_views" says "list": a word for reading.
    Description, as the server wrote it
    List saved ticket views (curated ticket lists). Use zendesk_execute_view to run one. Zendesk REST: GET /views.json.

    Annotations the server declares

    • title: List views
    • readOnlyHint: true
  • zendesk_search_usersFind users by name, email, phone, or other attributes.No findings

    Why it is in this group

    • The name "zendesk_search_users" says "search": a word for reading.
    Description, as the server wrote it
    Find users by name, email, phone, or other attributes. Zendesk REST: GET /users/search.json.

    Annotations the server declares

    • title: Search users
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http zendesk https://zendesk.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__zendesk__zendesk_search",
      "mcp__zendesk__zendesk_list_tickets",
      "mcp__zendesk__zendesk_get_ticket",
      "mcp__zendesk__zendesk_list_ticket_comments",
      "mcp__zendesk__zendesk_current_user",
      "mcp__zendesk__zendesk_get_user",
      "mcp__zendesk__zendesk_search_users",
      "mcp__zendesk__zendesk_list_organizations",
      "mcp__zendesk__zendesk_get_organization",
      "mcp__zendesk__zendesk_list_groups",
      "mcp__zendesk__zendesk_list_views",
      "mcp__zendesk__zendesk_list_macros",
      "mcp__zendesk__zendesk_list_ticket_fields",
      "mcp__zendesk__zendesk_get_ticket_metrics",
      "mcp__zendesk__zendesk_list_satisfaction_ratings"
    ],
    "ask": [
      "mcp__zendesk__zendesk_execute_view"
    ],
    "deny": [
      "mcp__zendesk__zendesk_create_ticket",
      "mcp__zendesk__zendesk_update_ticket",
      "mcp__zendesk__zendesk_add_ticket_comment"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as zendesk. Review it before you use it.