How to integrate Zendesk MCP with OpenAI Agents SDK

Trusted by
AWS
Glean
Zoom
Airtable

30 min · no commitment · see it on your stack

Zendesk logo
OpenAI Agents SDK logo
divider

Introduction

This guide walks you through connecting Zendesk to the OpenAI Agents SDK using the Composio tool router. By the end, you'll have a working Zendesk agent that can create a new zendesk ticket for a customer, list all open tickets assigned to me, summarize this week's new zendesk tickets through natural language commands.

This guide will help you understand how to give your OpenAI Agents SDK agent real control over a Zendesk account through Composio's Zendesk MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

Also integrate Zendesk with

TL;DR

Here's what you'll learn:
  • Get and set up your OpenAI and Composio API keys
  • Install the necessary dependencies
  • Initialize Composio and create a Tool Router session for Zendesk
  • Configure an AI agent that can use Zendesk as a tool
  • Run a live chat session where you can ask the agent to perform Zendesk operations

What is OpenAI Agents SDK?

The OpenAI Agents SDK is a lightweight framework for building AI agents that can use tools and maintain conversation state. It provides a simple interface for creating agents with hosted MCP tool support.

Key features include:

  • Hosted MCP Tools: Connect to external services through hosted MCP endpoints
  • SQLite Sessions: Persist conversation history across interactions
  • Simple API: Clean interface with Agent, Runner, and tool configuration
  • Streaming Support: Real-time response streaming for interactive applications

What is the Zendesk MCP server, and what's possible with it?

The Zendesk MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Zendesk account. It provides structured and secure access to your helpdesk, so your agent can create tickets, retrieve ticket details, manage organizations, and streamline customer support workflows on your behalf.

  • Automated ticket creation and management: Let your agent create new support tickets, update details, or delete tickets to keep your helpdesk organized and responsive.
  • Advanced ticket search and retrieval: Quickly pull up lists of open, pending, or filtered tickets, or fetch specific ticket details for efficient support resolution.
  • Organization management: Effortlessly create, retrieve, or delete organizations in your Zendesk account to keep customer data up to date.
  • Account insights and user info: Have your agent fetch account owner information or organization details for better context in customer interactions.
  • Scalable support automation: Use AI-powered workflows to triage, route, and manage high volumes of tickets without manual intervention.

Supported Tools & Triggers

