create_macro
Create automated macros in Zendesk Support to streamline ticket management by defining reusable actions for common customer service workflows.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Macro title | |
| description | No | Macro description | |
| actions | Yes | Actions to perform when macro is applied |
Implementation Reference
- src/tools/macros.js:64-85 (handler)The primary handler function for the 'create_macro' MCP tool. Validates inputs via schema, constructs macro data, calls the Zendesk client to create the macro, and returns formatted success or error response.handler: async ({ title, description, actions }) => { try { const macroData = { title, description, actions }; const result = await zendeskClient.createMacro(macroData); return { content: [{ type: "text", text: `Macro created successfully!\n\n${JSON.stringify(result, null, 2)}` }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating macro: ${error.message}` }], isError: true }; } }
- src/tools/macros.js:56-63 (schema)Zod input schema for the 'create_macro' tool defining required title, optional description, and actions array.schema: { title: z.string().describe("Macro title"), description: z.string().optional().describe("Macro description"), actions: z.array(z.object({ field: z.string().describe("Field to modify"), value: z.any().describe("Value to set") })).describe("Actions to perform when macro is applied") },
- src/tools/macros.js:53-85 (registration)The complete tool definition object for 'create_macro' within the exported macrosTools array, which is later imported and registered in server.js.{ name: "create_macro", description: "Create a new macro", schema: { title: z.string().describe("Macro title"), description: z.string().optional().describe("Macro description"), actions: z.array(z.object({ field: z.string().describe("Field to modify"), value: z.any().describe("Value to set") })).describe("Actions to perform when macro is applied") }, handler: async ({ title, description, actions }) => { try { const macroData = { title, description, actions }; const result = await zendeskClient.createMacro(macroData); return { content: [{ type: "text", text: `Macro created successfully!\n\n${JSON.stringify(result, null, 2)}` }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating macro: ${error.message}` }], isError: true }; } }
- src/zendesk-client.js:174-176 (helper)Supporting method in ZendeskClient class that sends POST request to Zendesk API /macros.json endpoint to create the macro.async createMacro(data) { return this.request("POST", "/macros.json", { macro: data }); }
- src/server.js:48-52 (registration)The registration loop in the main server file that dynamically registers all tools from various modules, including the 'create_macro' tool from macrosTools.allTools.forEach((tool) => { server.tool(tool.name, tool.schema, tool.handler, { description: tool.description, }); });