Skip to main content

Model Context Protocol (MCP)

Unizo offers an MCP server that integrates ticketing platforms with any LLM provider supporting the MCP protocol. This enables your AI agent to manage tickets, analyze support patterns, and automate customer service workflows across Jira, ServiceNow, Zendesk, and other ticketing systems via a single MCP server.

Supported Tools & Use Cases

The following tools are available in the Ticketing MCP Server:

Tool NameDescription
ticketing_list_connectors Get list of available ticketing services
ticketing_list_integrationsGet integrations for a specific ticketing service
ticketing_list_organizationsBrowse available organizations
ticketing_get_organizationRetrieve comprehensive organization information
ticketing_list_collectionsBrowse collections (projects/boards)
ticketing_get_collectionRetrieve detailed collection information
ticketing_list_usersBrowse users with pagination
ticketing_get_userRetrieve detailed user information
ticketing_list_ticketsBrowse tickets with pagination
ticketing_get_ticketRetrieve comprehensive ticket information
ticketing_create_ticketCreate a new ticket
ticketing_create_bulk_ticketsCreate multiple tickets in bulk
ticketing_update_ticketUpdate an existing ticket
ticketing_link_ticketsLink two tickets together
ticketing_list_commentsBrowse ticket comments
ticketing_get_commentRetrieve detailed comment information
ticketing_create_commentCreate a new comment
ticketing_list_attachmentsBrowse ticket attachments
ticketing_get_attachmentRetrieve attachment information
ticketing_create_attachmentUpload a new attachment
ticketing_list_labelsBrowse ticket labels
ticketing_create_labelCreate a new label

Tool Reference

Service Discovery Tools

ticketing_list_connectors

Get list of available ticketing services

Parameters:
None

Returns:
List of available ticketing services (e.g., Jira, GitHub, GitLab)

Example Response:

[
{"name": "jira"},
{"name": "github"},
{"name": "gitlab"}
]

ticketing_list_integrations

Get integrations for a specific ticketing service

Parameters:

  • connector (string, required): Name of the service (e.g., "jira", "github", "gitlab")

Returns: List of integrations available for the specified service

Example Response:

[
{
"id": "integration-123",
"name": "Company Jira"
},
{
"id": "integration-456",
"name": "GitHub Projects"
}
]

Organization Management Tools

ticketing_list_organizations

Browse available organizations

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)

Returns: List of organizations

Example Response:

