Awesome-omni-skill zendesk-automation
Automate Zendesk tasks via Rube MCP (Composio): tickets, users, organizations, replies. Always search tools first for current schemas.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/cli-automation/zendesk-automation" ~/.claude/skills/diegosouzapw-awesome-omni-skill-zendesk-automation && rm -rf "$T"
skills/cli-automation/zendesk-automation/SKILL.mdZendesk Automation via Rube MCP
Automate Zendesk operations through Composio's Zendesk toolkit via Rube MCP.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Zendesk connection via
with toolkitRUBE_MANAGE_CONNECTIONSzendesk - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS
Setup
Get Rube MCP: Add
https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONSzendesk - If connection is not ACTIVE, follow the returned auth link to complete Zendesk auth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. List and Search Tickets
When to use: User wants to view, filter, or search support tickets
Tool sequence:
- List all tickets with pagination [Required]ZENDESK_LIST_ZENDESK_TICKETS
- Get specific ticket details [Optional]ZENDESK_GET_ZENDESK_TICKET_BY_ID
Key parameters:
: Page number (1-based)page
: Results per page (max 100)per_page
: Sort field ('created_at', 'updated_at', 'priority', 'status')sort_by
: 'asc' or 'desc'sort_order
: Ticket ID for single retrievalticket_id
Pitfalls:
- LIST uses
/page
pagination, NOT offset-based; checkper_page
in responsenext_page - Maximum 100 results per page; iterate with page numbers until
is nullnext_page - Deleted tickets are not returned by LIST; use GET_BY_ID which returns status 'deleted'
- Ticket comments and audits are included in GET_BY_ID but not in LIST responses
2. Create and Update Tickets
When to use: User wants to create new tickets or modify existing ones
Tool sequence:
- Find requester/assignee [Prerequisite]ZENDESK_SEARCH_ZENDESK_USERS
- Create a new ticket [Required]ZENDESK_CREATE_ZENDESK_TICKET
- Update ticket fields [Optional]ZENDESK_UPDATE_ZENDESK_TICKET
- Delete a ticket [Optional]ZENDESK_DELETE_ZENDESK_TICKET
Key parameters:
: Ticket subject linesubject
: Ticket body (for creation; becomes first comment)description
: 'urgent', 'high', 'normal', 'low'priority
: 'new', 'open', 'pending', 'hold', 'solved', 'closed'status
: 'problem', 'incident', 'question', 'task'type
: Agent user ID to assignassignee_id
: Requester user IDrequester_id
: Array of tag stringstags
: Ticket ID (for update/delete)ticket_id
Pitfalls:
- Tags on UPDATE REPLACE existing tags entirely; merge with current tags to preserve them
- Use
withsafe_update
to prevent concurrent modification conflictsupdated_stamp - DELETE is permanent and irreversible; tickets cannot be recovered
is only used on creation; use REPLY_ZENDESK_TICKET to add comments after creationdescription- Closed tickets cannot be updated; create a follow-up ticket instead
3. Reply to Tickets
When to use: User wants to add comments or replies to tickets
Tool sequence:
- Get current ticket state [Prerequisite]ZENDESK_GET_ZENDESK_TICKET_BY_ID
- Add a reply/comment [Required]ZENDESK_REPLY_ZENDESK_TICKET
Key parameters:
: Ticket ID to reply toticket_id
: Reply text contentbody
: Boolean; true for public reply, false for internal notepublic
: Author user ID (defaults to authenticated user)author_id
Pitfalls:
- Set
for internal notes visible only to agentspublic: false - Default is public reply which sends email to requester
- HTML is supported in body text
- Replying can also update ticket status simultaneously
4. Manage Users
When to use: User wants to find or create Zendesk users (agents, end-users)
Tool sequence:
- Search for users [Required]ZENDESK_SEARCH_ZENDESK_USERS
- Create a new user [Optional]ZENDESK_CREATE_ZENDESK_USER
- Get authenticated user info [Optional]ZENDESK_GET_ABOUT_ME
Key parameters:
: Search string (matches name, email, phone, etc.)query
: User's full name (required for creation)name
: User's email addressemail
: 'end-user', 'agent', or 'admin'role
: Whether email is verifiedverified
Pitfalls:
- User search is fuzzy; may return partial matches
- Creating a user with an existing email returns the existing user (upsert behavior)
- Agent and admin roles may require specific plan features
5. Manage Organizations
When to use: User wants to list, create, or manage organizations
Tool sequence:
- List all organizations [Required]ZENDESK_GET_ALL_ZENDESK_ORGANIZATIONS
- Get specific organization [Optional]ZENDESK_GET_ZENDESK_ORGANIZATION
- Create organization [Optional]ZENDESK_CREATE_ZENDESK_ORGANIZATION
- Update organization [Optional]ZENDESK_UPDATE_ZENDESK_ORGANIZATION
- Get total count [Optional]ZENDESK_COUNT_ZENDESK_ORGANIZATIONS
Key parameters:
: Organization name (unique, required for creation)name
: Organization ID for get/updateorganization_id
: Organization details textdetails
: Internal notesnotes
: Array of associated domainsdomain_names
: Array of tag stringstags
Pitfalls:
- Organization names must be unique; duplicate names cause creation errors
- Tags on UPDATE REPLACE existing tags (same behavior as tickets)
- Domain names can be used for automatic user association
Common Patterns
Pagination
List endpoints:
- Use
(1-based) andpage
(max 100)per_page - Check
URL in response; null means last pagenext_page
field gives total resultscount
Ticket Lifecycle
new -> open -> pending -> solved -> closed | ^ v | hold --------+
: Unassigned ticketnew
: Assigned, being worked onopen
: Waiting for customer responsepending
: Waiting for internal actionhold
: Resolved, can be reopenedsolved
: Permanently closed, cannot be modifiedclosed
User Search for Assignment
1. Call ZENDESK_SEARCH_ZENDESK_USERS with query (name or email) 2. Extract user ID from results 3. Use user ID as assignee_id in ticket creation/update
Known Pitfalls
Tags Behavior:
- Tags on update REPLACE all existing tags
- Always fetch current tags first and merge before updating
- Tags are lowercase, no spaces (use underscores)
Safe Updates:
- Use
withsafe_update: true
(ISO 8601) to prevent conflictsupdated_stamp - Returns 409 if ticket was modified since the stamp
Deletion:
- Ticket deletion is permanent and irreversible
- Consider setting status to 'closed' instead of deleting
- Deleted tickets cannot be recovered via API
Rate Limits:
- Default: 400 requests per minute
- Varies by plan tier
- 429 responses include Retry-After header
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List tickets | ZENDESK_LIST_ZENDESK_TICKETS | page, per_page, sort_by |
| Get ticket | ZENDESK_GET_ZENDESK_TICKET_BY_ID | ticket_id |
| Create ticket | ZENDESK_CREATE_ZENDESK_TICKET | subject, description, priority |
| Update ticket | ZENDESK_UPDATE_ZENDESK_TICKET | ticket_id, status, tags |
| Reply to ticket | ZENDESK_REPLY_ZENDESK_TICKET | ticket_id, body, public |
| Delete ticket | ZENDESK_DELETE_ZENDESK_TICKET | ticket_id |
| Search users | ZENDESK_SEARCH_ZENDESK_USERS | query |
| Create user | ZENDESK_CREATE_ZENDESK_USER | name, email |
| My profile | ZENDESK_GET_ABOUT_ME | (none) |
| List orgs | ZENDESK_GET_ALL_ZENDESK_ORGANIZATIONS | page, per_page |
| Get org | ZENDESK_GET_ZENDESK_ORGANIZATION | organization_id |
| Create org | ZENDESK_CREATE_ZENDESK_ORGANIZATION | name |
| Update org | ZENDESK_UPDATE_ZENDESK_ORGANIZATION | organization_id, name |
| Count orgs | ZENDESK_COUNT_ZENDESK_ORGANIZATIONS | (none) |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.