create_ticket
Create a new support ticket in Autotask to track issues, assign resources, and manage client requests with required company details, title, and description.
Instructions
Create a new ticket in Autotask
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| companyID | Yes | Company ID for the ticket | |
| title | Yes | Ticket title | |
| description | Yes | Ticket description | |
| status | No | Ticket status ID | |
| priority | No | Ticket priority ID | |
| assignedResourceID | No | Assigned resource ID | |
| contactID | No | Contact ID for the ticket |
Implementation Reference
- src/services/autotask.service.ts:562-575 (handler)Core implementation of ticket creation using AutotaskClient.tickets.create() API call.async createTicket(ticket: Partial<AutotaskTicket>): Promise<number> { const client = await this.ensureClient(); try { this.logger.debug('Creating ticket:', ticket); const result = await client.tickets.create(ticket as any); const ticketId = (result.data as any)?.id; this.logger.info(`Ticket created with ID: ${ticketId}`); return ticketId; } catch (error) { this.logger.error('Failed to create ticket:', error); throw error; } }
- src/handlers/tool.handler.ts:1117-1120 (handler)MCP tool handler dispatches 'create_ticket' calls to AutotaskService.createTicket() with success message formatting.case 'create_ticket': result = await this.autotaskService.createTicket(args); message = `Successfully created ticket with ID: ${result}`; break;
- src/handlers/tool.handler.ts:286-323 (schema)JSON schema defining input parameters, descriptions, and required fields for the create_ticket tool.{ name: 'create_ticket', description: 'Create a new ticket in Autotask', inputSchema: { type: 'object', properties: { companyID: { type: 'number', description: 'Company ID for the ticket' }, title: { type: 'string', description: 'Ticket title' }, description: { type: 'string', description: 'Ticket description' }, status: { type: 'number', description: 'Ticket status ID' }, priority: { type: 'number', description: 'Ticket priority ID' }, assignedResourceID: { type: 'number', description: 'Assigned resource ID' }, contactID: { type: 'number', description: 'Contact ID for the ticket' } }, required: ['companyID', 'title', 'description'] } },
- src/mcp/server.ts:98-110 (registration)Registers MCP ListToolsRequest handler that calls toolHandler.listTools(), exposing create_ticket schema.this.server.setRequestHandler(ListToolsRequestSchema, async () => { try { this.logger.debug('Handling list tools request'); const tools = await this.toolHandler.listTools(); return { tools }; } catch (error) { this.logger.error('Failed to list tools:', error); throw new McpError( ErrorCode.InternalError, `Failed to list tools: ${error instanceof Error ? error.message : 'Unknown error'}` ); } });
- src/mcp/server.ts:113-131 (registration)Registers MCP CallToolRequest handler that delegates tool execution to toolHandler.callTool(name, args), enabling create_ticket execution.this.server.setRequestHandler(CallToolRequestSchema, async (request) => { try { this.logger.debug(`Handling tool call: ${request.params.name}`); const result = await this.toolHandler.callTool( request.params.name, request.params.arguments || {} ); return { content: result.content, isError: result.isError }; } catch (error) { this.logger.error(`Failed to call tool ${request.params.name}:`, error); throw new McpError( ErrorCode.InternalError, `Failed to call tool: ${error instanceof Error ? error.message : 'Unknown error'}` ); } });