Add Ticket Reply
whmcs_add_ticket_replyReply to a support ticket by specifying ticket ID and message, with optional parameters like client ID, status, and admin username.
Instructions
Reply to an existing support ticket
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ticketid | Yes | Ticket ID | |
| message | Yes | Reply message | |
| clientid | No | Client ID | |
| contactid | No | Contact ID | |
| name | No | Name | |
| No | |||
| adminusername | No | Admin username | |
| status | No | New ticket status | |
| noemail | No | Do not send email | |
| markdown | No | Message contains markdown |
Implementation Reference
- src/index.ts:482-506 (registration)Tool registration for 'whmcs_add_ticket_reply' - registers the tool with MCP server including input schema (ticketid, message, clientid, contactid, name, email, adminusername, status, noemail, markdown) and the handler that calls whmcsClient.addTicketReply()
server.registerTool( 'whmcs_add_ticket_reply', { title: 'Add Ticket Reply', description: 'Reply to an existing support ticket', inputSchema: { ticketid: z.number().describe('Ticket ID'), message: z.string().describe('Reply message'), clientid: z.number().optional().describe('Client ID'), contactid: z.number().optional().describe('Contact ID'), name: z.string().optional().describe('Name'), email: z.string().optional().describe('Email'), adminusername: z.string().optional().describe('Admin username'), status: z.string().optional().describe('New ticket status'), noemail: z.boolean().optional().describe('Do not send email'), markdown: z.boolean().optional().describe('Message contains markdown'), }, }, async (params) => { const result = await whmcsClient.addTicketReply(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } ); - src/index.ts:500-506 (handler)Handler function (inline async callback) that calls whmcsClient.addTicketReply(params) and returns the JSON-stringified result
async (params) => { const result = await whmcsClient.addTicketReply(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } ); - src/index.ts:487-499 (schema)Input schema for addTicketReply using Zod validation - defines ticketid (required number), message (required string), and optional fields: clientid, contactid, name, email, adminusername, status, noemail, markdown
inputSchema: { ticketid: z.number().describe('Ticket ID'), message: z.string().describe('Reply message'), clientid: z.number().optional().describe('Client ID'), contactid: z.number().optional().describe('Contact ID'), name: z.string().optional().describe('Name'), email: z.string().optional().describe('Email'), adminusername: z.string().optional().describe('Admin username'), status: z.string().optional().describe('New ticket status'), noemail: z.boolean().optional().describe('Do not send email'), markdown: z.boolean().optional().describe('Message contains markdown'), }, }, - src/whmcs-client.ts:727-745 (helper)addTicketReply method on WhmcsApiClient - the actual API client method that makes the WHMCS API call with action 'AddTicketReply', passing ticketid, message, and optional parameters
/** * Reply to a ticket */ async addTicketReply(params: { ticketid: number; message: string; clientid?: number; contactid?: number; name?: string; email?: string; adminusername?: string; status?: string; noemail?: boolean; customfields?: string; attachments?: Array<{ name: string; data: string }>; markdown?: boolean; }) { return this.call<WhmcsApiResponse>('AddTicketReply', params); }