[
{
"id": "org-123",
"name": "Engineering Team",
"description": "Main engineering organization",
"login": "eng-team",
"targetUrl": "https://api.example.com/orgs/org-123",
"avatarUrl": "https://example.com/avatars/org-123.png",
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
]

ticketing_get_organization

Get detailed information about a specific organization

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization

Returns: Comprehensive organization information

Example Response:

{
"status": "success",
"message": "Organization retrieved successfully",
"organization": {
"id": "org-123",
"name": "Engineering Team",
"description": "Main engineering organization",
"login": "eng-team",
"targetUrl": "https://api.example.com/orgs/org-123",
"avatarUrl": "https://example.com/avatars/org-123.png",
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
}

Collection Management Tools

ticketing_list_collections

Browse collections (projects, sprints, epics, teams)

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization

Returns: List of collections

Example Response:

[
{
"id": "collection-123",
"name": "Mobile App Project",
"description": "iOS and Android mobile application development",
"key": "MAP",
"owner": "Engineering Team",
"type": "Project",
"status": "Active",
"accessLevel": false,
"targetUrl": "https://jira.company.com/projects/MAP",
"members": [
{
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"avatar": {
"small": "https://example.com/avatars/user-123-small.png"
}
}
],
"statistics": {
"totalTickets": 145,
"openTickets": 23,
"completedTickets": 122,
"progress": 84.1
},
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-12-31T23:59:59Z",
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
]

ticketing_get_collection

Get detailed information about a specific collection

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection

Returns: Comprehensive collection information

Example Response:

{
"status": "success",
"message": "Collection retrieved successfully",
"collection": {
"id": "collection-123",
"name": "Mobile App Project",
"description": "iOS and Android mobile application development",
"key": "MAP",
"owner": "Engineering Team",
"type": "Project",
"status": "Active",
"accessLevel": false,
"targetUrl": "https://jira.company.com/projects/MAP",
"members": [
{
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"avatar": {
"small": "https://example.com/avatars/user-123-small.png"
}
}
],
"statistics": {
"totalTickets": 145,
"openTickets": 23,
"completedTickets": 122,
"progress": 84.1
},
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-12-31T23:59:59Z",
"metadata": {
"jiraProjectType": "software",
"workflowScheme": "default"
},
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
}

User Management Tools

ticketing_list_users

Browse users with pagination and sorting

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • offset (integer, optional): Number of items to skip (default: 0)
  • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
  • sort (string, optional): Sort criteria (e.g., 'username,-createdAt')

Returns: Paginated list of users

Example Response:

{
"status": "success",
"message": "Found 25 users",
"users": [
{
"id": "user-123",
"email": "john.doe@company.com",
"firstName": "John",
"lastName": "Doe",
"username": "jdoe",
"status": "active",
"role": "user",
"lastLogin": "2024-09-10T14:30:00Z",
"createdAt": "2024-01-10T08:00:00Z",
"updatedAt": "2024-09-01T10:00:00Z"
}
],
"pagination": {
"total": 25,
"offset": 0,
"limit": 20
}
}

ticketing_get_user

Get detailed information about a specific user

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • user_id (string, required): Unique identifier of the user

Returns: Comprehensive user information

Example Response:

{
"status": "success",
"message": "User retrieved successfully",
"user": {
"id": "user-123",
"email": "john.doe@company.com",
"firstName": "John",
"lastName": "Doe",
"username": "jdoe",
"status": "active",
"role": "user",
"lastLogin": "2024-09-10T14:30:00Z",
"createdAt": "2024-01-10T08:00:00Z",
"updatedAt": "2024-09-01T10:00:00Z"
}
}

Ticket Management Tools

ticketing_list_tickets

Browse tickets with pagination and sorting

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, optional): Unique identifier of the organization (auto-selected if only one exists)
  • collection_id (string, optional): Unique identifier of the collection (auto-selected if only one exists)
  • offset (integer, optional): Number of items to skip (default: 0)
  • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
  • sort (string, optional): Sort criteria (e.g., 'name,-createdDateTime')

Returns: Paginated list of tickets

Example Response:

{
"status": "success",
"message": "Found 42 tickets in collection",
"tickets": [
{
"id": "ticket-123",
"name": "Implement user authentication",
"type": "feature",
"status": "in_progress",
"description": "Add OAuth 2.0 authentication for user login",
"key": "MAP-123",
"assignees": [
{
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@company.com"
}
],
"targetUrl": "https://jira.company.com/browse/MAP-123",
"changeLog": {
"createdDateTime": "2024-08-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-10T15:45:00Z"
}
}
],
"pagination": {
"total": 42,
"offset": 0,
"limit": 20
},
"collection_info": {
"integration_id": "integration-123",
"organization_id": "org-123",
"collection_id": "collection-123"
}
}

ticketing_get_ticket

Get detailed information about a specific ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket

Returns: Comprehensive ticket information

Example Response:

{
"status": "success",
"message": "Ticket retrieved successfully",
"ticket": {
"id": "ticket-123",
"name": "Implement user authentication",
"type": "feature",
"status": "in_progress",
"priority": "high",
"description": "Add OAuth 2.0 authentication for user login with support for Google, GitHub, and Microsoft providers",
"key": "MAP-123",
"assignees": [
{
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@company.com"
}
],
"labels": ["authentication", "security", "oauth"],
"dueDate": "2024-09-30T23:59:59Z",
"targetUrl": "https://jira.company.com/browse/MAP-123",
"metadata": {
"storyPoints": "8",
"sprint": "Sprint 23"
},
"changeLog": {
"createdDateTime": "2024-08-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-10T15:45:00Z"
}
}
}

ticketing_create_ticket

Create a new ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • name (string, required): Short summary or title of the ticket
  • description (string, required): Detailed description of the ticket
  • type (string, required): Type of ticket (Valid values: bug, feature, task, security, enhancement)
  • assignee_ids (array[string], optional): IDs of users to assign to the ticket
  • labels (array[string], optional): Tags or categories for the ticket
  • priority (string, optional): Importance level (Valid values: low, medium, high, critical)
  • due_date (string, optional): Target completion date (ISO 8601 format)
  • metadata (object, optional): Additional metadata for the ticket

Returns: Created ticket information

Example Response:

{
"status": "success",
"message": "Ticket created successfully with ID: ticket-789",
"ticket": {
"id": "ticket-789",
"name": "Fix login page responsiveness",
"type": "bug",
"status": "open",
"priority": "high",
"description": "Login page does not display correctly on mobile devices",
"key": "MAP-789",
"assignees": [
{
"id": "user-456",
"firstName": "Jane",
"lastName": "Smith"
}
],
"labels": ["ui", "mobile", "responsive"],
"dueDate": "2024-09-20T23:59:59Z",
"changeLog": {
"createdDateTime": "2024-09-15T10:30:00Z"
}
}
}

ticketing_create_bulk_tickets

Create multiple tickets in bulk

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • tickets (array[object], required): Array of ticket objects (min: 1, max: 100). Each ticket object should contain: name, description, type, and optional fields
  • notify (boolean, optional): Whether to send notifications (default: false)

Returns: Created tickets information Example Response:

{
"status": "success",
"message": "Successfully created 3 tickets",
"tickets": [
{
"id": "ticket-801",
"name": "Update user profile page",
"type": "task",
"status": "open"
},
{
"id": "ticket-802",
"name": "Add email notifications",
"type": "feature",
"status": "open"
},
{
"id": "ticket-803",
"name": "Fix memory leak in API",
"type": "bug",
"status": "open"
}
]
}

ticketing_update_ticket

Update an existing ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • name (string, optional): New ticket name
  • description (string, optional): New description
  • status (string, optional): New status (open, closed, in_progress, resolved)
  • priority (string, optional): New priority (low, medium, high, critical)
  • type (string, optional): New type
  • assignee_ids (array[string], optional): Updated assignee IDs
  • labels (array[string], optional): Updated labels
  • due_date (string, optional): Updated due date
  • metadata (object, optional): Updated metadata

Returns: Updated ticket information

Example Response:

{
"status": "success",
"message": "Ticket updated successfully",
"ticket": {
"id": "ticket-123",
"name": "Implement user authentication",
"status": "resolved",
"priority": "high",
"changeLog": {
"lastUpdatedDateTime": "2024-09-15T12:00:00Z"
}
}
}

Link two tickets together

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • source_ticket_id (string, required): The ID of the source ticket
  • target_ticket_id (string, required): The ID of the target ticket
  • link_type (string, required): The type of relationship (Valid values: blocks, is_blocked_by, relates_to, duplicates, is_duplicated_by, causes, is_caused_by, clones, is_cloned_by, parent, child)
  • comment (string, optional): Optional comment about the link

Returns: Link creation confirmation

Example Response:

{
"status": "success",
"message": "Successfully linked tickets",
"link": {
"sourceTicketId": "ticket-123",
"targetTicketId": "ticket-456",
"linkType": "blocks",
"comment": "This ticket must be completed first",
"createdDateTime": "2024-09-15T13:00:00Z"
}
}

Comment Management Tools

ticketing_list_comments

List all comments for a ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket

Returns: List of comments

Example Response:

{
"status": "success",
"message": "Comments retrieved successfully",
"comments": [
{
"id": "comment-123",
"content": "This feature is working as expected after the latest deployment",
"author": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@company.com"
},
"isInternal": false,
"mentions": [],
"changeLog": {
"createdDateTime": "2024-09-12T14:30:00Z",
"lastUpdatedDateTime": "2024-09-12T14:35:00Z"
}
}
],
"pagination": {
"total": 12,
"offset": 0,
"limit": 20
}
}

ticketing_get_comment

Get detailed information about a specific comment

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • comment_id (string, required): Unique identifier of the comment

Returns: Comprehensive comment information

Example Response:

{
"status": "success",
"message": "Comment retrieved successfully",
"comment": {
"id": "comment-123",
"content": "This feature is working as expected after the latest deployment",
"author": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@company.com"
},
"isInternal": false,
"mentions": [
{
"id": "user-456",
"firstName": "Jane",
"lastName": "Smith"
}
],
"attachments": [],
"changeLog": {
"createdDateTime": "2024-09-12T14:30:00Z",
"lastUpdatedDateTime": "2024-09-12T14:35:00Z"
}
}
}

ticketing_create_comment

Create a new comment on a ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • content (string, required): The text content of the comment
  • author_id (string, optional): ID of the user creating the comment
  • is_internal (boolean, optional): Whether this comment is internal (default: false)
  • mentions (array[string], optional): IDs of users mentioned in the comment
  • attachment_ids (array[string], optional): IDs of attachments associated with the comment

Returns: Created comment information

Example Response:

{
"status": "success",
"message": "Comment created successfully",
"comment": {
"id": "comment-789",
"content": "Looks good! Ready to deploy to production.",
"author": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
},
"isInternal": false,
"changeLog": {
"createdDateTime": "2024-09-15T13:00:00Z"
}
}
}

