Prompts achieve their power through arguments. Just like tools, you can use Zod to define what inputs a prompt requires.
server.prompt(
"generate_report",
{
department: z.string().describe("e.g. Sales, Marketing"),
quarter: z.string().describe("e.g. Q1-2026")
},
({ department, quarter }) => ({
// Build context tailored to the department and quarter...
})
);
When the user selects "Generate Report" in Claude Desktop, the UI will prompt them to type in the Department and Quarter before creating the message block.