---
name: iblai-connect-zendesk
description: "Read and write Zendesk Support data through the Zendesk Support API (Ticketing API) and expose it to an ibl.ai agent as an MCP tool. Use when the user asks an agent to work with Zendesk Support data, or to set up a Zendesk Support MCP connection on ibl.ai."
metadata:
  kind: guide
---

# Zendesk Support connector for AI agents

> A starting point maintained on ibl.ai at https://ibl.ai/developer/connectors/zendesk — not part of the iblai/vibe repository. Checked against Zendesk, Inc.'s documentation on October 20, 2026; test it against your own Zendesk Support setup before you rely on it.

Zendesk Support is a customer service ticketing system. An account stores tickets and their comments, end users and agents, organizations, groups, macros, views and help center content.

## Auth & conventions

- **API:** Zendesk Support API (Ticketing API) (REST). JSON REST API for tickets, ticket comments, users, organizations, groups, views and search. Tickets: list, show, create, update and delete, plus create_many, update_many and destroy_many batch calls.
- **Base URL:** https://{subdomain}.zendesk.com/api/v2
- **Access:** Issued by your administrator. The caller must be a verified user. An admin registers an OAuth client in Admin Center; apps distributed to many Zendesk customers must use global OAuth tokens. Legacy API tokens live in Admin Center > Apps and integrations > APIs.
- **Auth:** OAuth 2.0 access token (Bearer); API token with email/token basic auth (deprecated). Zendesk supports OAuth access tokens and asks customers on basic auth or API tokens to migrate to OAuth. API tokens can impersonate anyone in the account, including admins.
- **Limits:** Support API: 200 req/min (Team), 400 (Growth, Professional), 700 (Enterprise), 2,500 (Enterprise Plus). Update Ticket: 30 updates/10 min per user per ticket. Offset paging stops at 10,000 records; 429 includes Retry-After.
- Keep Zendesk Support credentials in environment variables or the ibl.ai credential store. Never print a token in chat and never commit one to a file.
- Destructive or outward-facing calls are marked **Confirm with the user first** — do.

## Reads

- **Tickets** — GET /api/v2/tickets (cursor or offset paging, max 100 per page) and GET /api/v2/tickets/{ticket_id}.
- **Organization tickets** — GET /api/v2/organizations/{organization_id}/tickets.
- **Recent tickets** — GET /api/v2/tickets/recent lists recently viewed tickets.
- **Users and organizations** — Read end users, agents and organizations through the Support API.

## Writes

- **Create tickets** — POST /api/v2/tickets or /api/v2/tickets/create_many.
- **Update tickets** — PUT /api/v2/tickets/{ticket_id}; adding a public comment is visible to the requester. **Confirm with the user first.**
- **Bulk update tickets** — PUT /api/v2/tickets/update_many.
- **Delete tickets** — DELETE /api/v2/tickets/{ticket_id} or /api/v2/tickets/destroy_many. **Confirm with the user first.**

## Expose it to an ibl.ai agent (MCP)

We could not confirm an MCP server in Zendesk, Inc.'s own documentation as of October 2026. Host a small MCP server that wraps the calls above, then register it below.

First install the ibl.ai platform skills and connect your organization (writes `IBLAI_ORG`, `IBLAI_USERNAME` and `IBLAI_API_KEY` to `.env`):

```bash
npx skills add iblai/vibe --all
# then, in your coding agent:
/iblai-api-login
```

Every call below sends `Authorization: Api-Token $IBLAI_API_KEY`.

1. **Register the server** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-servers/` with `name`, `url`, `transport` (`sse` | `websocket` | `streamable_http`) and `auth_type` (`none` | `token` | `oauth2`). Capture the returned `id`.
   - For an API key or service credential use `auth_type=token` with `auth_scope=platform` for one key across the organization, or scope it to a single agent for one key per agent.
2. **Create the connection** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-server-connections/` with `server`, `scope` (`platform` | `mentor` | `user`), `auth_type`, and either `credentials` + `authorization_scheme` or a `connected_service` id for OAuth. Credentials are masked on read; never send a masked value back.
3. **Enable it on the agent** — `GET https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mentors/{agent_id}/settings/`, add `mcp-tool` to `tool_slugs` and the server id to `mcp_servers`, then `PATCH` the full lists back. They are replaced, not merged.

Full reference: https://ibl.ai/developer/platform/mcp/mcp-connections and the `/iblai-api-agent-mcp` skill.

## Example prompts

- "Show all urgent tickets that have been open more than 48 hours"
- "Summarize the conversation on ticket #48213"
- "Create a ticket for jane@example.com: refund request for order 1043"
- "Which organizations opened the most tickets this week?"

## Guardrails

- Tickets hold customer personal data and free-text conversation history that may include account, payment or health details customers volunteer. Treat as personal data under applicable privacy law.
- Request the narrowest Zendesk Support scopes or role the task needs, and prefer a read-only credential for agents that only answer questions.
- Return the fields the user asked for, not whole records; do not paste personal data into chat that the user did not request.
- Before any write, show the user exactly what will change and wait for a yes.
- Respect the documented limits above: page through results and back off on rate-limit responses instead of retrying in a loop.

## References

- Security and authentication: https://developer.zendesk.com/api-reference/introduction/security-and-auth/
- Tickets API reference: https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/
- Rate limits: https://developer.zendesk.com/api-reference/introduction/rate-limits/
- This connector on ibl.ai: https://ibl.ai/developer/connectors/zendesk
- ibl.ai MCP server connections: https://ibl.ai/developer/platform/mcp/mcp-connections
