{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://modelcontextprotocol.io/ext-apps/schema.json", "title": "MCP Apps Protocol", "description": "JSON Schema for MCP Apps UI protocol messages", "$defs": { "McpUiAppCapabilities": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "experimental": { "description": "Experimental features (structure TBD).", "type": "object", "properties": {}, "additionalProperties": false }, "tools": { "description": "App exposes MCP-style tools that the host can call.", "type": "object", "properties": { "listChanged": { "description": "App supports tools/list_changed notifications.", "type": "boolean" } }, "additionalProperties": false } }, "additionalProperties": false }, "McpUiDisplayMode": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "string", "const": "inline" }, { "type": "string", "const": "fullscreen" }, { "type": "string", "const": "pip" } ], "description": "Display mode for UI presentation." }, "McpUiHostCapabilities": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "experimental": { "description": "Experimental features (structure TBD).", "type": "object", "properties": {}, "additionalProperties": false }, "openLinks": { "description": "Host supports opening external URLs.", "type": "object", "properties": {}, "additionalProperties": false }, "serverTools": { "description": "Host can proxy tool calls to the MCP server.", "type": "object", "properties": { "listChanged": { "description": "Host supports tools/list_changed notifications.", "type": "boolean" } }, "additionalProperties": false }, "serverResources": { "description": "Host can proxy resource reads to the MCP server.", "type": "object", "properties": { "listChanged": { "description": "Host supports resources/list_changed notifications.", "type": "boolean" } }, "additionalProperties": false }, "logging": { "description": "Host accepts log messages.", "type": "object", "properties": {}, "additionalProperties": false }, "sandbox": { "description": "Sandbox configuration applied by the host.", "type": "object", "properties": { "permissions": { "description": "Permissions granted by the host (camera, microphone, geolocation).", "type": "object", "properties": { "camera": { "description": "Request camera access (Permission Policy `camera` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "microphone": { "description": "Request microphone access (Permission Policy `microphone` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "geolocation": { "description": "Request geolocation access (Permission Policy `geolocation` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "clipboardWrite": { "description": "Request clipboard write access (Permission Policy `clipboard-write` feature).", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "csp": { "description": "CSP domains approved by the host.", "type": "object", "properties": { "connectDomains": { "description": "Origins for network requests (fetch/XHR/WebSocket).", "type": "array", "items": { "type": "string" } }, "resourceDomains": { "description": "Origins for static resources (scripts, images, styles, fonts).", "type": "array", "items": { "type": "string" } }, "frameDomains": { "description": "Origins for nested iframes (frame-src directive).", "type": "array", "items": { "type": "string" } }, "baseUriDomains": { "description": "Allowed base URIs for the document (base-uri directive).", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } }, "additionalProperties": false }, "updateModelContext": { "description": "Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.", "type": "object", "properties": { "text": { "description": "Host supports text content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "image": { "description": "Host supports image content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "audio": { "description": "Host supports audio content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resource": { "description": "Host supports resource content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resourceLink": { "description": "Host supports resource link content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "structuredContent": { "description": "Host supports structured content.", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "message": { "description": "Host supports receiving content messages (ui/message) from the Guest UI.", "type": "object", "properties": { "text": { "description": "Host supports text content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "image": { "description": "Host supports image content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "audio": { "description": "Host supports audio content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resource": { "description": "Host supports resource content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resourceLink": { "description": "Host supports resource link content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "structuredContent": { "description": "Host supports structured content.", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false }, "McpUiHostContextChangedNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/host-context-changed" }, "params": { "type": "object", "properties": { "toolInfo": { "description": "Metadata of the tool call that instantiated this App.", "type": "object", "properties": { "id": { "description": "JSON-RPC id of the tools/call request.", "anyOf": [ { "type": "string" }, { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } ] }, "tool": { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "description": { "type": "string" }, "inputSchema": { "type": "object", "properties": { "type": { "type": "string", "const": "object" }, "properties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["type"], "additionalProperties": {} }, "outputSchema": { "type": "object", "properties": { "type": { "type": "string", "const": "object" }, "properties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["type"], "additionalProperties": {} }, "annotations": { "type": "object", "properties": { "title": { "type": "string" }, "readOnlyHint": { "type": "boolean" }, "destructiveHint": { "type": "boolean" }, "idempotentHint": { "type": "boolean" }, "openWorldHint": { "type": "boolean" } }, "additionalProperties": false }, "execution": { "type": "object", "properties": { "taskSupport": { "type": "string", "enum": ["required", "optional", "forbidden"] } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["name", "inputSchema"], "additionalProperties": false, "description": "Tool definition including name, inputSchema, etc." } }, "required": ["tool"], "additionalProperties": false }, "theme": { "description": "Current color theme preference.", "anyOf": [ { "type": "string", "const": "light" }, { "type": "string", "const": "dark" } ] }, "styles": { "description": "Style configuration for theming the app.", "type": "object", "properties": { "variables": { "description": "CSS variables for theming the app.", "type": "object", "propertyNames": { "anyOf": [ { "type": "string", "const": "--color-background-primary" }, { "type": "string", "const": "--color-background-secondary" }, { "type": "string", "const": "--color-background-tertiary" }, { "type": "string", "const": "--color-background-inverse" }, { "type": "string", "const": "--color-background-ghost" }, { "type": "string", "const": "--color-background-info" }, { "type": "string", "const": "--color-background-danger" }, { "type": "string", "const": "--color-background-success" }, { "type": "string", "const": "--color-background-warning" }, { "type": "string", "const": "--color-background-disabled" }, { "type": "string", "const": "--color-text-primary" }, { "type": "string", "const": "--color-text-secondary" }, { "type": "string", "const": "--color-text-tertiary" }, { "type": "string", "const": "--color-text-inverse" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-text-info" }, { "type": "string", "const": "--color-text-danger" }, { "type": "string", "const": "--color-text-success" }, { "type": "string", "const": "--color-text-warning" }, { "type": "string", "const": "--color-text-disabled" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-border-primary" }, { "type": "string", "const": "--color-border-secondary" }, { "type": "string", "const": "--color-border-tertiary" }, { "type": "string", "const": "--color-border-inverse" }, { "type": "string", "const": "--color-border-ghost" }, { "type": "string", "const": "--color-border-info" }, { "type": "string", "const": "--color-border-danger" }, { "type": "string", "const": "--color-border-success" }, { "type": "string", "const": "--color-border-warning" }, { "type": "string", "const": "--color-border-disabled" }, { "type": "string", "const": "--color-ring-primary" }, { "type": "string", "const": "--color-ring-secondary" }, { "type": "string", "const": "--color-ring-inverse" }, { "type": "string", "const": "--color-ring-info" }, { "type": "string", "const": "--color-ring-danger" }, { "type": "string", "const": "--color-ring-success" }, { "type": "string", "const": "--color-ring-warning" }, { "type": "string", "const": "--font-sans" }, { "type": "string", "const": "--font-mono" }, { "type": "string", "const": "--font-weight-normal" }, { "type": "string", "const": "--font-weight-medium" }, { "type": "string", "const": "--font-weight-semibold" }, { "type": "string", "const": "--font-weight-bold" }, { "type": "string", "const": "--font-text-xs-size" }, { "type": "string", "const": "--font-text-sm-size" }, { "type": "string", "const": "--font-text-md-size" }, { "type": "string", "const": "--font-text-lg-size" }, { "type": "string", "const": "--font-heading-xs-size" }, { "type": "string", "const": "--font-heading-sm-size" }, { "type": "string", "const": "--font-heading-md-size" }, { "type": "string", "const": "--font-heading-lg-size" }, { "type": "string", "const": "--font-heading-xl-size" }, { "type": "string", "const": "--font-heading-2xl-size" }, { "type": "string", "const": "--font-heading-3xl-size" }, { "type": "string", "const": "--font-text-xs-line-height" }, { "type": "string", "const": "--font-text-sm-line-height" }, { "type": "string", "const": "--font-text-md-line-height" }, { "type": "string", "const": "--font-text-lg-line-height" }, { "type": "string", "const": "--font-heading-xs-line-height" }, { "type": "string", "const": "--font-heading-sm-line-height" }, { "type": "string", "const": "--font-heading-md-line-height" }, { "type": "string", "const": "--font-heading-lg-line-height" }, { "type": "string", "const": "--font-heading-xl-line-height" }, { "type": "string", "const": "--font-heading-2xl-line-height" }, { "type": "string", "const": "--font-heading-3xl-line-height" }, { "type": "string", "const": "--border-radius-xs" }, { "type": "string", "const": "--border-radius-sm" }, { "type": "string", "const": "--border-radius-md" }, { "type": "string", "const": "--border-radius-lg" }, { "type": "string", "const": "--border-radius-xl" }, { "type": "string", "const": "--border-radius-full" }, { "type": "string", "const": "--border-width-regular" }, { "type": "string", "const": "--shadow-hairline" }, { "type": "string", "const": "--shadow-sm" }, { "type": "string", "const": "--shadow-md" }, { "type": "string", "const": "--shadow-lg" } ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "additionalProperties": { "anyOf": [ { "type": "string" }, {} ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "required": [ "--color-background-primary", "--color-background-secondary", "--color-background-tertiary", "--color-background-inverse", "--color-background-ghost", "--color-background-info", "--color-background-danger", "--color-background-success", "--color-background-warning", "--color-background-disabled", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-text-inverse", "--color-text-ghost", "--color-text-info", "--color-text-danger", "--color-text-success", "--color-text-warning", "--color-text-disabled", "--color-border-primary", "--color-border-secondary", "--color-border-tertiary", "--color-border-inverse", "--color-border-ghost", "--color-border-info", "--color-border-danger", "--color-border-success", "--color-border-warning", "--color-border-disabled", "--color-ring-primary", "--color-ring-secondary", "--color-ring-inverse", "--color-ring-info", "--color-ring-danger", "--color-ring-success", "--color-ring-warning", "--font-sans", "--font-mono", "--font-weight-normal", "--font-weight-medium", "--font-weight-semibold", "--font-weight-bold", "--font-text-xs-size", "--font-text-sm-size", "--font-text-md-size", "--font-text-lg-size", "--font-heading-xs-size", "--font-heading-sm-size", "--font-heading-md-size", "--font-heading-lg-size", "--font-heading-xl-size", "--font-heading-2xl-size", "--font-heading-3xl-size", "--font-text-xs-line-height", "--font-text-sm-line-height", "--font-text-md-line-height", "--font-text-lg-line-height", "--font-heading-xs-line-height", "--font-heading-sm-line-height", "--font-heading-md-line-height", "--font-heading-lg-line-height", "--font-heading-xl-line-height", "--font-heading-2xl-line-height", "--font-heading-3xl-line-height", "--border-radius-xs", "--border-radius-sm", "--border-radius-md", "--border-radius-lg", "--border-radius-xl", "--border-radius-full", "--border-width-regular", "--shadow-hairline", "--shadow-sm", "--shadow-md", "--shadow-lg" ] }, "css": { "description": "CSS blocks that apps can inject.", "type": "object", "properties": { "fonts": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "displayMode": { "description": "How the UI is currently displayed.", "anyOf": [ { "type": "string", "const": "inline" }, { "type": "string", "const": "fullscreen" }, { "type": "string", "const": "pip" } ] }, "availableDisplayModes": { "description": "Display modes the host supports.", "type": "array", "items": { "type": "string" } }, "containerDimensions": { "description": "Container dimensions. Represents the dimensions of the iframe or other\ncontainer holding the app. Specify either width or maxWidth, and either height or maxHeight.", "allOf": [ { "anyOf": [ { "type": "object", "properties": { "height": { "type": "number", "description": "Fixed container height in pixels." } }, "required": ["height"], "additionalProperties": false }, { "type": "object", "properties": { "maxHeight": { "description": "Maximum container height in pixels.", "anyOf": [ { "type": "number" }, {} ] } }, "additionalProperties": false } ] }, { "anyOf": [ { "type": "object", "properties": { "width": { "type": "number", "description": "Fixed container width in pixels." } }, "required": ["width"], "additionalProperties": false }, { "type": "object", "properties": { "maxWidth": { "description": "Maximum container width in pixels.", "anyOf": [ { "type": "number" }, {} ] } }, "additionalProperties": false } ] } ] }, "locale": { "description": "User's language and region preference in BCP 47 format.", "type": "string" }, "timeZone": { "description": "User's timezone in IANA format.", "type": "string" }, "userAgent": { "description": "Host application identifier.", "type": "string" }, "platform": { "description": "Platform type for responsive design decisions.", "anyOf": [ { "type": "string", "const": "web" }, { "type": "string", "const": "desktop" }, { "type": "string", "const": "mobile" } ] }, "deviceCapabilities": { "description": "Device input capabilities.", "type": "object", "properties": { "touch": { "description": "Whether the device supports touch input.", "type": "boolean" }, "hover": { "description": "Whether the device supports hover interactions.", "type": "boolean" } }, "additionalProperties": false }, "safeAreaInsets": { "description": "Mobile safe area boundaries in pixels.", "type": "object", "properties": { "top": { "type": "number", "description": "Top safe area inset in pixels." }, "right": { "type": "number", "description": "Right safe area inset in pixels." }, "bottom": { "type": "number", "description": "Bottom safe area inset in pixels." }, "left": { "type": "number", "description": "Left safe area inset in pixels." } }, "required": ["top", "right", "bottom", "left"], "additionalProperties": false } }, "additionalProperties": {}, "description": "Partial context update containing only changed fields." } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiHostContext": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "toolInfo": { "description": "Metadata of the tool call that instantiated this App.", "type": "object", "properties": { "id": { "description": "JSON-RPC id of the tools/call request.", "anyOf": [ { "type": "string" }, { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } ] }, "tool": { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "description": { "type": "string" }, "inputSchema": { "type": "object", "properties": { "type": { "type": "string", "const": "object" }, "properties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["type"], "additionalProperties": {} }, "outputSchema": { "type": "object", "properties": { "type": { "type": "string", "const": "object" }, "properties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["type"], "additionalProperties": {} }, "annotations": { "type": "object", "properties": { "title": { "type": "string" }, "readOnlyHint": { "type": "boolean" }, "destructiveHint": { "type": "boolean" }, "idempotentHint": { "type": "boolean" }, "openWorldHint": { "type": "boolean" } }, "additionalProperties": false }, "execution": { "type": "object", "properties": { "taskSupport": { "type": "string", "enum": ["required", "optional", "forbidden"] } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["name", "inputSchema"], "additionalProperties": false, "description": "Tool definition including name, inputSchema, etc." } }, "required": ["tool"], "additionalProperties": false }, "theme": { "description": "Current color theme preference.", "anyOf": [ { "type": "string", "const": "light" }, { "type": "string", "const": "dark" } ] }, "styles": { "description": "Style configuration for theming the app.", "type": "object", "properties": { "variables": { "description": "CSS variables for theming the app.", "type": "object", "propertyNames": { "anyOf": [ { "type": "string", "const": "--color-background-primary" }, { "type": "string", "const": "--color-background-secondary" }, { "type": "string", "const": "--color-background-tertiary" }, { "type": "string", "const": "--color-background-inverse" }, { "type": "string", "const": "--color-background-ghost" }, { "type": "string", "const": "--color-background-info" }, { "type": "string", "const": "--color-background-danger" }, { "type": "string", "const": "--color-background-success" }, { "type": "string", "const": "--color-background-warning" }, { "type": "string", "const": "--color-background-disabled" }, { "type": "string", "const": "--color-text-primary" }, { "type": "string", "const": "--color-text-secondary" }, { "type": "string", "const": "--color-text-tertiary" }, { "type": "string", "const": "--color-text-inverse" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-text-info" }, { "type": "string", "const": "--color-text-danger" }, { "type": "string", "const": "--color-text-success" }, { "type": "string", "const": "--color-text-warning" }, { "type": "string", "const": "--color-text-disabled" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-border-primary" }, { "type": "string", "const": "--color-border-secondary" }, { "type": "string", "const": "--color-border-tertiary" }, { "type": "string", "const": "--color-border-inverse" }, { "type": "string", "const": "--color-border-ghost" }, { "type": "string", "const": "--color-border-info" }, { "type": "string", "const": "--color-border-danger" }, { "type": "string", "const": "--color-border-success" }, { "type": "string", "const": "--color-border-warning" }, { "type": "string", "const": "--color-border-disabled" }, { "type": "string", "const": "--color-ring-primary" }, { "type": "string", "const": "--color-ring-secondary" }, { "type": "string", "const": "--color-ring-inverse" }, { "type": "string", "const": "--color-ring-info" }, { "type": "string", "const": "--color-ring-danger" }, { "type": "string", "const": "--color-ring-success" }, { "type": "string", "const": "--color-ring-warning" }, { "type": "string", "const": "--font-sans" }, { "type": "string", "const": "--font-mono" }, { "type": "string", "const": "--font-weight-normal" }, { "type": "string", "const": "--font-weight-medium" }, { "type": "string", "const": "--font-weight-semibold" }, { "type": "string", "const": "--font-weight-bold" }, { "type": "string", "const": "--font-text-xs-size" }, { "type": "string", "const": "--font-text-sm-size" }, { "type": "string", "const": "--font-text-md-size" }, { "type": "string", "const": "--font-text-lg-size" }, { "type": "string", "const": "--font-heading-xs-size" }, { "type": "string", "const": "--font-heading-sm-size" }, { "type": "string", "const": "--font-heading-md-size" }, { "type": "string", "const": "--font-heading-lg-size" }, { "type": "string", "const": "--font-heading-xl-size" }, { "type": "string", "const": "--font-heading-2xl-size" }, { "type": "string", "const": "--font-heading-3xl-size" }, { "type": "string", "const": "--font-text-xs-line-height" }, { "type": "string", "const": "--font-text-sm-line-height" }, { "type": "string", "const": "--font-text-md-line-height" }, { "type": "string", "const": "--font-text-lg-line-height" }, { "type": "string", "const": "--font-heading-xs-line-height" }, { "type": "string", "const": "--font-heading-sm-line-height" }, { "type": "string", "const": "--font-heading-md-line-height" }, { "type": "string", "const": "--font-heading-lg-line-height" }, { "type": "string", "const": "--font-heading-xl-line-height" }, { "type": "string", "const": "--font-heading-2xl-line-height" }, { "type": "string", "const": "--font-heading-3xl-line-height" }, { "type": "string", "const": "--border-radius-xs" }, { "type": "string", "const": "--border-radius-sm" }, { "type": "string", "const": "--border-radius-md" }, { "type": "string", "const": "--border-radius-lg" }, { "type": "string", "const": "--border-radius-xl" }, { "type": "string", "const": "--border-radius-full" }, { "type": "string", "const": "--border-width-regular" }, { "type": "string", "const": "--shadow-hairline" }, { "type": "string", "const": "--shadow-sm" }, { "type": "string", "const": "--shadow-md" }, { "type": "string", "const": "--shadow-lg" } ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "additionalProperties": { "anyOf": [ { "type": "string" }, {} ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "required": [ "--color-background-primary", "--color-background-secondary", "--color-background-tertiary", "--color-background-inverse", "--color-background-ghost", "--color-background-info", "--color-background-danger", "--color-background-success", "--color-background-warning", "--color-background-disabled", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-text-inverse", "--color-text-ghost", "--color-text-info", "--color-text-danger", "--color-text-success", "--color-text-warning", "--color-text-disabled", "--color-border-primary", "--color-border-secondary", "--color-border-tertiary", "--color-border-inverse", "--color-border-ghost", "--color-border-info", "--color-border-danger", "--color-border-success", "--color-border-warning", "--color-border-disabled", "--color-ring-primary", "--color-ring-secondary", "--color-ring-inverse", "--color-ring-info", "--color-ring-danger", "--color-ring-success", "--color-ring-warning", "--font-sans", "--font-mono", "--font-weight-normal", "--font-weight-medium", "--font-weight-semibold", "--font-weight-bold", "--font-text-xs-size", "--font-text-sm-size", "--font-text-md-size", "--font-text-lg-size", "--font-heading-xs-size", "--font-heading-sm-size", "--font-heading-md-size", "--font-heading-lg-size", "--font-heading-xl-size", "--font-heading-2xl-size", "--font-heading-3xl-size", "--font-text-xs-line-height", "--font-text-sm-line-height", "--font-text-md-line-height", "--font-text-lg-line-height", "--font-heading-xs-line-height", "--font-heading-sm-line-height", "--font-heading-md-line-height", "--font-heading-lg-line-height", "--font-heading-xl-line-height", "--font-heading-2xl-line-height", "--font-heading-3xl-line-height", "--border-radius-xs", "--border-radius-sm", "--border-radius-md", "--border-radius-lg", "--border-radius-xl", "--border-radius-full", "--border-width-regular", "--shadow-hairline", "--shadow-sm", "--shadow-md", "--shadow-lg" ] }, "css": { "description": "CSS blocks that apps can inject.", "type": "object", "properties": { "fonts": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "displayMode": { "description": "How the UI is currently displayed.", "anyOf": [ { "type": "string", "const": "inline" }, { "type": "string", "const": "fullscreen" }, { "type": "string", "const": "pip" } ] }, "availableDisplayModes": { "description": "Display modes the host supports.", "type": "array", "items": { "type": "string" } }, "containerDimensions": { "description": "Container dimensions. Represents the dimensions of the iframe or other\ncontainer holding the app. Specify either width or maxWidth, and either height or maxHeight.", "allOf": [ { "anyOf": [ { "type": "object", "properties": { "height": { "type": "number", "description": "Fixed container height in pixels." } }, "required": ["height"], "additionalProperties": false }, { "type": "object", "properties": { "maxHeight": { "description": "Maximum container height in pixels.", "anyOf": [ { "type": "number" }, {} ] } }, "additionalProperties": false } ] }, { "anyOf": [ { "type": "object", "properties": { "width": { "type": "number", "description": "Fixed container width in pixels." } }, "required": ["width"], "additionalProperties": false }, { "type": "object", "properties": { "maxWidth": { "description": "Maximum container width in pixels.", "anyOf": [ { "type": "number" }, {} ] } }, "additionalProperties": false } ] } ] }, "locale": { "description": "User's language and region preference in BCP 47 format.", "type": "string" }, "timeZone": { "description": "User's timezone in IANA format.", "type": "string" }, "userAgent": { "description": "Host application identifier.", "type": "string" }, "platform": { "description": "Platform type for responsive design decisions.", "anyOf": [ { "type": "string", "const": "web" }, { "type": "string", "const": "desktop" }, { "type": "string", "const": "mobile" } ] }, "deviceCapabilities": { "description": "Device input capabilities.", "type": "object", "properties": { "touch": { "description": "Whether the device supports touch input.", "type": "boolean" }, "hover": { "description": "Whether the device supports hover interactions.", "type": "boolean" } }, "additionalProperties": false }, "safeAreaInsets": { "description": "Mobile safe area boundaries in pixels.", "type": "object", "properties": { "top": { "type": "number", "description": "Top safe area inset in pixels." }, "right": { "type": "number", "description": "Right safe area inset in pixels." }, "bottom": { "type": "number", "description": "Bottom safe area inset in pixels." }, "left": { "type": "number", "description": "Left safe area inset in pixels." } }, "required": ["top", "right", "bottom", "left"], "additionalProperties": false } }, "additionalProperties": {} }, "McpUiHostCss": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "fonts": { "type": "string" } }, "additionalProperties": false }, "McpUiHostStyles": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "variables": { "description": "CSS variables for theming the app.", "type": "object", "propertyNames": { "anyOf": [ { "type": "string", "const": "--color-background-primary" }, { "type": "string", "const": "--color-background-secondary" }, { "type": "string", "const": "--color-background-tertiary" }, { "type": "string", "const": "--color-background-inverse" }, { "type": "string", "const": "--color-background-ghost" }, { "type": "string", "const": "--color-background-info" }, { "type": "string", "const": "--color-background-danger" }, { "type": "string", "const": "--color-background-success" }, { "type": "string", "const": "--color-background-warning" }, { "type": "string", "const": "--color-background-disabled" }, { "type": "string", "const": "--color-text-primary" }, { "type": "string", "const": "--color-text-secondary" }, { "type": "string", "const": "--color-text-tertiary" }, { "type": "string", "const": "--color-text-inverse" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-text-info" }, { "type": "string", "const": "--color-text-danger" }, { "type": "string", "const": "--color-text-success" }, { "type": "string", "const": "--color-text-warning" }, { "type": "string", "const": "--color-text-disabled" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-border-primary" }, { "type": "string", "const": "--color-border-secondary" }, { "type": "string", "const": "--color-border-tertiary" }, { "type": "string", "const": "--color-border-inverse" }, { "type": "string", "const": "--color-border-ghost" }, { "type": "string", "const": "--color-border-info" }, { "type": "string", "const": "--color-border-danger" }, { "type": "string", "const": "--color-border-success" }, { "type": "string", "const": "--color-border-warning" }, { "type": "string", "const": "--color-border-disabled" }, { "type": "string", "const": "--color-ring-primary" }, { "type": "string", "const": "--color-ring-secondary" }, { "type": "string", "const": "--color-ring-inverse" }, { "type": "string", "const": "--color-ring-info" }, { "type": "string", "const": "--color-ring-danger" }, { "type": "string", "const": "--color-ring-success" }, { "type": "string", "const": "--color-ring-warning" }, { "type": "string", "const": "--font-sans" }, { "type": "string", "const": "--font-mono" }, { "type": "string", "const": "--font-weight-normal" }, { "type": "string", "const": "--font-weight-medium" }, { "type": "string", "const": "--font-weight-semibold" }, { "type": "string", "const": "--font-weight-bold" }, { "type": "string", "const": "--font-text-xs-size" }, { "type": "string", "const": "--font-text-sm-size" }, { "type": "string", "const": "--font-text-md-size" }, { "type": "string", "const": "--font-text-lg-size" }, { "type": "string", "const": "--font-heading-xs-size" }, { "type": "string", "const": "--font-heading-sm-size" }, { "type": "string", "const": "--font-heading-md-size" }, { "type": "string", "const": "--font-heading-lg-size" }, { "type": "string", "const": "--font-heading-xl-size" }, { "type": "string", "const": "--font-heading-2xl-size" }, { "type": "string", "const": "--font-heading-3xl-size" }, { "type": "string", "const": "--font-text-xs-line-height" }, { "type": "string", "const": "--font-text-sm-line-height" }, { "type": "string", "const": "--font-text-md-line-height" }, { "type": "string", "const": "--font-text-lg-line-height" }, { "type": "string", "const": "--font-heading-xs-line-height" }, { "type": "string", "const": "--font-heading-sm-line-height" }, { "type": "string", "const": "--font-heading-md-line-height" }, { "type": "string", "const": "--font-heading-lg-line-height" }, { "type": "string", "const": "--font-heading-xl-line-height" }, { "type": "string", "const": "--font-heading-2xl-line-height" }, { "type": "string", "const": "--font-heading-3xl-line-height" }, { "type": "string", "const": "--border-radius-xs" }, { "type": "string", "const": "--border-radius-sm" }, { "type": "string", "const": "--border-radius-md" }, { "type": "string", "const": "--border-radius-lg" }, { "type": "string", "const": "--border-radius-xl" }, { "type": "string", "const": "--border-radius-full" }, { "type": "string", "const": "--border-width-regular" }, { "type": "string", "const": "--shadow-hairline" }, { "type": "string", "const": "--shadow-sm" }, { "type": "string", "const": "--shadow-md" }, { "type": "string", "const": "--shadow-lg" } ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "additionalProperties": { "anyOf": [ { "type": "string" }, {} ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "required": [ "--color-background-primary", "--color-background-secondary", "--color-background-tertiary", "--color-background-inverse", "--color-background-ghost", "--color-background-info", "--color-background-danger", "--color-background-success", "--color-background-warning", "--color-background-disabled", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-text-inverse", "--color-text-ghost", "--color-text-info", "--color-text-danger", "--color-text-success", "--color-text-warning", "--color-text-disabled", "--color-border-primary", "--color-border-secondary", "--color-border-tertiary", "--color-border-inverse", "--color-border-ghost", "--color-border-info", "--color-border-danger", "--color-border-success", "--color-border-warning", "--color-border-disabled", "--color-ring-primary", "--color-ring-secondary", "--color-ring-inverse", "--color-ring-info", "--color-ring-danger", "--color-ring-success", "--color-ring-warning", "--font-sans", "--font-mono", "--font-weight-normal", "--font-weight-medium", "--font-weight-semibold", "--font-weight-bold", "--font-text-xs-size", "--font-text-sm-size", "--font-text-md-size", "--font-text-lg-size", "--font-heading-xs-size", "--font-heading-sm-size", "--font-heading-md-size", "--font-heading-lg-size", "--font-heading-xl-size", "--font-heading-2xl-size", "--font-heading-3xl-size", "--font-text-xs-line-height", "--font-text-sm-line-height", "--font-text-md-line-height", "--font-text-lg-line-height", "--font-heading-xs-line-height", "--font-heading-sm-line-height", "--font-heading-md-line-height", "--font-heading-lg-line-height", "--font-heading-xl-line-height", "--font-heading-2xl-line-height", "--font-heading-3xl-line-height", "--border-radius-xs", "--border-radius-sm", "--border-radius-md", "--border-radius-lg", "--border-radius-xl", "--border-radius-full", "--border-width-regular", "--shadow-hairline", "--shadow-sm", "--shadow-md", "--shadow-lg" ] }, "css": { "description": "CSS blocks that apps can inject.", "type": "object", "properties": { "fonts": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "McpUiInitializeRequest": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/initialize" }, "params": { "type": "object", "properties": { "appInfo": { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "version": { "type": "string" }, "websiteUrl": { "type": "string" }, "description": { "type": "string" } }, "required": ["name", "version"], "additionalProperties": false, "description": "App identification (name and version)." }, "appCapabilities": { "type": "object", "properties": { "experimental": { "description": "Experimental features (structure TBD).", "type": "object", "properties": {}, "additionalProperties": false }, "tools": { "description": "App exposes MCP-style tools that the host can call.", "type": "object", "properties": { "listChanged": { "description": "App supports tools/list_changed notifications.", "type": "boolean" } }, "additionalProperties": false } }, "additionalProperties": false, "description": "Features and capabilities this app provides." }, "protocolVersion": { "type": "string", "description": "Protocol version this app supports." } }, "required": ["appInfo", "appCapabilities", "protocolVersion"], "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiInitializeResult": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "protocolVersion": { "type": "string", "description": "Negotiated protocol version string (e.g., \"2025-11-21\")." }, "hostInfo": { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "version": { "type": "string" }, "websiteUrl": { "type": "string" }, "description": { "type": "string" } }, "required": ["name", "version"], "additionalProperties": false, "description": "Host application identification and version." }, "hostCapabilities": { "type": "object", "properties": { "experimental": { "description": "Experimental features (structure TBD).", "type": "object", "properties": {}, "additionalProperties": false }, "openLinks": { "description": "Host supports opening external URLs.", "type": "object", "properties": {}, "additionalProperties": false }, "serverTools": { "description": "Host can proxy tool calls to the MCP server.", "type": "object", "properties": { "listChanged": { "description": "Host supports tools/list_changed notifications.", "type": "boolean" } }, "additionalProperties": false }, "serverResources": { "description": "Host can proxy resource reads to the MCP server.", "type": "object", "properties": { "listChanged": { "description": "Host supports resources/list_changed notifications.", "type": "boolean" } }, "additionalProperties": false }, "logging": { "description": "Host accepts log messages.", "type": "object", "properties": {}, "additionalProperties": false }, "sandbox": { "description": "Sandbox configuration applied by the host.", "type": "object", "properties": { "permissions": { "description": "Permissions granted by the host (camera, microphone, geolocation).", "type": "object", "properties": { "camera": { "description": "Request camera access (Permission Policy `camera` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "microphone": { "description": "Request microphone access (Permission Policy `microphone` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "geolocation": { "description": "Request geolocation access (Permission Policy `geolocation` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "clipboardWrite": { "description": "Request clipboard write access (Permission Policy `clipboard-write` feature).", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "csp": { "description": "CSP domains approved by the host.", "type": "object", "properties": { "connectDomains": { "description": "Origins for network requests (fetch/XHR/WebSocket).", "type": "array", "items": { "type": "string" } }, "resourceDomains": { "description": "Origins for static resources (scripts, images, styles, fonts).", "type": "array", "items": { "type": "string" } }, "frameDomains": { "description": "Origins for nested iframes (frame-src directive).", "type": "array", "items": { "type": "string" } }, "baseUriDomains": { "description": "Allowed base URIs for the document (base-uri directive).", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } }, "additionalProperties": false }, "updateModelContext": { "description": "Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.", "type": "object", "properties": { "text": { "description": "Host supports text content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "image": { "description": "Host supports image content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "audio": { "description": "Host supports audio content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resource": { "description": "Host supports resource content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resourceLink": { "description": "Host supports resource link content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "structuredContent": { "description": "Host supports structured content.", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "message": { "description": "Host supports receiving content messages (ui/message) from the Guest UI.", "type": "object", "properties": { "text": { "description": "Host supports text content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "image": { "description": "Host supports image content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "audio": { "description": "Host supports audio content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resource": { "description": "Host supports resource content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resourceLink": { "description": "Host supports resource link content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "structuredContent": { "description": "Host supports structured content.", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false, "description": "Features and capabilities provided by the host." }, "hostContext": { "type": "object", "properties": { "toolInfo": { "description": "Metadata of the tool call that instantiated this App.", "type": "object", "properties": { "id": { "description": "JSON-RPC id of the tools/call request.", "anyOf": [ { "type": "string" }, { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } ] }, "tool": { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "description": { "type": "string" }, "inputSchema": { "type": "object", "properties": { "type": { "type": "string", "const": "object" }, "properties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["type"], "additionalProperties": {} }, "outputSchema": { "type": "object", "properties": { "type": { "type": "string", "const": "object" }, "properties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["type"], "additionalProperties": {} }, "annotations": { "type": "object", "properties": { "title": { "type": "string" }, "readOnlyHint": { "type": "boolean" }, "destructiveHint": { "type": "boolean" }, "idempotentHint": { "type": "boolean" }, "openWorldHint": { "type": "boolean" } }, "additionalProperties": false }, "execution": { "type": "object", "properties": { "taskSupport": { "type": "string", "enum": ["required", "optional", "forbidden"] } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["name", "inputSchema"], "additionalProperties": false, "description": "Tool definition including name, inputSchema, etc." } }, "required": ["tool"], "additionalProperties": false }, "theme": { "description": "Current color theme preference.", "anyOf": [ { "type": "string", "const": "light" }, { "type": "string", "const": "dark" } ] }, "styles": { "description": "Style configuration for theming the app.", "type": "object", "properties": { "variables": { "description": "CSS variables for theming the app.", "type": "object", "propertyNames": { "anyOf": [ { "type": "string", "const": "--color-background-primary" }, { "type": "string", "const": "--color-background-secondary" }, { "type": "string", "const": "--color-background-tertiary" }, { "type": "string", "const": "--color-background-inverse" }, { "type": "string", "const": "--color-background-ghost" }, { "type": "string", "const": "--color-background-info" }, { "type": "string", "const": "--color-background-danger" }, { "type": "string", "const": "--color-background-success" }, { "type": "string", "const": "--color-background-warning" }, { "type": "string", "const": "--color-background-disabled" }, { "type": "string", "const": "--color-text-primary" }, { "type": "string", "const": "--color-text-secondary" }, { "type": "string", "const": "--color-text-tertiary" }, { "type": "string", "const": "--color-text-inverse" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-text-info" }, { "type": "string", "const": "--color-text-danger" }, { "type": "string", "const": "--color-text-success" }, { "type": "string", "const": "--color-text-warning" }, { "type": "string", "const": "--color-text-disabled" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-border-primary" }, { "type": "string", "const": "--color-border-secondary" }, { "type": "string", "const": "--color-border-tertiary" }, { "type": "string", "const": "--color-border-inverse" }, { "type": "string", "const": "--color-border-ghost" }, { "type": "string", "const": "--color-border-info" }, { "type": "string", "const": "--color-border-danger" }, { "type": "string", "const": "--color-border-success" }, { "type": "string", "const": "--color-border-warning" }, { "type": "string", "const": "--color-border-disabled" }, { "type": "string", "const": "--color-ring-primary" }, { "type": "string", "const": "--color-ring-secondary" }, { "type": "string", "const": "--color-ring-inverse" }, { "type": "string", "const": "--color-ring-info" }, { "type": "string", "const": "--color-ring-danger" }, { "type": "string", "const": "--color-ring-success" }, { "type": "string", "const": "--color-ring-warning" }, { "type": "string", "const": "--font-sans" }, { "type": "string", "const": "--font-mono" }, { "type": "string", "const": "--font-weight-normal" }, { "type": "string", "const": "--font-weight-medium" }, { "type": "string", "const": "--font-weight-semibold" }, { "type": "string", "const": "--font-weight-bold" }, { "type": "string", "const": "--font-text-xs-size" }, { "type": "string", "const": "--font-text-sm-size" }, { "type": "string", "const": "--font-text-md-size" }, { "type": "string", "const": "--font-text-lg-size" }, { "type": "string", "const": "--font-heading-xs-size" }, { "type": "string", "const": "--font-heading-sm-size" }, { "type": "string", "const": "--font-heading-md-size" }, { "type": "string", "const": "--font-heading-lg-size" }, { "type": "string", "const": "--font-heading-xl-size" }, { "type": "string", "const": "--font-heading-2xl-size" }, { "type": "string", "const": "--font-heading-3xl-size" }, { "type": "string", "const": "--font-text-xs-line-height" }, { "type": "string", "const": "--font-text-sm-line-height" }, { "type": "string", "const": "--font-text-md-line-height" }, { "type": "string", "const": "--font-text-lg-line-height" }, { "type": "string", "const": "--font-heading-xs-line-height" }, { "type": "string", "const": "--font-heading-sm-line-height" }, { "type": "string", "const": "--font-heading-md-line-height" }, { "type": "string", "const": "--font-heading-lg-line-height" }, { "type": "string", "const": "--font-heading-xl-line-height" }, { "type": "string", "const": "--font-heading-2xl-line-height" }, { "type": "string", "const": "--font-heading-3xl-line-height" }, { "type": "string", "const": "--border-radius-xs" }, { "type": "string", "const": "--border-radius-sm" }, { "type": "string", "const": "--border-radius-md" }, { "type": "string", "const": "--border-radius-lg" }, { "type": "string", "const": "--border-radius-xl" }, { "type": "string", "const": "--border-radius-full" }, { "type": "string", "const": "--border-width-regular" }, { "type": "string", "const": "--shadow-hairline" }, { "type": "string", "const": "--shadow-sm" }, { "type": "string", "const": "--shadow-md" }, { "type": "string", "const": "--shadow-lg" } ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "additionalProperties": { "anyOf": [ { "type": "string" }, {} ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "required": [ "--color-background-primary", "--color-background-secondary", "--color-background-tertiary", "--color-background-inverse", "--color-background-ghost", "--color-background-info", "--color-background-danger", "--color-background-success", "--color-background-warning", "--color-background-disabled", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-text-inverse", "--color-text-ghost", "--color-text-info", "--color-text-danger", "--color-text-success", "--color-text-warning", "--color-text-disabled", "--color-border-primary", "--color-border-secondary", "--color-border-tertiary", "--color-border-inverse", "--color-border-ghost", "--color-border-info", "--color-border-danger", "--color-border-success", "--color-border-warning", "--color-border-disabled", "--color-ring-primary", "--color-ring-secondary", "--color-ring-inverse", "--color-ring-info", "--color-ring-danger", "--color-ring-success", "--color-ring-warning", "--font-sans", "--font-mono", "--font-weight-normal", "--font-weight-medium", "--font-weight-semibold", "--font-weight-bold", "--font-text-xs-size", "--font-text-sm-size", "--font-text-md-size", "--font-text-lg-size", "--font-heading-xs-size", "--font-heading-sm-size", "--font-heading-md-size", "--font-heading-lg-size", "--font-heading-xl-size", "--font-heading-2xl-size", "--font-heading-3xl-size", "--font-text-xs-line-height", "--font-text-sm-line-height", "--font-text-md-line-height", "--font-text-lg-line-height", "--font-heading-xs-line-height", "--font-heading-sm-line-height", "--font-heading-md-line-height", "--font-heading-lg-line-height", "--font-heading-xl-line-height", "--font-heading-2xl-line-height", "--font-heading-3xl-line-height", "--border-radius-xs", "--border-radius-sm", "--border-radius-md", "--border-radius-lg", "--border-radius-xl", "--border-radius-full", "--border-width-regular", "--shadow-hairline", "--shadow-sm", "--shadow-md", "--shadow-lg" ] }, "css": { "description": "CSS blocks that apps can inject.", "type": "object", "properties": { "fonts": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "displayMode": { "description": "How the UI is currently displayed.", "anyOf": [ { "type": "string", "const": "inline" }, { "type": "string", "const": "fullscreen" }, { "type": "string", "const": "pip" } ] }, "availableDisplayModes": { "description": "Display modes the host supports.", "type": "array", "items": { "type": "string" } }, "containerDimensions": { "description": "Container dimensions. Represents the dimensions of the iframe or other\ncontainer holding the app. Specify either width or maxWidth, and either height or maxHeight.", "allOf": [ { "anyOf": [ { "type": "object", "properties": { "height": { "type": "number", "description": "Fixed container height in pixels." } }, "required": ["height"], "additionalProperties": false }, { "type": "object", "properties": { "maxHeight": { "description": "Maximum container height in pixels.", "anyOf": [ { "type": "number" }, {} ] } }, "additionalProperties": false } ] }, { "anyOf": [ { "type": "object", "properties": { "width": { "type": "number", "description": "Fixed container width in pixels." } }, "required": ["width"], "additionalProperties": false }, { "type": "object", "properties": { "maxWidth": { "description": "Maximum container width in pixels.", "anyOf": [ { "type": "number" }, {} ] } }, "additionalProperties": false } ] } ] }, "locale": { "description": "User's language and region preference in BCP 47 format.", "type": "string" }, "timeZone": { "description": "User's timezone in IANA format.", "type": "string" }, "userAgent": { "description": "Host application identifier.", "type": "string" }, "platform": { "description": "Platform type for responsive design decisions.", "anyOf": [ { "type": "string", "const": "web" }, { "type": "string", "const": "desktop" }, { "type": "string", "const": "mobile" } ] }, "deviceCapabilities": { "description": "Device input capabilities.", "type": "object", "properties": { "touch": { "description": "Whether the device supports touch input.", "type": "boolean" }, "hover": { "description": "Whether the device supports hover interactions.", "type": "boolean" } }, "additionalProperties": false }, "safeAreaInsets": { "description": "Mobile safe area boundaries in pixels.", "type": "object", "properties": { "top": { "type": "number", "description": "Top safe area inset in pixels." }, "right": { "type": "number", "description": "Right safe area inset in pixels." }, "bottom": { "type": "number", "description": "Bottom safe area inset in pixels." }, "left": { "type": "number", "description": "Left safe area inset in pixels." } }, "required": ["top", "right", "bottom", "left"], "additionalProperties": false } }, "additionalProperties": {}, "description": "Rich context about the host environment." } }, "required": [ "protocolVersion", "hostInfo", "hostCapabilities", "hostContext" ], "additionalProperties": {} }, "McpUiInitializedNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/initialized" }, "params": { "type": "object", "properties": {}, "additionalProperties": false } }, "required": ["method"], "additionalProperties": false }, "McpUiMessageRequest": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/message" }, "params": { "type": "object", "properties": { "role": { "type": "string", "const": "user", "description": "Message role, currently only \"user\" is supported." }, "content": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "text"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "image" }, "data": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "data", "mimeType"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "audio" }, "data": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "data", "mimeType"], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "uri": { "type": "string" }, "description": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "properties": {}, "additionalProperties": {} }, "type": { "type": "string", "const": "resource_link" } }, "required": ["name", "uri", "type"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "resource" }, "resource": { "anyOf": [ { "type": "object", "properties": { "uri": { "type": "string" }, "mimeType": { "type": "string" }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "text": { "type": "string" } }, "required": ["uri", "text"], "additionalProperties": false }, { "type": "object", "properties": { "uri": { "type": "string" }, "mimeType": { "type": "string" }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "blob": { "type": "string" } }, "required": ["uri", "blob"], "additionalProperties": false } ] }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "resource"], "additionalProperties": false } ] }, "description": "Message content blocks (text, image, etc.)." } }, "required": ["role", "content"], "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiMessageResult": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "isError": { "description": "True if the host rejected or failed to deliver the message.", "type": "boolean" } }, "additionalProperties": {} }, "McpUiOpenLinkRequest": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/open-link" }, "params": { "type": "object", "properties": { "url": { "type": "string", "description": "URL to open in the host's browser" } }, "required": ["url"], "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiOpenLinkResult": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "isError": { "description": "True if the host failed to open the URL (e.g., due to security policy).", "type": "boolean" } }, "additionalProperties": {} }, "McpUiRequestDisplayModeRequest": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/request-display-mode" }, "params": { "type": "object", "properties": { "mode": { "anyOf": [ { "type": "string", "const": "inline" }, { "type": "string", "const": "fullscreen" }, { "type": "string", "const": "pip" } ], "description": "The display mode being requested." } }, "required": ["mode"], "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiRequestDisplayModeResult": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "mode": { "anyOf": [ { "type": "string", "const": "inline" }, { "type": "string", "const": "fullscreen" }, { "type": "string", "const": "pip" } ], "description": "The display mode that was actually set. May differ from requested if not supported." } }, "required": ["mode"], "additionalProperties": {} }, "McpUiResourceCsp": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "connectDomains": { "description": "Origins for network requests (fetch/XHR/WebSocket).", "type": "array", "items": { "type": "string" } }, "resourceDomains": { "description": "Origins for static resources (scripts, images, styles, fonts).", "type": "array", "items": { "type": "string" } }, "frameDomains": { "description": "Origins for nested iframes (frame-src directive).", "type": "array", "items": { "type": "string" } }, "baseUriDomains": { "description": "Allowed base URIs for the document (base-uri directive).", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "McpUiResourceMeta": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "csp": { "description": "Content Security Policy configuration.", "type": "object", "properties": { "connectDomains": { "description": "Origins for network requests (fetch/XHR/WebSocket).", "type": "array", "items": { "type": "string" } }, "resourceDomains": { "description": "Origins for static resources (scripts, images, styles, fonts).", "type": "array", "items": { "type": "string" } }, "frameDomains": { "description": "Origins for nested iframes (frame-src directive).", "type": "array", "items": { "type": "string" } }, "baseUriDomains": { "description": "Allowed base URIs for the document (base-uri directive).", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "permissions": { "description": "Sandbox permissions requested by the UI.", "type": "object", "properties": { "camera": { "description": "Request camera access (Permission Policy `camera` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "microphone": { "description": "Request microphone access (Permission Policy `microphone` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "geolocation": { "description": "Request geolocation access (Permission Policy `geolocation` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "clipboardWrite": { "description": "Request clipboard write access (Permission Policy `clipboard-write` feature).", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "domain": { "description": "Dedicated origin for widget sandbox.", "type": "string" }, "prefersBorder": { "description": "Visual boundary preference - true if UI prefers a visible border.", "type": "boolean" } }, "additionalProperties": false }, "McpUiResourcePermissions": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "camera": { "description": "Request camera access (Permission Policy `camera` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "microphone": { "description": "Request microphone access (Permission Policy `microphone` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "geolocation": { "description": "Request geolocation access (Permission Policy `geolocation` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "clipboardWrite": { "description": "Request clipboard write access (Permission Policy `clipboard-write` feature).", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "McpUiResourceTeardownRequest": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/resource-teardown" }, "params": { "type": "object", "properties": {}, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiResourceTeardownResult": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "McpUiSandboxProxyReadyNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/sandbox-proxy-ready" }, "params": { "type": "object", "properties": {}, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiSandboxResourceReadyNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/sandbox-resource-ready" }, "params": { "type": "object", "properties": { "html": { "type": "string", "description": "HTML content to load into the inner iframe." }, "sandbox": { "description": "Optional override for the inner iframe's sandbox attribute.", "type": "string" }, "csp": { "description": "CSP configuration from resource metadata.", "type": "object", "properties": { "connectDomains": { "description": "Origins for network requests (fetch/XHR/WebSocket).", "type": "array", "items": { "type": "string" } }, "resourceDomains": { "description": "Origins for static resources (scripts, images, styles, fonts).", "type": "array", "items": { "type": "string" } }, "frameDomains": { "description": "Origins for nested iframes (frame-src directive).", "type": "array", "items": { "type": "string" } }, "baseUriDomains": { "description": "Allowed base URIs for the document (base-uri directive).", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "permissions": { "description": "Sandbox permissions from resource metadata.", "type": "object", "properties": { "camera": { "description": "Request camera access (Permission Policy `camera` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "microphone": { "description": "Request microphone access (Permission Policy `microphone` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "geolocation": { "description": "Request geolocation access (Permission Policy `geolocation` feature).", "type": "object", "properties": {}, "additionalProperties": false }, "clipboardWrite": { "description": "Request clipboard write access (Permission Policy `clipboard-write` feature).", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false } }, "required": ["html"], "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiSizeChangedNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/size-changed" }, "params": { "type": "object", "properties": { "width": { "description": "New width in pixels.", "type": "number" }, "height": { "description": "New height in pixels.", "type": "number" } }, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiStyleVariableKey": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "string", "const": "--color-background-primary" }, { "type": "string", "const": "--color-background-secondary" }, { "type": "string", "const": "--color-background-tertiary" }, { "type": "string", "const": "--color-background-inverse" }, { "type": "string", "const": "--color-background-ghost" }, { "type": "string", "const": "--color-background-info" }, { "type": "string", "const": "--color-background-danger" }, { "type": "string", "const": "--color-background-success" }, { "type": "string", "const": "--color-background-warning" }, { "type": "string", "const": "--color-background-disabled" }, { "type": "string", "const": "--color-text-primary" }, { "type": "string", "const": "--color-text-secondary" }, { "type": "string", "const": "--color-text-tertiary" }, { "type": "string", "const": "--color-text-inverse" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-text-info" }, { "type": "string", "const": "--color-text-danger" }, { "type": "string", "const": "--color-text-success" }, { "type": "string", "const": "--color-text-warning" }, { "type": "string", "const": "--color-text-disabled" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-border-primary" }, { "type": "string", "const": "--color-border-secondary" }, { "type": "string", "const": "--color-border-tertiary" }, { "type": "string", "const": "--color-border-inverse" }, { "type": "string", "const": "--color-border-ghost" }, { "type": "string", "const": "--color-border-info" }, { "type": "string", "const": "--color-border-danger" }, { "type": "string", "const": "--color-border-success" }, { "type": "string", "const": "--color-border-warning" }, { "type": "string", "const": "--color-border-disabled" }, { "type": "string", "const": "--color-ring-primary" }, { "type": "string", "const": "--color-ring-secondary" }, { "type": "string", "const": "--color-ring-inverse" }, { "type": "string", "const": "--color-ring-info" }, { "type": "string", "const": "--color-ring-danger" }, { "type": "string", "const": "--color-ring-success" }, { "type": "string", "const": "--color-ring-warning" }, { "type": "string", "const": "--font-sans" }, { "type": "string", "const": "--font-mono" }, { "type": "string", "const": "--font-weight-normal" }, { "type": "string", "const": "--font-weight-medium" }, { "type": "string", "const": "--font-weight-semibold" }, { "type": "string", "const": "--font-weight-bold" }, { "type": "string", "const": "--font-text-xs-size" }, { "type": "string", "const": "--font-text-sm-size" }, { "type": "string", "const": "--font-text-md-size" }, { "type": "string", "const": "--font-text-lg-size" }, { "type": "string", "const": "--font-heading-xs-size" }, { "type": "string", "const": "--font-heading-sm-size" }, { "type": "string", "const": "--font-heading-md-size" }, { "type": "string", "const": "--font-heading-lg-size" }, { "type": "string", "const": "--font-heading-xl-size" }, { "type": "string", "const": "--font-heading-2xl-size" }, { "type": "string", "const": "--font-heading-3xl-size" }, { "type": "string", "const": "--font-text-xs-line-height" }, { "type": "string", "const": "--font-text-sm-line-height" }, { "type": "string", "const": "--font-text-md-line-height" }, { "type": "string", "const": "--font-text-lg-line-height" }, { "type": "string", "const": "--font-heading-xs-line-height" }, { "type": "string", "const": "--font-heading-sm-line-height" }, { "type": "string", "const": "--font-heading-md-line-height" }, { "type": "string", "const": "--font-heading-lg-line-height" }, { "type": "string", "const": "--font-heading-xl-line-height" }, { "type": "string", "const": "--font-heading-2xl-line-height" }, { "type": "string", "const": "--font-heading-3xl-line-height" }, { "type": "string", "const": "--border-radius-xs" }, { "type": "string", "const": "--border-radius-sm" }, { "type": "string", "const": "--border-radius-md" }, { "type": "string", "const": "--border-radius-lg" }, { "type": "string", "const": "--border-radius-xl" }, { "type": "string", "const": "--border-radius-full" }, { "type": "string", "const": "--border-width-regular" }, { "type": "string", "const": "--shadow-hairline" }, { "type": "string", "const": "--shadow-sm" }, { "type": "string", "const": "--shadow-md" }, { "type": "string", "const": "--shadow-lg" } ], "description": "CSS variable keys available to MCP apps for theming." }, "McpUiStyles": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "propertyNames": { "anyOf": [ { "type": "string", "const": "--color-background-primary" }, { "type": "string", "const": "--color-background-secondary" }, { "type": "string", "const": "--color-background-tertiary" }, { "type": "string", "const": "--color-background-inverse" }, { "type": "string", "const": "--color-background-ghost" }, { "type": "string", "const": "--color-background-info" }, { "type": "string", "const": "--color-background-danger" }, { "type": "string", "const": "--color-background-success" }, { "type": "string", "const": "--color-background-warning" }, { "type": "string", "const": "--color-background-disabled" }, { "type": "string", "const": "--color-text-primary" }, { "type": "string", "const": "--color-text-secondary" }, { "type": "string", "const": "--color-text-tertiary" }, { "type": "string", "const": "--color-text-inverse" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-text-info" }, { "type": "string", "const": "--color-text-danger" }, { "type": "string", "const": "--color-text-success" }, { "type": "string", "const": "--color-text-warning" }, { "type": "string", "const": "--color-text-disabled" }, { "type": "string", "const": "--color-text-ghost" }, { "type": "string", "const": "--color-border-primary" }, { "type": "string", "const": "--color-border-secondary" }, { "type": "string", "const": "--color-border-tertiary" }, { "type": "string", "const": "--color-border-inverse" }, { "type": "string", "const": "--color-border-ghost" }, { "type": "string", "const": "--color-border-info" }, { "type": "string", "const": "--color-border-danger" }, { "type": "string", "const": "--color-border-success" }, { "type": "string", "const": "--color-border-warning" }, { "type": "string", "const": "--color-border-disabled" }, { "type": "string", "const": "--color-ring-primary" }, { "type": "string", "const": "--color-ring-secondary" }, { "type": "string", "const": "--color-ring-inverse" }, { "type": "string", "const": "--color-ring-info" }, { "type": "string", "const": "--color-ring-danger" }, { "type": "string", "const": "--color-ring-success" }, { "type": "string", "const": "--color-ring-warning" }, { "type": "string", "const": "--font-sans" }, { "type": "string", "const": "--font-mono" }, { "type": "string", "const": "--font-weight-normal" }, { "type": "string", "const": "--font-weight-medium" }, { "type": "string", "const": "--font-weight-semibold" }, { "type": "string", "const": "--font-weight-bold" }, { "type": "string", "const": "--font-text-xs-size" }, { "type": "string", "const": "--font-text-sm-size" }, { "type": "string", "const": "--font-text-md-size" }, { "type": "string", "const": "--font-text-lg-size" }, { "type": "string", "const": "--font-heading-xs-size" }, { "type": "string", "const": "--font-heading-sm-size" }, { "type": "string", "const": "--font-heading-md-size" }, { "type": "string", "const": "--font-heading-lg-size" }, { "type": "string", "const": "--font-heading-xl-size" }, { "type": "string", "const": "--font-heading-2xl-size" }, { "type": "string", "const": "--font-heading-3xl-size" }, { "type": "string", "const": "--font-text-xs-line-height" }, { "type": "string", "const": "--font-text-sm-line-height" }, { "type": "string", "const": "--font-text-md-line-height" }, { "type": "string", "const": "--font-text-lg-line-height" }, { "type": "string", "const": "--font-heading-xs-line-height" }, { "type": "string", "const": "--font-heading-sm-line-height" }, { "type": "string", "const": "--font-heading-md-line-height" }, { "type": "string", "const": "--font-heading-lg-line-height" }, { "type": "string", "const": "--font-heading-xl-line-height" }, { "type": "string", "const": "--font-heading-2xl-line-height" }, { "type": "string", "const": "--font-heading-3xl-line-height" }, { "type": "string", "const": "--border-radius-xs" }, { "type": "string", "const": "--border-radius-sm" }, { "type": "string", "const": "--border-radius-md" }, { "type": "string", "const": "--border-radius-lg" }, { "type": "string", "const": "--border-radius-xl" }, { "type": "string", "const": "--border-radius-full" }, { "type": "string", "const": "--border-width-regular" }, { "type": "string", "const": "--shadow-hairline" }, { "type": "string", "const": "--shadow-sm" }, { "type": "string", "const": "--shadow-md" }, { "type": "string", "const": "--shadow-lg" } ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "additionalProperties": { "anyOf": [ { "type": "string" }, {} ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "required": [ "--color-background-primary", "--color-background-secondary", "--color-background-tertiary", "--color-background-inverse", "--color-background-ghost", "--color-background-info", "--color-background-danger", "--color-background-success", "--color-background-warning", "--color-background-disabled", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-text-inverse", "--color-text-ghost", "--color-text-info", "--color-text-danger", "--color-text-success", "--color-text-warning", "--color-text-disabled", "--color-border-primary", "--color-border-secondary", "--color-border-tertiary", "--color-border-inverse", "--color-border-ghost", "--color-border-info", "--color-border-danger", "--color-border-success", "--color-border-warning", "--color-border-disabled", "--color-ring-primary", "--color-ring-secondary", "--color-ring-inverse", "--color-ring-info", "--color-ring-danger", "--color-ring-success", "--color-ring-warning", "--font-sans", "--font-mono", "--font-weight-normal", "--font-weight-medium", "--font-weight-semibold", "--font-weight-bold", "--font-text-xs-size", "--font-text-sm-size", "--font-text-md-size", "--font-text-lg-size", "--font-heading-xs-size", "--font-heading-sm-size", "--font-heading-md-size", "--font-heading-lg-size", "--font-heading-xl-size", "--font-heading-2xl-size", "--font-heading-3xl-size", "--font-text-xs-line-height", "--font-text-sm-line-height", "--font-text-md-line-height", "--font-text-lg-line-height", "--font-heading-xs-line-height", "--font-heading-sm-line-height", "--font-heading-md-line-height", "--font-heading-lg-line-height", "--font-heading-xl-line-height", "--font-heading-2xl-line-height", "--font-heading-3xl-line-height", "--border-radius-xs", "--border-radius-sm", "--border-radius-md", "--border-radius-lg", "--border-radius-xl", "--border-radius-full", "--border-width-regular", "--shadow-hairline", "--shadow-sm", "--shadow-md", "--shadow-lg" ], "description": "Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses `Record` rather than `Partial>`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation." }, "McpUiSupportedContentBlockModalities": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "text": { "description": "Host supports text content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "image": { "description": "Host supports image content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "audio": { "description": "Host supports audio content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resource": { "description": "Host supports resource content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "resourceLink": { "description": "Host supports resource link content blocks.", "type": "object", "properties": {}, "additionalProperties": false }, "structuredContent": { "description": "Host supports structured content.", "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }, "McpUiTheme": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "string", "const": "light" }, { "type": "string", "const": "dark" } ], "description": "Color theme preference for the host environment." }, "McpUiToolCancelledNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/tool-cancelled" }, "params": { "type": "object", "properties": { "reason": { "description": "Optional reason for the cancellation (e.g., \"user action\", \"timeout\").", "type": "string" } }, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiToolInputNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/tool-input" }, "params": { "type": "object", "properties": { "arguments": { "description": "Complete tool call arguments as key-value pairs.", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "description": "Complete tool call arguments as key-value pairs." } } }, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiToolInputPartialNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/tool-input-partial" }, "params": { "type": "object", "properties": { "arguments": { "description": "Partial tool call arguments (incomplete, may change).", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "description": "Partial tool call arguments (incomplete, may change)." } } }, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiToolMeta": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "resourceUri": { "type": "string" }, "visibility": { "description": "Who can access this tool. Default: [\"model\", \"app\"]\n- \"model\": Tool visible to and callable by the agent\n- \"app\": Tool callable by the app from this server only", "type": "array", "items": { "anyOf": [ { "type": "string", "const": "model" }, { "type": "string", "const": "app" } ], "description": "Tool visibility scope - who can access the tool." } } }, "additionalProperties": false }, "McpUiToolResultNotification": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/notifications/tool-result" }, "params": { "type": "object", "properties": { "_meta": { "type": "object", "properties": { "progressToken": { "anyOf": [ { "type": "string" }, { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } ] }, "io.modelcontextprotocol/related-task": { "type": "object", "properties": { "taskId": { "type": "string" } }, "required": ["taskId"], "additionalProperties": false } }, "additionalProperties": {} }, "content": { "default": [], "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "text"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "image" }, "data": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "data", "mimeType"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "audio" }, "data": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "data", "mimeType"], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "uri": { "type": "string" }, "description": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "properties": {}, "additionalProperties": {} }, "type": { "type": "string", "const": "resource_link" } }, "required": ["name", "uri", "type"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "resource" }, "resource": { "anyOf": [ { "type": "object", "properties": { "uri": { "type": "string" }, "mimeType": { "type": "string" }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "text": { "type": "string" } }, "required": ["uri", "text"], "additionalProperties": false }, { "type": "object", "properties": { "uri": { "type": "string" }, "mimeType": { "type": "string" }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "blob": { "type": "string" } }, "required": ["uri", "blob"], "additionalProperties": false } ] }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "resource"], "additionalProperties": false } ] } }, "structuredContent": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "isError": { "type": "boolean" } }, "required": ["content"], "additionalProperties": {}, "description": "Standard MCP tool execution result." } }, "required": ["method", "params"], "additionalProperties": false }, "McpUiToolVisibility": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "string", "const": "model" }, { "type": "string", "const": "app" } ], "description": "Tool visibility scope - who can access the tool." }, "McpUiUpdateModelContextRequest": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "method": { "type": "string", "const": "ui/update-model-context" }, "params": { "type": "object", "properties": { "content": { "description": "Context content blocks (text, image, etc.).", "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "text"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "image" }, "data": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "data", "mimeType"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "audio" }, "data": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "data", "mimeType"], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "icons": { "type": "array", "items": { "type": "object", "properties": { "src": { "type": "string" }, "mimeType": { "type": "string" }, "sizes": { "type": "array", "items": { "type": "string" } }, "theme": { "type": "string", "enum": ["light", "dark"] } }, "required": ["src"], "additionalProperties": false } }, "uri": { "type": "string" }, "description": { "type": "string" }, "mimeType": { "type": "string" }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "properties": {}, "additionalProperties": {} }, "type": { "type": "string", "const": "resource_link" } }, "required": ["name", "uri", "type"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "resource" }, "resource": { "anyOf": [ { "type": "object", "properties": { "uri": { "type": "string" }, "mimeType": { "type": "string" }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "text": { "type": "string" } }, "required": ["uri", "text"], "additionalProperties": false }, { "type": "object", "properties": { "uri": { "type": "string" }, "mimeType": { "type": "string" }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "blob": { "type": "string" } }, "required": ["uri", "blob"], "additionalProperties": false } ] }, "annotations": { "type": "object", "properties": { "audience": { "type": "array", "items": { "type": "string", "enum": ["user", "assistant"] } }, "priority": { "type": "number", "minimum": 0, "maximum": 1 }, "lastModified": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "additionalProperties": false }, "_meta": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": ["type", "resource"], "additionalProperties": false } ] } }, "structuredContent": { "description": "Structured content for machine-readable context data.", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "description": "Structured content for machine-readable context data." } } }, "additionalProperties": false } }, "required": ["method", "params"], "additionalProperties": false } } }