Attachment Management Tools

ticketing_list_attachments

List all attachments for a ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket

Returns: List of attachments

Example Response:

{
"status": "success",
"message": "Attachments retrieved successfully",
"attachments": [
{
"id": "attachment-123",
"fileName": "screenshot.png",
"fileSize": 245760,
"mimeType": "image/png",
"description": "Screenshot of the bug",
"downloadUrl": "https://example.com/attachments/attachment-123",
"uploadedBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
},
"isPublic": true,
"changeLog": {
"createdDateTime": "2024-09-10T10:00:00Z"
}
}
],
"pagination": {
"total": 3,
"offset": 0,
"limit": 20
}
}

ticketing_get_attachment

Get detailed information about a specific attachment

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • attachment_id (string, required): Unique identifier of the attachment

Returns: Comprehensive attachment information

Example Response:

{
"status": "success",
"message": "Attachment retrieved successfully",
"attachment": {
"id": "attachment-123",
"fileName": "screenshot.png",
"fileSize": 245760,
"mimeType": "image/png",
"description": "Screenshot of the bug on mobile",
"downloadUrl": "https://example.com/attachments/attachment-123",
"uploadedBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@company.com"
},
"isPublic": true,
"changeLog": {
"createdDateTime": "2024-09-10T10:00:00Z",
"lastUpdatedDateTime": "2024-09-10T10:05:00Z"
}
}
}

