# io.usefulapi/zendesk (remote · zendesk.usefulapi.io)

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

- Trust score: 58/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `zendesk.usefulapi.io`: 58/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-zendesk/zendesk.md), [page](https://verifymcp.io/servers/io-usefulapi-zendesk/zendesk)

## Channel facts

- Endpoint: `https://zendesk.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: this server exposes a tool marked destructive (zendesk_create_ticket) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1586 tokens (~83/item across 19 items; 19 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

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

### Codex

```toml
[mcp_servers.io-usefulapi-zendesk]
url = "https://zendesk.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-zendesk": {
      "type": "remote",
      "url": "https://zendesk.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-zendesk --url https://zendesk.usefulapi.io/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-zendesk:
    url: "https://zendesk.usefulapi.io/mcp"
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-zendesk": {
      "type": "http",
      "url": "https://zendesk.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 58, +27)

- [security] Authorization: Authorisation not fully verified: this server exposes a tool marked destructive (zendesk_create_ticket) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
- [security] New tool “zendesk_update_ticket”, which the server declares destructive
- [security] New tool “zendesk_add_ticket_comment”, which the server declares destructive
- [security] New tool “zendesk_create_ticket”, which the server declares destructive
- [functional regression] Schema quality: unverified → fail
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] First check of Tool coverage: 100
- [functional] New tool “zendesk_list_ticket_fields”
- [functional] New tool “zendesk_list_ticket_comments”
- [functional] New tool “zendesk_list_satisfaction_ratings”
- [functional] New tool “zendesk_list_organizations”
- [functional] New tool “zendesk_list_macros”
- [functional] New tool “zendesk_search_users”
- [functional] New tool “zendesk_current_user”
- [functional] New tool “zendesk_execute_view”
- [functional] New tool “zendesk_get_organization”
- [functional] New tool “zendesk_get_ticket”
- [functional] New tool “zendesk_get_ticket_metrics”
- [functional] New tool “zendesk_get_user”
- [functional] New tool “zendesk_list_groups”
- [functional] New tool “zendesk_search”
- [functional] New tool “zendesk_list_views”
- [functional] New tool “zendesk_list_tickets”

### 2026-08-02 (score 31, +13)

- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security regression] Tool “zendesk_search_users” was removed
- [security regression] Tool “zendesk_create_ticket” was removed
- [security regression] Tool “zendesk_current_user” was removed
- [security regression] Tool “zendesk_execute_view” was removed
- [security regression] Tool “zendesk_add_ticket_comment” was removed
- [security regression] Tool “zendesk_get_organization” was removed
- [security regression] Tool “zendesk_get_ticket” was removed
- [security regression] Tool “zendesk_get_ticket_metrics” was removed
- [security regression] Tool “zendesk_get_user” was removed
- [security regression] Tool “zendesk_list_groups” was removed
- [security regression] Tool “zendesk_list_macros” was removed
- [security regression] Tool “zendesk_list_organizations” was removed
- [security regression] Tool “zendesk_list_satisfaction_ratings” was removed
- [security regression] Tool “zendesk_list_ticket_comments” was removed
- [security regression] Tool “zendesk_list_ticket_fields” was removed
- [security regression] Tool “zendesk_list_tickets” was removed
- [security regression] Tool “zendesk_list_views” was removed
- [security regression] Tool “zendesk_search” was removed
- [security regression] Tool “zendesk_update_ticket” was removed
- [security improvement] Authorization: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: unverified
- [functional] First check of Schema quality: unverified
- [functional] First check of Schema quality: unverified
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: pass
- [functional] First check of Schema quality: excellent
- [functional] First check of Schema quality: fail

### 2026-08-01 (score 18)

First indexed and scored.

## MCP tools (19)

### `zendesk_search` (~133 tokens)

Search

Unified search across tickets, users, organizations and groups using Zendesk search syntax. Examples: `type:ticket status:open`, `type:user email:jane@acme.com`, `type:organization name:acme`. Zendesk REST: GET /search.json.

Input parameters:

- `page` (integer): Page number for offset pagination.
- `query` (string, required): Zendesk search query, e.g. 'type:ticket status:open priority:high' (required).
- `sort_by` (string): Field to sort by.
- `sort_order` (string): Sort direction: asc or desc (default desc).

### `zendesk_list_tickets` (~83 tokens)

List tickets

List recent tickets (offset pagination). Zendesk REST: GET /tickets.json.

Input parameters:

- `page` (integer): Page number for offset pagination.
- `per_page` (integer): Records per page (max 100).
- `sort_by` (string): Field to sort by.
- `sort_order` (string): Sort direction: asc or desc (default asc).

### `zendesk_get_ticket` (~41 tokens)

Get ticket

Fetch a single ticket by id. Zendesk REST: GET /tickets/{id}.json.

Input parameters:

- `id` (integer, required): Numeric ticket id (required).

### `zendesk_list_ticket_comments` (~80 tokens)

List ticket comments

List the comments (public replies and internal notes) on a ticket, oldest first. Zendesk REST: GET /tickets/{id}/comments.json.

Input parameters:

- `id` (integer, required): Numeric ticket id (required).
- `page` (integer): Page number for offset pagination.
- `per_page` (integer): Records per page (max 100).

### `zendesk_current_user` (~36 tokens)