Tools
Triggers
Apply Zendesk Macro PreviewPreview how a Zendesk macro would affect a ticket without actually applying it.
Autocomplete ProblemsAutocomplete problems in Zendesk.
Autocomplete UsersSearch for Zendesk users by name prefix using the POST /api/v2/users/autocomplete endpoint.
Check Host Mapping Validity for Existing BrandCheck the host mapping validity for an existing brand in Zendesk.
Count Deleted UsersCount deleted users in Zendesk.
Count User CCD TicketsCount tickets where the specified user is CCD (carbon copy distribution).
Count Custom Object RecordsCount the number of records in a specific Zendesk custom object.
Count Zendesk OrganizationsCount the number of organizations in Zendesk.
Create Access RuleCreate an access rule for a custom object in Zendesk.
Install Zendesk AppInstall a Zendesk app in the account.
Send Notification to AppSend a notification to currently open instances of a Zendesk app.
Create Autocomplete TagsSearch for Zendesk tags using autocomplete via POST request body.
Create AutomationCreate a new automation in Zendesk.
Create BookmarkCreate a bookmark for a ticket in Zendesk.
Redact Zendesk CommentRedact sensitive content from a ticket comment in Zendesk using the Agent Workspace method.
Create Custom Object Bulk JobCreate a bulk job to perform batch operations (create, update, delete, upsert) on custom object records in Zendesk.
Create Custom Object RecordCreate a new record for a custom object in Zendesk.
Create Custom Object Record AttachmentCreate an attachment for a custom object record in Zendesk.
Create Custom Ticket StatusCreate a new custom ticket status in Zendesk.
Create Deletion ScheduleCreate a new deletion schedule in Zendesk that automatically deletes records matching specified conditions on a schedule.
Create Zendesk Dynamic Content ItemCreate a new dynamic content item with locale variants in Zendesk.
Create Zendesk Dynamic Content Item VariantCreate a new locale variant for an existing dynamic content item in Zendesk.
Create End User IdentityAdd an identity (email or phone) to an end user's profile in Zendesk.
Create Zendesk Group MembershipCreate a group membership in Zendesk, assigning an agent to a group.
Bulk Import TicketsBulk import tickets into Zendesk by posting up to 100 ticket objects at a time.
Create Many Dynamic Content VariantsCreate many locale variants for an existing dynamic content item in Zendesk.
Create Many Zendesk TicketsCreate many tickets in Zendesk in a single request.
Create Many Zendesk UsersCreate many users in Zendesk in a single request.
Create Object TriggerCreate a new trigger for a custom object in Zendesk.
Create Organization FieldCreate a custom organization field in Zendesk.
Create Organization MembershipCreate a new organization membership in Zendesk by assigning a user to an organization.
Create Many Organization MembershipsCreate multiple organization memberships in Zendesk by posting up to 100 membership objects at a time.
Merge Zendesk OrganizationsMerge two Zendesk organizations by combining all users, tickets, and data from the losing organization into the winning organization.
Set Organization TagsSet organization tags in Zendesk by making a POST request to replace the tags on an organization.
Create Organization SubscriptionCreate an organization subscription in Zendesk.
Create Or Update Many UsersCreate or update multiple users in Zendesk in a single request.
Create Or Update OrganizationCreate or update a Zendesk organization in a single operation.
Create or Update UserCreate or update a Zendesk user.
Bulk Unregister Push Notification DevicesBulk unregister push notification devices in Zendesk.
Create Resource CollectionCreate a resource collection in Zendesk.
Create Side ConversationCreate a private side conversation on a Zendesk ticket.
Create Support AddressCreate a new support address (recipient address) in Zendesk.
Export Suspended TicketsExport Suspended Tickets from Zendesk Support.
Create Ticket Content PinCreate a ticket content pin in Zendesk.
Create Ticket FieldCreate a custom ticket field in Zendesk with various field types.
Create Ticket Field OptionCreate or update an option for a dropdown or multiselect ticket field.
Create TriggerCreate a new trigger in Zendesk.
Create Trigger Categories Batch JobCreate a batch job for ticket trigger categories in Zendesk.
Create Zendesk Trigger CategoryCreate a new trigger category in Zendesk.
Create User Field OptionCreate or update an option for a dropdown or multiselect user field.
Create User IdentityTool to add an identity to a user's profile in Zendesk.
Create User Profile EventStore an event against a Sunshine user profile.
Logout Many Zendesk UsersLog out multiple users in Zendesk by ending their active sessions.
Create User Organization MembershipCreate a new organization membership for a specific user in Zendesk by assigning a user to an organization.
Create Users TagsSet tags on a Zendesk user via POST request to /api/v2/users/{user_id}/tags.
Create ViewCreate a new view in Zendesk.
Preview ViewPreview a Zendesk view by constructing conditions and execution settings to see which tickets match.
Preview View Ticket CountPreview ticket count for a view in Zendesk.
Upload Zendesk AttachmentUpload a file attachment to Zendesk.
Create Zendesk Custom ObjectCreate a new custom object in Zendesk.
Create Zendesk Custom Object FieldCreate a new field for a custom object in Zendesk.
Create Zendesk GroupCreate a new group in Zendesk.
Import Zendesk TicketImport a ticket into Zendesk with historical timestamps.
Create Zendesk OrganizationCreate a new organization in Zendesk.
Create Zendesk RequestCreate a new request in Zendesk.
Create Zendesk TargetCreate a target in Zendesk for triggering outbound integrations.
Create Zendesk TicketCreate a ticket in Zendesk with full support for all ticket fields.
Create Ticket or Voicemail TicketCreate a ticket in Zendesk via the voice/channel API endpoint.
Create Zendesk UserTool to create a new user in Zendesk.
Create Zendesk User FieldCreate a custom user field in Zendesk.
Delete Access RuleDelete an access rule for a custom object in Zendesk.
Delete Zendesk AutomationPermanently deletes an automation in Zendesk.
Delete Zendesk Business Hours SchedulePermanently deletes a business hours schedule in Zendesk.
Delete Custom Object Record AttachmentPermanently deletes an attachment from a custom object record in Zendesk.
Delete Custom Object RecordPermanently deletes a custom object record in Zendesk by its external ID or name.
Delete Deleted Ticket PermanentlyPermanently deletes a soft-deleted ticket from Zendesk.
Delete Zendesk Deletion SchedulePermanently deletes a deletion schedule in Zendesk.
Delete Zendesk Group MembershipPermanently deletes a group membership in Zendesk, immediately removing a user from a group.
Bulk Delete Zendesk Group MembershipsBulk delete group memberships in Zendesk.
Delete Zendesk MacroPermanently deletes a macro in Zendesk.
Bulk Delete Zendesk MacrosBulk delete macros in Zendesk.
Bulk Delete Zendesk AutomationsBulk delete automations in Zendesk.
Bulk Delete Zendesk Custom Object TriggersBulk delete triggers for a Zendesk custom object.
Bulk Delete Zendesk Organization MembershipsBulk delete organization memberships in Zendesk.
Bulk Delete Zendesk ViewsBulk delete views in Zendesk.
Delete Zendesk Organization FieldPermanently deletes an organization field in Zendesk.
Delete Organization MembershipPermanently removes a user from an organization in Zendesk by deleting the organization membership.
Delete Organization TagsRemove all tags from a Zendesk organization.
Delete Zendesk Organization SubscriptionPermanently deletes an organization subscription in Zendesk.
Delete Resource CollectionDelete a resource collection in Zendesk.
Bulk Delete Zendesk Suspended TicketsPermanently deletes multiple suspended tickets in Zendesk.
Delete Zendesk TargetPermanently deletes a target in Zendesk.
Delete Zendesk Ticket FieldPermanently deletes a ticket field in Zendesk.
Delete Ticket Field OptionPermanently deletes an option from a ticket field in Zendesk.
Delete Ticket TagsRemove tags from a Zendesk ticket.
Delete Zendesk TriggerPermanently deletes a trigger in Zendesk.
Delete Zendesk Trigger CategoryPermanently deletes a trigger category in Zendesk.
Delete Zendesk User FieldPermanently deletes a user field in Zendesk, removing it from all user profiles.
Delete User Field OptionPermanently deletes an option from a user field in Zendesk.
Permanently Delete UserPermanently deletes a soft-deleted user from Zendesk.
Delete Zendesk User ProfilePermanently deletes a user profile in Zendesk by its profile ID.
Bulk Delete Zendesk UsersBulk delete users from Zendesk by their IDs or external IDs.
Delete Zendesk User SessionDelete a specific user session in Zendesk.
Delete Zendesk User's Group MembershipPermanently deletes a user's group membership in Zendesk, immediately removing a user from a group.
Delete User IdentityDeletes an identity for a given user in Zendesk.
Delete Authenticated SessionDelete the current authenticated session in Zendesk.
Delete User's Organization MembershipPermanently removes a user from an organization in Zendesk by deleting the organization membership for a specific user.
Delete All User SessionsBulk delete all sessions for a specific user in Zendesk.
Delete User TagsRemove tags from a Zendesk user.
Delete Zendesk ViewDelete a single view in Zendesk.
Delete Zendesk App InstallationPermanently removes an installed app from Zendesk.
Delete Zendesk BookmarkPermanently deletes a bookmark in Zendesk.
Delete Zendesk Custom ObjectPermanently deletes a custom object definition in Zendesk.
Delete Zendesk Custom Object FieldPermanently deletes a custom object field in Zendesk.
Delete Zendesk Custom Object RecordPermanently deletes a custom object record in Zendesk.
Delete Zendesk Custom StatusPermanently deletes a custom ticket status in Zendesk.
Delete Zendesk Dynamic Content ItemPermanently deletes a dynamic content item in Zendesk.
Delete Zendesk Dynamic Content Item VariantPermanently deletes a dynamic content item variant in Zendesk.
Delete Zendesk Custom Object TriggerPermanently deletes a custom object trigger in Zendesk.
Delete Zendesk OrganizationDelete an organization in Zendesk.
Delete Zendesk Support AddressPermanently deletes a support address from Zendesk.
Delete Zendesk TicketPermanently deletes a ticket in Zendesk, including its entire conversation history.
Delete Zendesk UserTool to permanently delete a user from Zendesk.
Bulk Delete Soft-Deleted Zendesk TicketsPermanently deletes multiple soft-deleted tickets in Zendesk.
Bulk Delete Zendesk OrganizationsBulk delete Zendesk organizations.
Detect Best LocaleDetect the best language/locale for the current user based on their browser settings and account preferences.
Download Custom Object Record AttachmentDownload attachment file from a Zendesk custom object record.
Get Zendesk About MeGet information about the currently authenticated user in Zendesk.
Get Account SettingsRetrieve Zendesk account settings.
List Active TriggersList all active ticket triggers in Zendesk.
Count ActivitiesCount ticket activities in Zendesk.
Get Zendesk OrganizationsGet all organizations in Zendesk.
Get AppGet a single Zendesk app by its numeric ID.
Get App Installation RequirementsList all requirements for a Zendesk app installation.
Get App LocationGet details for a specific Zendesk app location by its numeric ID.
List Apps Location InstallationsList all apps location installations from Zendesk.
Get App Public KeyRetrieves the public key for a specific Zendesk app.
Get App Public Key PEMRetrieves the public key for a specific Zendesk app in PEM format.
Get AttachmentRetrieve details of a single Zendesk attachment by its ID.
Get Autocomplete TagsSearch for Zendesk tags using autocomplete.
Show AutomationShow a specific automation by its ID.
List AutomationsList all automations for the current Zendesk account.
Search AutomationsSearch for Zendesk automations by their title.
List BrandsList all brands configured in your Zendesk account.
Get Zendesk BrandShow a Brand.
List Agents by BrandList agents assigned to a specific brand in Zendesk.
Get Custom Object Fields LimitGet the current count and maximum limit for custom object fields in Zendesk.
Get Custom Object Records LimitGet the current record limit and usage count for custom objects in Zendesk.
Get Custom Objects LimitGet the current count and maximum limit for custom objects in Zendesk.
Get Custom StatusGet a specific custom ticket status from Zendesk by its ID.
List Custom Ticket StatusesList custom ticket statuses available in a Zendesk account.
List Deleted TicketsLists tickets that have been deleted from Zendesk, showing up to 100 deleted tickets per page with pagination.
Get Deleted UserRetrieves a single deleted Zendesk user by their ID.
Get Deletion ScheduleRetrieve a specific deletion schedule from Zendesk by its ID.
List Deletion SchedulesList all deletion schedules for the current Zendesk account.
List Dynamic Content ItemsList all dynamic content items configured in your Zendesk account.
Show Dynamic Content ItemShow a specific dynamic content item by its ID.
Show Many Dynamic Content ItemsRetrieve multiple dynamic content items by their identifiers.
List Dynamic Content VariantsList all variants of a specific Zendesk dynamic content item.
Show Dynamic Content Item VariantShow a specific variant of a dynamic content item in Zendesk.
Get Email NotificationRetrieve details of a single email notification in Zendesk by its notification ID.
Get Email NotificationsList email notifications from Zendesk.
Show Many Email NotificationsShow details of many email notifications in Zendesk.
List End User IdentitiesTool to list all identities associated with a specific end user.
Get End User IdentityTool to fetch a specific end user identity by user ID and identity ID.
Get Group MembershipGet a group membership by its unique ID.
List Group MembershipsList all group memberships in your Zendesk account.
List Memberships By GroupList group memberships for a specific Zendesk group.
List Assignable GroupsList all groups that can be assigned to tickets or users in your Zendesk account.
Count GroupsCount groups in Zendesk.
Count Users by GroupCount users in a specific Zendesk group.
List Group UsersList all users belonging to a specific Zendesk group.
List Guide Survey ResponsesList survey responses from Zendesk Guide.
List Guide SurveysList available CSAT (Customer Satisfaction) surveys in Zendesk Guide.
Get Incremental OrganizationsRetrieve organizations that have been modified since a specified start time using the Incremental Organization Export API.
Incremental Routing Attributes ExportExport routing attributes incrementally with optional start_time filtering and cursor-based pagination.
Get Incremental Routing Attribute ValuesRetrieve routing attribute values that have been modified since a specified start time using the Incremental Skill-Based Routing API.
Export Incremental Routing Instance ValuesExport incremental routing instance values from Zendesk skill-based routing.
Get Incremental Sample ExportTest the incremental export by retrieving a sample of records that have changed since a specified start time.
Get Incremental Ticket EventsExport incremental ticket events from Zendesk.
List Ticket Metric EventsList ticket metric events in Zendesk that occurred on or after a specified time.
Get Incremental TicketsRetrieve tickets that have been modified since a specified start time using the Incremental Ticket Export API.
Get Incremental Tickets (Cursor)Export tickets incrementally using cursor-based pagination.
Get Incremental UsersRetrieve users that have been modified since a specified start time using the Incremental User Export API.
Incremental User Export (Cursor)Export users incrementally using cursor-based pagination.
List Job StatusesList job statuses from Zendesk.
Get Job StatusGet a single job status by ID from Zendesk.
Get LocaleGet a locale by its ID or BCP-47 code.
List LocalesList all translation locales available for your Zendesk account.
List Agent LocalesList the translation locales that have been localized for agent use.
Get Current LocaleShow the current locale for a Zendesk account.
Show MacroShow a specific macro by its ID.
List Macro AttachmentsList all attachments associated with a specific Zendesk macro.
List Macro CategoriesList all macro categories available to the current Zendesk account.
List Macro Action DefinitionsRetrieve the definitions of all actions that a macro can perform in Zendesk.
Show Macro ReplicaShow a macro replica (unpersisted macro representation) based on a macro ID and ticket ID.
List MacrosList all shared and personal macros available in your Zendesk account.
List Macro ActionsList supported actions for macros in Zendesk.
List Active MacrosList all active shared and personal macros in Zendesk.
Show Changes to TicketShow changes to a ticket that would result from applying a macro.
Search MacrosSearch for Zendesk macros by their title.
Show Object TriggerShow a specific trigger for a custom object in Zendesk.
List Open RequestsList open requests from Zendesk.
Get Organization FieldGet details for a specific organization field in Zendesk by its ID or key.
List Organization FieldsList all custom organization fields for the Zendesk account.
Get Organization MembershipGet details for a specific organization membership by its ID.
Get Organization Related InfoGet related counts and information for a specific Zendesk organization by ID.
List Organization RequestsList requests for a specific Zendesk organization.
Autocomplete OrganizationsSearch for Zendesk organizations using autocomplete.
List Organization MergesList all organization merge operations for a specific organization in Zendesk.
Show Many OrganizationsShow many Zendesk organizations by their IDs or external IDs.
Count Organization TicketsCount organization tickets in Zendesk.
Get Organization SubscriptionShow Organization Subscription - retrieves details of a specific organization subscription by its ID.
List Organization SubscriptionsList Organization Subscriptions in Zendesk.
Get Organization TagsList all tags associated with a specific Zendesk organization.
Get Organization TicketsGet tickets for a specific organization in Zendesk.
List Organization UsersList all users associated with a specific Zendesk organization.
Count Organization UsersCount users in a specific Zendesk organization by ID.
Get Owned AppsList apps owned by the current Zendesk account.
List Ticket ProblemsList Zendesk ticket problems.
List Public LocalesList all available public locales that can be used for translations in Zendesk.
Get Recent TicketsList recently viewed tickets in Zendesk.
List Remote AuthenticationsList all remote authentication configurations in your Zendesk account.
List Request CommentsList comments on a Zendesk request.
List CCD RequestsList CCD Requests.
Get Request CommentGet a specific comment from a Zendesk request.
Search RequestsSearch for requests in Zendesk using query syntax.
List Solved RequestsList Zendesk requests with the 'solved' status.
Get Agent Attribute ValuesRetrieve attribute values for multiple agents/users using the Skill-Based Routing API.
List Satisfaction RatingsList satisfaction ratings for tickets in Zendesk.
Count Satisfaction RatingsCount satisfaction ratings in Zendesk.
Get Search Results CountCount the number of items matching a search query in Zendesk.
Export Search ResultsExport search results from Zendesk using cursor-based pagination.
Get Security SettingsShow Security Settings for a Zendesk account.
List Side Conversation EventsRetrieve side conversation events for incremental export.
Get Support AddressGet a support address by its unique ID.
List TagsList Zendesk tags in order of popularity.
Count TagsCount Tags in Zendesk.
Show TargetShow a specific target by its ID.
Show Target FailureShow a target failure in Zendesk.
List Target FailuresList the 25 most recent target failures in Zendesk.
List TargetsList all targets for the current Zendesk account.
Get Ticket AuditShow a specific audit for a ticket from Zendesk.
List Ticket CollaboratorsList all collaborators (CC'd users) on a Zendesk ticket.
Get Ticket CommentsList comments on a Zendesk ticket.
List Ticket Email CCsList Email CCs for a Ticket.
Show Ticket FieldShow a specific ticket field by its ID.
List Ticket FieldsList all system and custom ticket fields in Zendesk.
Count Ticket FieldsCount ticket fields in Zendesk.
Show Many Ticket FieldsRetrieve multiple ticket fields by their IDs or keys in a single request.
List Ticket FollowersList all followers on a Zendesk ticket.
List Ticket FormsList all ticket forms configured in your Zendesk account.
Show Many Ticket FormsShow multiple ticket forms by their IDs.
List Ticket IncidentsList incidents linked to a problem ticket in Zendesk.
Get Ticket MetricRetrieve a specific ticket metric from Zendesk by its ID.
Get Ticket MetricsList Ticket Metrics from Zendesk.
List Ticket AuditsList all audits (change history) for a specific Zendesk ticket.
Count Ticket AuditsCount audits for a specific ticket in Zendesk.
Count Ticket CommentsCount comments on a Zendesk ticket.
Get Ticket Conversation LogList conversation log events for a specific Zendesk ticket.
Count Zendesk TicketsCount the number of tickets in Zendesk.
List Ticket SkipsList ticket skips for a specific ticket from Zendesk.
Get Ticket MetricsGet ticket metrics from Zendesk for a specific ticket.
List Side Conversation EventsList all events for a specific side conversation on a Zendesk ticket.
Show TriggerShow a specific trigger by its ID.
List Trigger CategoriesList all ticket trigger categories in your Zendesk account.
Show Trigger CategoryShow a specific ticket trigger category by its ID.
List Ticket TriggersList all ticket triggers for the current Zendesk account.
Get Ticket Trigger DefinitionsGet Ticket Trigger Action and Condition Definitions.
Search Ticket TriggersSearch for Zendesk ticket triggers by their title.
Get UserTool to fetch a single Zendesk user by numeric user_id.
Get Full User EntitlementsTool to retrieve full entitlements for a Zendesk user across all products (Chat, Explore, Talk, Guide).
Get User EventsRetrieve event history for a specific Zendesk user.
Get User Field By IDRetrieve a single Zendesk user field by its numeric ID.
List User Field OptionsList custom user field options for a given user field.
List User FieldsList all custom user fields configured in your Zendesk account.
Get User Fields Show ManyRetrieve multiple Zendesk user fields by their keys.
Get User Profile by Profile IDRetrieve a single Zendesk user profile by its Sunshine profile ID.
Get User Profile Events by IDGet events for a Sunshine profile by its profile ID.
Get User's Assigned TicketsList tickets assigned to a specific Zendesk user.
Autocomplete UsersAutocomplete users by name or phone number.
List Brand Agent Memberships By UserList brand agent memberships for a specific user in Zendesk.
Get User's CC'd TicketsList tickets where a specific Zendesk user is CC'd (carbon copied).
Get User Compliance Deletion StatusesTool to fetch GDPR compliance deletion statuses for a specific Zendesk user.
Count UsersCount users in Zendesk.
List User SessionsList all sessions for a specific Zendesk user.
Get User's Followed TicketsList tickets the specified Zendesk user is following.
List Memberships By UserList group memberships for a specific Zendesk user.
Get User's Group MembershipGet a specific group membership for a user by their IDs.
List User GroupsList all groups that a specific Zendesk user belongs to.
Count User GroupsCount user groups in Zendesk.
Show User IdentityTool to show a specific user identity by user ID and identity ID.
Get Current SessionShow the currently authenticated session in Zendesk.
Get Current User SettingsGet the settings for the currently authenticated user in Zendesk.
List User Organization MembershipsList organization memberships for a specific Zendesk user.
Get User's Organization MembershipGet details for a specific organization membership by user ID and membership ID.
List User OrganizationsList organizations associated with a specific Zendesk user.
Get User's Organizations CountReturns an approximate count of organizations that a user belongs to.
List User's Organization SubscriptionsList User's Organization Subscriptions - retrieves organization subscriptions for a specific user.
Get User Password RequirementsGet password requirements for a specific Zendesk user.
Get Users ProfilesRetrieve profiles associated with a specific Zendesk user by user ID.
Get User Related InfoGet related counts and information for a specific Zendesk user by ID.
Get User's Requested TicketsList tickets requested by a specific Zendesk user.
List User RequestsList ticket requests for a specific Zendesk user.
List User SkipsList ticket skips for a specific user from Zendesk.
Get User TagsList all tags assigned to a specific Zendesk user.
Count User Assigned TicketsCount tickets assigned to a specific user in Zendesk.
List View Filter DefinitionsList the definitions of the conditions and actions available for constructing views in Zendesk.
List ViewsList shared and personal views available to the current user in Zendesk.
List Active ViewsList all active shared and personal views available in Zendesk.
List Views - CompactRetrieves a compacted list of shared and personal views available to the current user in Zendesk.
Count ViewsCount shared and personal views in Zendesk.
Count Tickets in ViewsCount tickets in multiple Zendesk views.
Execute ViewExecute a Zendesk view to retrieve its column titles and matching ticket rows.
Export ViewExport a Zendesk view as a CSV file.
Search ViewsSearch for Zendesk views by their title.
List Views By IDsGet multiple Zendesk views by their IDs.
List Tickets From ViewList tickets from a specific Zendesk view.
Count Tickets in ViewCount tickets in a specific view in Zendesk.
List ActivitiesList ticket activities in the last 30 days affecting your Zendesk.
List Custom RolesList all custom roles configured in your Zendesk account.
Get Zendesk OrganizationGet metadata for a specific Zendesk organization by ID.
Get Zendesk Organization MergeRetrieve the details of a specific organization merge operation in Zendesk.
List Organization SubscriptionsList all organization subscriptions for a specific Zendesk organization.
List RequestsList ticket requests in Zendesk.
List SessionsList all active sessions in your Zendesk account.
List Sharing AgreementsList all sharing agreements for your Zendesk account.
List Suspended TicketsList suspended tickets in Zendesk.
Get Zendesk TicketGet ticket details from Zendesk.
List Ticket Field OptionsList Ticket Field Options - Returns a list of custom ticket field options for dropdown and multi-select ticket fields.
Show Ticket Field OptionShow Ticket Field Option - Retrieves a specific custom ticket field option for dropdown and multi-select ticket fields.
Get Zendesk Ticket FormGet details for a specific ticket form in Zendesk by its ID.
Get Zendesk Ticket RelatedGet related information for a specific Zendesk ticket.
Get Side ConversationGet a specific side conversation by its ID for a Zendesk ticket.
Get Ticket TagsList all tags associated with a specific Zendesk ticket.
List Active AutomationsList all active automations in Zendesk.
List App InstallationsList all app installations in the Zendesk account.
List App LocationsList all available locations where Zendesk apps can be installed.
List Assignable Group MembershipsList assignable group memberships in Zendesk.
List Assignable Memberships By GroupList assignable group memberships for a specific group in Zendesk.
List BookmarksList Bookmarks returns all bookmarks created by the user.
List Brand Agent MembershipsList brand agent memberships to retrieve which agents are associated with which brands in Zendesk.
List Custom Object Record AttachmentsList all file attachments for a specific custom object record in Zendesk.
List Custom Object RecordsList all records for a specific custom object type in Zendesk.
List Deleted UsersTool to list deleted users in Zendesk via the Users API.
List Incremental Custom Object RecordsExport custom object records incrementally using cursor-based pagination.
List Monitored X HandlesList all monitored X (Twitter) handles configured in your Zendesk account.
List Object TriggersList all triggers for a specific custom object in Zendesk.
List Object Trigger DefinitionsList Object Trigger Action and Condition Definitions for a custom object in Zendesk.
List Organization MembershipsList organization memberships in Zendesk.
List Organization Memberships by OrganizationList organization memberships for a specific organization in Zendesk.
List Resource CollectionsList Resource Collections for the Zendesk account.
List All SkipsLists all ticket skips in Zendesk.
List Support AddressesList all support addresses (recipient addresses) configured in your Zendesk account.
List Ticket AuditsList all ticket audits from Zendesk.
List Ticket Content PinsList Ticket Content Pins returns all content pins for a specified ticket.
List User IdentitiesTool to list all identities for a specific Zendesk user.
List Access RulesList all access rules for a Zendesk custom object.
List Custom Object FieldsList all fields for a custom object in Zendesk.
List Custom ObjectsList all custom object definitions in Zendesk.
List Permission PoliciesList all permission policies for a custom object in Zendesk.
List TicketsList Zendesk tickets with pagination and filtering.
List UsersTool to list/enumerate Zendesk users via the Users API.
Make Zendesk Ticket Comment PrivateMake a public ticket comment private in Zendesk.
Make Organization Membership DefaultSet a specific organization membership as the default for a user in Zendesk.
Make End User Identity PrimarySet a specified identity as the primary identity for an end user in Zendesk.
Make Ticket Comment PrivateChange a public comment to private on a Zendesk ticket audit.
Make User Identity PrimaryTool to set a user identity as the primary identity for a Zendesk user.
Mark Multiple Tickets as SpamMarks multiple tickets as spam in Zendesk.
Merge UsersMerges two Zendesk end users together.
Merge Zendesk TicketsMerges multiple tickets into a target ticket in Zendesk.
Open User's Profile in Agent BrowserOpen a Zendesk user's profile in a specified agent's browser.
Recover Multiple Suspended TicketsRecover multiple suspended tickets in Zendesk.
Renew SessionRenew the current Zendesk session and obtain a new authenticity token.
Reorder Custom Object FieldsReorder Custom Fields of an Object.
Reorder App Location InstallationsReorder App Installations For Location.
Reorder Organization FieldsReorder Organization Fields.
Reorder Ticket FieldsReorder Ticket Fields.
Reorder Ticket TriggersReorder Ticket Triggers.
Reorder User FieldsReorder User Fields.
Reply to Zendesk TicketAction to reply to a Zendesk ticket by adding a comment.
Request End User VerificationSend a verification email to an end user to verify ownership of their email address identity.
Request User CreateSend a request to create a user in Zendesk.
Request User VerificationSend a verification email to a user to verify ownership of their email address identity.
Restore Multiple Deleted TicketsRestores multiple previously deleted tickets in Zendesk.
Restore Zendesk TicketRestores a previously deleted ticket in Zendesk.
Search Custom Object RecordsSearch and filter custom object records in Zendesk using text queries and field filters.
Search Object TriggersSearch for triggers associated with a custom object in Zendesk.
Search ZendeskTool to search for tickets, users, organizations, and groups in Zendesk using query syntax.
Search OrganizationsSearch organizations in Zendesk by external ID or name.
Search Zendesk UsersSearch for Zendesk users by query or external ID.
Set Default Custom Ticket StatusSets one or more custom ticket statuses as the default for their respective categories.
Set Group Membership as DefaultSet a group membership as the default for a specific user in Zendesk.
Set Organization as Default for UserSet an organization as the default for a user in Zendesk.
Show Access RuleShow a custom object access rule by its ID.
Show Custom ObjectGet details of a specific Zendesk custom object by its key.
Show Custom Object RecordGet details of a specific Zendesk custom object record by its key and record ID.
Show Many Job StatusesShow many job statuses by their IDs in Zendesk.
Show Many TicketsShow multiple tickets by their IDs.
Show Many UsersRetrieve multiple Zendesk users by their numeric IDs or external IDs.
Show Permission PolicyGet details of a specific permission policy for a Zendesk custom object by its ID.
Show RequestShow a single request in Zendesk.
Unassign User from OrganizationImmediately removes a user from an organization in Zendesk.
Update Access RuleUpdate an existing access rule for a custom object in Zendesk.
Update Zendesk App InstallationUpdate an app installation in Zendesk.
Update AutomationUpdate an existing automation in Zendesk.
Update Custom ObjectUpdate an existing custom object in Zendesk.
Update Custom Object RecordUpdate an existing record for a custom object in Zendesk.
Update Custom Ticket StatusUpdate an existing custom ticket status in Zendesk.
Update Deletion ScheduleUpdate an existing deletion schedule in Zendesk.
Update Dynamic Content VariantUpdate a single variant of a dynamic content item in Zendesk.
Update Many Dynamic Content VariantsUpdate one or more variants of a dynamic content item in Zendesk.
Update MacroUpdate an existing macro in Zendesk.
Update Many AutomationsUpdate multiple automations in Zendesk in a single request.
Update Many MacrosUpdate multiple macros in Zendesk in a single request.
Update Many Object TriggersUpdate multiple custom object triggers in Zendesk in a single request.
Update Many Zendesk OrganizationsBulk update multiple Zendesk organizations in a single request.
Update Many TicketsUpdate multiple tickets in Zendesk in a single request.
Update Many Ticket TriggersUpdate multiple ticket triggers in Zendesk in a single request.
Update Many UsersBulk update multiple Zendesk users in a single request.
Update Many ViewsUpdate multiple views in Zendesk in a single request.
Update Object TriggerUpdate an existing custom object trigger in Zendesk.
Update Organization FieldUpdate a custom organization field in Zendesk.
Add Organization TagsAdd organization tags in Zendesk.
Update Permission PolicyUpdate an existing permission policy for a custom object in Zendesk.
Update Resource CollectionUpdate an existing resource collection in Zendesk.
Update Side ConversationUpdate a side conversation on a ticket in Zendesk.
Update Support AddressUpdate an existing support address in Zendesk.
Update Zendesk TargetUpdate an existing target in Zendesk.
Update Ticket FieldUpdate an existing ticket field in Zendesk.
Update Zendesk Ticket TagsUpdate tags on a Zendesk ticket via PUT request to /api/v2/tickets/{ticket_id}/tags.
Update Ticket TriggerUpdate an existing ticket trigger in Zendesk.
Update Trigger CategoryUpdate an existing trigger category in Zendesk.
Update Zendesk User FieldUpdate an existing user field in Zendesk.
Update Zendesk User ProfilePartially updates a user profile in Zendesk by identifier.
Update Zendesk User Profile By IDPartially updates a user profile in Zendesk by profile ID.
Update User IdentityUpdate a user identity in Zendesk.
Update Current User SettingsUpdate the settings for the currently authenticated Zendesk user.
Update Users ProfilesCreate or update a user profile for a specific Zendesk user by user ID and identifier.
Update User TagsUpdate (replace) tags for a specific Zendesk user.
Update ViewUpdate an existing view in Zendesk.
Update Zendesk Account SettingsUpdate Zendesk account-level settings including tickets, branding, localization, routing, and more.
Update Zendesk AttachmentUpdates an attachment's malware access override setting.
Update Custom Object FieldUpdate an existing custom object field in Zendesk.
Update Dynamic Content ItemUpdate a dynamic content item in Zendesk.
Update Zendesk OrganizationUpdate an organization in Zendesk.
Update RequestUpdate a ticket request in Zendesk with a comment or collaborators.
Update Zendesk TicketTool to update a ticket in Zendesk.
Upsert Custom Object Record By External ID or NameCreate or update a custom object record in Zendesk by external_id or name.
Verify Subdomain AvailabilityVerify if a subdomain name is available for use in Zendesk.
Verify Support AddressVerify a support address forwarding in Zendesk.
Verify User IdentitySet a user identity as verified in Zendesk.

What is the Composio tool router, and how does it fit here?

What is Composio SDK?

Composio's Composio SDK helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Composio SDK

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Prerequisites

Before starting, make sure you have:
  • Composio API Key and OpenAI API Key
  • Primary know-how of OpenAI Agents SDK
  • A live Zendesk project
  • Some knowledge of Python or Typescript

Getting API Keys for OpenAI and Composio

OpenAI API Key
  • Go to the OpenAI dashboard and create an API key. You'll need credits to use the models, or you can connect to another model provider.
  • Keep the API key safe.
Composio API Key

Install dependencies

pip install composio_openai_agents openai-agents python-dotenv

Install the Composio SDK and the OpenAI Agents SDK.

Set up environment variables

bash
OPENAI_API_KEY=sk-...your-api-key
COMPOSIO_API_KEY=your-api-key
USER_ID=composio_user@gmail.com

Create a .env file and add your OpenAI and Composio API keys.

Import dependencies

import asyncio
import os
from dotenv import load_dotenv

from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider
from agents import Agent, Runner, HostedMCPTool, SQLiteSession
What's happening:
  • You're importing all necessary libraries.
  • The Composio and OpenAIAgentsProvider classes are imported to connect your OpenAI agent to Composio tools like Zendesk.

Set up the Composio instance

load_dotenv()

api_key = os.getenv("COMPOSIO_API_KEY")
user_id = os.getenv("USER_ID")

if not api_key:
    raise RuntimeError("COMPOSIO_API_KEY is not set. Create a .env file with COMPOSIO_API_KEY=your_key")

# Initialize Composio
composio = Composio(api_key=api_key, provider=OpenAIAgentsProvider())
What's happening:
  • load_dotenv() loads your .env file so OPENAI_API_KEY and COMPOSIO_API_KEY are available as environment variables.
  • Creating a Composio instance using the API Key and OpenAIAgentsProvider class.

Create a Tool Router session

# Create a Zendesk Tool Router session
session = composio.create(
    user_id=user_id,
    toolkits=["zendesk"]
)

mcp_url = session.mcp.url

What is happening:

  • You give the Tool Router the user id and the toolkits you want available. Here, it is only zendesk.
  • The router checks the user's Zendesk connection and prepares the MCP endpoint.
  • The returned session.mcp.url is the MCP URL that your agent will use to access Zendesk.
  • This approach keeps things lightweight and lets the agent request Zendesk tools only when needed during the conversation.

Configure the agent

# Configure agent with MCP tool
agent = Agent(
    name="Assistant",
    model="gpt-5",
    instructions=(
        "You are a helpful assistant that can access Zendesk. "
        "Help users perform Zendesk operations through natural language."
    ),
    tools=[
        HostedMCPTool(
            tool_config={
                "type": "mcp",
                "server_label": "tool_router",
                "server_url": mcp_url,
                "headers": {"x-api-key": api_key},
                "require_approval": "never",
            }
        )
    ],
)
What's happening:
  • We're creating an Agent instance with a name, model (gpt-5), and clear instructions about its purpose.
  • The agent's instructions tell it that it can access Zendesk and help with queries, inserts, updates, authentication, and fetching database information.
  • The tools array includes a HostedMCPTool that connects to the MCP server URL we created earlier.
  • The headers dict includes the Composio API key for secure authentication with the MCP server.
  • require_approval: 'never' means the agent can execute Zendesk operations without asking for permission each time, making interactions smoother.

Start chat loop and handle conversation

print("\nComposio Tool Router session created.")

chat_session = SQLiteSession("conversation_openai_toolrouter")

print("\nChat started. Type your requests below.")
print("Commands: 'exit', 'quit', or 'q' to end\n")

async def main():
    try:
        result = await Runner.run(
            agent,
            "What can you help me with?",
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")
    except Exception as e:
        print(f"Error: {e}\n")

    while True:
        user_input = input("You: ").strip()
        if user_input.lower() in {"exit", "quit", "q"}:
            print("Goodbye!")
            break

        result = await Runner.run(
            agent,
            user_input,
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")

asyncio.run(main())
What's happening:
  • The program prints a session URL that you visit to authorize Zendesk.
  • After authorization, the chat begins.
  • Each message you type is processed by the agent using Runner.run().
  • The responses are printed to the console, and conversations are saved locally using SQLite.
  • Typing exit, quit, or q cleanly ends the chat.

Complete Code

Here's the complete code to get you started with Zendesk and OpenAI Agents SDK:

import asyncio
import os
from dotenv import load_dotenv

from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider
from agents import Agent, Runner, HostedMCPTool, SQLiteSession

load_dotenv()

api_key = os.getenv("COMPOSIO_API_KEY")
user_id = os.getenv("USER_ID")

if not api_key:
    raise RuntimeError("COMPOSIO_API_KEY is not set. Create a .env file with COMPOSIO_API_KEY=your_key")

# Initialize Composio
composio = Composio(api_key=api_key, provider=OpenAIAgentsProvider())

# Create Tool Router session
session = composio.create(
    user_id=user_id,
    toolkits=["zendesk"]
)
mcp_url = session.mcp.url

# Configure agent with MCP tool
agent = Agent(
    name="Assistant",
    model="gpt-5",
    instructions=(
        "You are a helpful assistant that can access Zendesk. "
        "Help users perform Zendesk operations through natural language."
    ),
    tools=[
        HostedMCPTool(
            tool_config={
                "type": "mcp",
                "server_label": "tool_router",
                "server_url": mcp_url,
                "headers": {"x-api-key": api_key},
                "require_approval": "never",
            }
        )
    ],
)

print("\nComposio Tool Router session created.")

chat_session = SQLiteSession("conversation_openai_toolrouter")

print("\nChat started. Type your requests below.")
print("Commands: 'exit', 'quit', or 'q' to end\n")

async def main():
    try:
        result = await Runner.run(
            agent,
            "What can you help me with?",
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")
    except Exception as e:
        print(f"Error: {e}\n")

    while True:
        user_input = input("You: ").strip()
        if user_input.lower() in {"exit", "quit", "q"}:
            print("Goodbye!")
            break

        result = await Runner.run(
            agent,
            user_input,
            session=chat_session
        )
        print(f"Assistant: {result.final_output}\n")

asyncio.run(main())

Conclusion

This was a starter code for integrating Zendesk MCP with OpenAI Agents SDK to build a functional AI agent that can interact with Zendesk.

Key features:

  • Hosted MCP tool integration through Composio's Tool Router
  • SQLite session persistence for conversation history
  • Simple async chat loop for interactive testing
You can extend this by adding more toolkits, implementing custom business logic, or building a web interface around the agent.

How to build Zendesk MCP Agent with another framework

FAQ

What are the differences in Tool Router MCP and Zendesk MCP?

With a standalone Zendesk MCP server, the agents and LLMs can only access a fixed set of Zendesk tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Zendesk and many other apps based on the task at hand, all through a single MCP endpoint.

Can I use Tool Router MCP with OpenAI Agents SDK?

Yes, you can. OpenAI Agents SDK fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Zendesk tools.

Can I manage the permissions and scopes for Zendesk while using Tool Router?

Yes, absolutely. You can configure which Zendesk scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Zendesk data and credentials are handled as safely as possible.

Used by agents from

Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai

Never worry about agent reliability

We handle tool reliability, observability, and security so you never have to second-guess an agent action.