import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { Color, Icon } from "@yaakapp/api"; import * as z from "zod"; import type { McpServerContext } from "../types.js"; const ICON_VALUES = [ "alert_triangle", "check", "check_circle", "chevron_down", "copy", "info", "pin", "search", "trash", ] as const satisfies readonly Icon[]; const COLOR_VALUES = [ "primary", "secondary", "info", "success", "notice", "warning", "danger", ] as const satisfies readonly Color[]; export function registerToastTools(server: McpServer, ctx: McpServerContext) { server.registerTool( "show_toast", { title: "Show Toast", description: "Show a toast notification in Yaak", inputSchema: { message: z.string().describe("The message to display"), icon: z.enum(ICON_VALUES).optional().describe("Icon name"), color: z.enum(COLOR_VALUES).optional().describe("Toast color"), timeout: z.number().optional().describe("Timeout in milliseconds"), }, }, async ({ message, icon, color, timeout }) => { await ctx.yaak.toast.show({ message, icon, color, timeout, }); return { content: [ { type: "text" as const, text: `✓ Toast shown: "${message}"`, }, ], }; }, ); }