{
  "$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
        },
        "availableDisplayModes": {
          "description": "Display modes the app supports.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "const": "inline"
              },
              {
                "type": "string",
                "const": "fullscreen"
              },
              {
                "type": "string",
                "const": "pip"
              }
            ],
            "description": "Display mode for UI presentation."
          }
        }
      },
      "additionalProperties": false
    },
    "McpUiClientCapabilities": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "mimeTypes": {
          "description": "Array of supported MIME types for UI resources.\nMust include `\"text/html;profile=mcp-app\"` for MCP Apps support.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "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."
    },
    "McpUiDownloadFileRequest": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "method": {
          "type": "string",
          "const": "ui/download-file"
        },
        "params": {
          "type": "object",
          "properties": {
            "contents": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "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
                  },
                  {
                    "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"
                      },
                      "size": {
                        "type": "number"
                      },
                      "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
                  }
                ]
              },
              "description": "Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types."
            }
          },
          "required": ["contents"],
          "additionalProperties": false
        }
      },
      "required": ["method", "params"],
      "additionalProperties": false
    },
    "McpUiDownloadFileResult": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "isError": {
          "description": "True if the download failed (e.g., user cancelled or host denied).",
          "type": "boolean"
        }
      },
      "additionalProperties": {}
    },
    "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
        },
        "downloadFile": {
          "description": "Host supports file downloads via ui/download-file.",
          "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.\n\nMaps to Permission Policy `camera` feature.",
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                },
                "microphone": {
                  "description": "Request microphone access.\n\nMaps to Permission Policy `microphone` feature.",
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                },
                "geolocation": {
                  "description": "Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature.",
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                },
                "clipboardWrite": {
                  "description": "Request clipboard write access.\n\nMaps to 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).\n\n- Maps to CSP `connect-src` directive\n- Empty or omitted → no network connections (secure default)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "resourceDomains": {
                  "description": "Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "frameDomains": {
                  "description": "Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "baseUriDomains": {
                  "description": "Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)",
                  "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 view.",
          "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
        },
        "sampling": {
          "description": "Host supports LLM sampling (sampling/createMessage) from the view.\nMirrors the MCP `ClientCapabilities.sampling` shape so hosts can pass it through.",
          "type": "object",
          "properties": {
            "tools": {
              "description": "Host supports tool use via `tools` and `toolChoice` parameters.",
              "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-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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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": {
                "anyOf": [
                  {
                    "type": "string",
                    "const": "inline"
                  },
                  {
                    "type": "string",
                    "const": "fullscreen"
                  },
                  {
                    "type": "string",
                    "const": "pip"
                  }
                ],
                "description": "Display mode for UI presentation."
              }
            },
            "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-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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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": {
            "anyOf": [
              {
                "type": "string",
                "const": "inline"
              },
              {
                "type": "string",
                "const": "fullscreen"
              },
              {
                "type": "string",
                "const": "pip"
              }
            ],
            "description": "Display mode for UI presentation."
          }
        },
        "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-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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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
                },
                "availableDisplayModes": {
                  "description": "Display modes the app supports.",
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "string",
                        "const": "inline"
                      },
                      {
                        "type": "string",
                        "const": "fullscreen"
                      },
                      {
                        "type": "string",
                        "const": "pip"
                      }
                    ],
                    "description": "Display mode for UI presentation."
                  }
                }
              },
              "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
            },
            "downloadFile": {
              "description": "Host supports file downloads via ui/download-file.",
              "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.\n\nMaps to Permission Policy `camera` feature.",
                      "type": "object",
                      "properties": {},
                      "additionalProperties": false
                    },
                    "microphone": {
                      "description": "Request microphone access.\n\nMaps to Permission Policy `microphone` feature.",
                      "type": "object",
                      "properties": {},
                      "additionalProperties": false
                    },
                    "geolocation": {
                      "description": "Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature.",
                      "type": "object",
                      "properties": {},
                      "additionalProperties": false
                    },
                    "clipboardWrite": {
                      "description": "Request clipboard write access.\n\nMaps to 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).\n\n- Maps to CSP `connect-src` directive\n- Empty or omitted → no network connections (secure default)",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "resourceDomains": {
                      "description": "Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "frameDomains": {
                      "description": "Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "baseUriDomains": {
                      "description": "Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)",
                      "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 view.",
              "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
            },
            "sampling": {
              "description": "Host supports LLM sampling (sampling/createMessage) from the view.\nMirrors the MCP `ClientCapabilities.sampling` shape so hosts can pass it through.",
              "type": "object",
              "properties": {
                "tools": {
                  "description": "Host supports tool use via `tools` and `toolChoice` parameters.",
                  "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-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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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": {
                "anyOf": [
                  {
                    "type": "string",
                    "const": "inline"
                  },
                  {
                    "type": "string",
                    "const": "fullscreen"
                  },
                  {
                    "type": "string",
                    "const": "pip"
                  }
                ],
                "description": "Display mode for UI presentation."
              }
            },
            "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"
                      },
                      "size": {
                        "type": "number"
                      },
                      "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": {}
    },
    "McpUiRequestTeardownNotification": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "method": {
          "type": "string",
          "const": "ui/notifications/request-teardown"
        },
        "params": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      "required": ["method"],
      "additionalProperties": false
    },
    "McpUiResourceCsp": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "connectDomains": {
          "description": "Origins for network requests (fetch/XHR/WebSocket).\n\n- Maps to CSP `connect-src` directive\n- Empty or omitted → no network connections (secure default)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resourceDomains": {
          "description": "Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "frameDomains": {
          "description": "Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "baseUriDomains": {
          "description": "Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)",
          "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 for UI resources.",
          "type": "object",
          "properties": {
            "connectDomains": {
              "description": "Origins for network requests (fetch/XHR/WebSocket).\n\n- Maps to CSP `connect-src` directive\n- Empty or omitted → no network connections (secure default)",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "resourceDomains": {
              "description": "Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "frameDomains": {
              "description": "Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "baseUriDomains": {
              "description": "Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        },
        "permissions": {
          "description": "Sandbox permissions requested by the UI resource.",
          "type": "object",
          "properties": {
            "camera": {
              "description": "Request camera access.\n\nMaps to Permission Policy `camera` feature.",
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "microphone": {
              "description": "Request microphone access.\n\nMaps to Permission Policy `microphone` feature.",
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "geolocation": {
              "description": "Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature.",
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "clipboardWrite": {
              "description": "Request clipboard write access.\n\nMaps to Permission Policy `clipboard-write` feature.",
              "type": "object",
              "properties": {},
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "domain": {
          "description": "Dedicated origin for view sandbox.\n\nUseful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists.\n\n**Host-dependent:** The format and validation rules for this field are determined by each host. Servers MUST consult host-specific documentation for the expected domain format. Common patterns include:\n- Hash-based subdomains (e.g., `{hash}.claudemcpcontent.com`)\n- URL-derived subdomains (e.g., `www-example-com.oaiusercontent.com`)\n\nIf omitted, host uses default sandbox origin (typically per-conversation).",
          "type": "string"
        },
        "prefersBorder": {
          "description": "Visual boundary preference - true if view prefers a visible border.\n\nBoolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary.\n\n- `true`: request visible border + background\n- `false`: request no visible border + background\n- omitted: host decides border",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "McpUiResourcePermissions": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "camera": {
          "description": "Request camera access.\n\nMaps to Permission Policy `camera` feature.",
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "microphone": {
          "description": "Request microphone access.\n\nMaps to Permission Policy `microphone` feature.",
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "geolocation": {
          "description": "Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature.",
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "clipboardWrite": {
          "description": "Request clipboard write access.\n\nMaps to 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).\n\n- Maps to CSP `connect-src` directive\n- Empty or omitted → no network connections (secure default)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "resourceDomains": {
                  "description": "Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "frameDomains": {
                  "description": "Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "baseUriDomains": {
                  "description": "Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "additionalProperties": false
            },
            "permissions": {
              "description": "Sandbox permissions from resource metadata.",
              "type": "object",
              "properties": {
                "camera": {
                  "description": "Request camera access.\n\nMaps to Permission Policy `camera` feature.",
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                },
                "microphone": {
                  "description": "Request microphone access.\n\nMaps to Permission Policy `microphone` feature.",
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                },
                "geolocation": {
                  "description": "Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature.",
                  "type": "object",
                  "properties": {},
                  "additionalProperties": false
                },
                "clipboardWrite": {
                  "description": "Request clipboard write access.\n\nMaps to 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-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-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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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<K, string | undefined>` rather than `Partial<Record<K, string>>`\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."
          }
        },
        "csp": {
          "not": {}
        },
        "permissions": {
          "not": {}
        }
      },
      "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"
                      },
                      "size": {
                        "type": "number"
                      },
                      "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"
                      },
                      "size": {
                        "type": "number"
                      },
                      "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
    }
  }
}
