optional MIME type, e.g. "image/png" (empty = unset)
optional size strings, e.g. ["48x48", "96x96"]
URI or data: URL of the icon (required)
optional theme preference: "light" or "dark" (empty = unset)
@tool("draw", "Draw something") @icon("https://example.com/draw.png", "image/png", ["48x48"], "dark") string draw(string spec) { ... }
UDA declaring a display icon for a @tool, @resource, or @resourceTemplate-annotated method (the MCP Icons mixin: Tool.icons, Resource.icons). Attach one or more @icon UDAs to the same method; each becomes an entry in the descriptor's icons array. src is required; mimeType, sizes, and theme are optional.