ticketing_create_attachment

Upload a new attachment to a ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • file_data (bytes, required): Binary file data
  • file_name (string, required): Name of the file
  • mime_type (string, required): MIME type of the file
  • description (string, optional): Description of the attachment

Returns: Created attachment information

Example Response:

{
"status": "success",
"message": "Attachment created successfully",
"attachment": {
"id": "attachment-456",
"fileName": "error-log.txt",
"fileSize": 12800,
"mimeType": "text/plain",
"description": "Error logs from production server",
"downloadUrl": "https://example.com/attachments/attachment-456",
"isPublic": true,
"changeLog": {
"createdDateTime": "2024-09-15T14:00:00Z"
}
}
}

Label Management Tools

ticketing_list_labels

List all labels for a ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • offset (integer, optional): Number of items to skip (default: 0)
  • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
  • sort (string, optional): Sort criteria (e.g., 'name,-usageCount')

Returns: Paginated list of labels

Example Response:

{
"status": "success",
"message": "Labels retrieved successfully",
"labels": [
{
"id": "label-123",
"name": "bug",
"description": "Software bugs and defects",
"color": "#d73a4a",
"category": "type",
"usageCount": 45,
"changeLog": {
"createdDateTime": "2024-01-15T08:00:00Z",
"lastUpdatedDateTime": "2024-09-01T12:00:00Z"
}
}
],
"pagination": {
"total": 8,
"offset": 0,
"limit": 20
}
}

ticketing_create_label

Create a new label on a ticket

Parameters:

  • integration_id (string, required): Unique identifier for the integration (UUID format)
  • organization_id (string, required): Unique identifier of the organization
  • collection_id (string, required): Unique identifier of the collection
  • ticket_id (string, required): Unique identifier of the ticket
  • name (string, required): Name of the label
  • description (string, optional): Description of what the label represents
  • color (string, optional): Hex color code (e.g., "#ff0000")
  • category (string, optional): Category grouping for the label

Returns: Created label information

Example Response:

{
"status": "success",
"message": "Label created successfully",
"label": {
"id": "label-456",
"name": "urgent",
"description": "Requires immediate attention",
"color": "#ff0000",
"category": "priority",
"usageCount": 1,
"changeLog": {
"createdDateTime": "2024-09-15T15:00:00Z"
}
}
}