Current user (whoami)

Return the currently authenticated user — a quick way to verify credentials and subdomain. Zendesk REST: GET /users/me.json.

### `zendesk_get_user` (~41 tokens)

Get user

Fetch a single user by id. Zendesk REST: GET /users/{id}.json.

Input parameters:

- `id` (integer, required): Numeric user id (required).

### `zendesk_search_users` (~94 tokens)

Search users

Find users by name, email, phone, or other attributes. Zendesk REST: GET /users/search.json.

Input parameters:

- `page` (integer): Page number for offset pagination.
- `per_page` (integer): Records per page (max 100).
- `query` (string, required): Search string — a name, email, phone, or external id, e.g. 'jane@acme.com' (required).

### `zendesk_list_organizations` (~53 tokens)

List organizations

List organizations (offset pagination). Zendesk REST: GET /organizations.json.

Input parameters:

- `page` (integer): Page number for offset pagination.
- `per_page` (integer): Records per page (max 100).

### `zendesk_get_organization` (~42 tokens)

Get organization

Fetch a single organization by id. Zendesk REST: GET /organizations/{id}.json.

Input parameters:

- `id` (integer, required): Numeric organization id (required).

### `zendesk_list_groups` (~50 tokens)

List groups

List agent groups. Zendesk REST: GET /groups.json.

Input parameters:

- `page` (integer): Page number for offset pagination.
- `per_page` (integer): Records per page (max 100).

### `zendesk_list_views` (~68 tokens)

List views

List saved ticket views (curated ticket lists). Use zendesk_execute_view to run one. Zendesk REST: GET /views.json.

Input parameters:

- `access` (string): Filter by access: 'personal' or 'shared'.
- `active` (boolean): If true, only active views.

### `zendesk_execute_view` (~109 tokens)

Execute view

Run a saved view by id and return the matching tickets. Zendesk REST: GET /views/{id}/execute.json.

Input parameters:

- `id` (integer, required): Numeric view id (required; from zendesk_list_views).
- `page` (integer): Page number for offset pagination.
- `per_page` (integer): Records per page (max 100).
- `sort_by` (string): Field to sort the resulting tickets by.
- `sort_order` (string): Sort direction: asc or desc.

### `zendesk_list_macros` (~68 tokens)

List macros

List macros (reusable sets of ticket actions/replies agents apply). Zendesk REST: GET /macros.json.

Input parameters:

- `access` (string): Filter by access, e.g. 'personal' or 'shared'.
- `active` (boolean): If true, only active macros.

### `zendesk_list_ticket_fields` (~42 tokens)

List ticket fields

List all standard and custom ticket fields — useful for discovering field ids/values before creating or updating tickets. Zendesk REST: GET /ticket_fields.json.

### `zendesk_get_ticket_metrics` (~48 tokens)

Get ticket metrics

Fetch SLA / response / resolution time metrics for a ticket. Zendesk REST: GET /tickets/{id}/metrics.json.

Input parameters:

- `id` (integer, required): Numeric ticket id (required).

### `zendesk_list_satisfaction_ratings` (~75 tokens)

List satisfaction ratings

List customer satisfaction (CSAT) ratings, optionally filtered by score. Zendesk REST: GET /satisfaction_ratings.json.

Input parameters:

- `page` (integer): Page number for offset pagination.
- `score` (string): Filter by rating state, e.g. 'good', 'bad', or 'received'.

### `zendesk_create_ticket` (~204 tokens)

Create ticket

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.

Input parameters:

- `assignee_id` (integer): Agent id to assign the ticket to.
- `comment_body` (string, required): Body of the ticket's first comment (required).
- `comment_public` (boolean): Whether the first comment is public (default true).
- `group_id` (integer): Group id to assign the ticket to.
- `priority` (string): Priority: urgent | high | normal | low.
- `requester_id` (integer): User id of the ticket requester.
- `status` (string): Status: new | open | pending | hold | solved | closed.
- `subject` (string, required): Ticket subject/title (required).
- `tags` (array): Tags to set on the ticket.
- `type` (string): Type: problem | incident | question | task.

### `zendesk_update_ticket` (~223 tokens)

Update ticket

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.

Input parameters:

- `assignee_id` (integer): Agent id to (re)assign to.
- `comment_body` (string): Body of a comment to add as part of this update.
- `comment_public` (boolean): Whether the added comment is public (default true; set false for an internal note).
- `group_id` (integer): Group id to (re)assign to.
- `id` (integer, required): Numeric ticket id (required).
- `priority` (string): New priority: urgent | high | normal | low.
- `status` (string): New status: new | open | pending | hold | solved | closed.
- `tags` (array): Tags to set on the ticket (replaces existing).
- `type` (string): New type: problem | incident | question | task.

### `zendesk_add_ticket_comment` (~96 tokens)

Add ticket comment

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.

Input parameters:

- `body` (string, required): Comment text (required).
- `id` (integer, required): Numeric ticket id (required).
- `public` (boolean): Public reply (true, default) or internal note (false).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-zendesk/zendesk#diagnostics

## Score history

- 2026-08-03: 58
- 2026-08-02: 31
- 2026-08-01: 18

## Links

- Remote endpoint: https://zendesk.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-zendesk/zendesk/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-zendesk/zendesk/changelog.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-zendesk/zendesk
