[{"data":1,"prerenderedAt":109},["ShallowReactive",2],{"wiki-mcp-mcp-extensions-en":3},{"meta":4,"html":8,"headings":9,"words":108},{"title":5,"description":6,"published":7,"updated":7},"MCP extensions","MCP extensions are optional features outside the core protocol: identifiers, negotiation, lifecycle, Tasks, MCP Apps, Enterprise-Managed Authorization, Skills.","2026-11-03","\u003Cp>An \u003Cstrong>MCP extension\u003C/strong> is an optional addition to the Model Context Protocol specification that defines capabilities beyond the core protocol. An extension has a unique identifier, is specified in its own document and works only when both the client and the server declare support for it. The specification names three kinds of purpose: modular features such as authentication, specialized ones such as industry-specific logic, and experimental ones incubated for possible inclusion in the core.\u003C/p>\n\u003Cp>The framework for extensions was defined by SEP-2133, and the \u003Ccode>extensions\u003C/code> field of capabilities became part of the protocol schema in specification version 2026-07-28. The first official extension, MCP Apps, was announced on 26 January 2026. Official extensions are developed in repositories of the Model Context Protocol GitHub organization. The general structure of the protocol is described in \u003Ca href=\"/en/wiki/mcp/what-is-mcp\" class=\"wiki-link wiki-link--article\">What is MCP\u003C/a>; the per-request capability model that extensions rely on is described in \u003Ca href=\"/en/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">Stateless MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"overview\" class=\"wiki-heading\">Overview\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"overview\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Property\u003C/th>\n\u003Cth>Value\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Identifier format\u003C/td>\n\u003Ctd>\u003Ccode>{vendor-prefix}/{extension-name}\u003C/code>, prefix in reverse DNS notation\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Official prefix\u003C/td>\n\u003Ctd>\u003Ccode>io.modelcontextprotocol\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Negotiation\u003C/td>\n\u003Ctd>\u003Ccode>extensions\u003C/code> field of client and server capabilities\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Stages\u003C/td>\n\u003Ctd>Experimental, Beta, Stable; promotion to the core is possible\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Official repositories\u003C/td>\n\u003Ctd>\u003Ccode>ext-\u003C/code> repositories of the \u003Ccode>modelcontextprotocol\u003C/code> GitHub organization\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Governing documents\u003C/td>\n\u003Ctd>SEP-2133 (framework), SEP-3392 (lifecycle)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Official extensions\u003C/td>\n\u003Ctd>MCP Apps, Tasks, OAuth Client Credentials, Enterprise-Managed Authorization, Skills over MCP, Server Cards\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Default state in SDKs\u003C/td>\n\u003Ctd>Disabled, explicit opt-in required\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"the-problem-extensions-solve\" class=\"wiki-heading\">The problem extensions solve\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"the-problem-extensions-solve\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Every feature of the core specification has to be implemented by every SDK. Some features are needed only in certain environments, such as enterprise identity management, and some are not yet settled.\u003C/p>\n\u003Cp>Extensions separate these features from the core. An extension evolves under its own maintainers, and implementations adopt it only when they need it.\u003C/p>\n\u003Cp>The experimental tasks of version 2025-11-25 lived in the core, and implementation experience revealed problems with their handshake, the blocking \u003Ccode>tasks/result\u003C/code> method and the scope of \u003Ccode>tasks/list\u003C/code>. SEP-2663 moved them into an extension to give the feature time to incubate independently of the core. MCP Apps took the opposite route: MCP-UI and the OpenAI Apps SDK had developed separate approaches to interactive results, and the extension unified them.\u003C/p>\n\u003Ch2 id=\"history\" class=\"wiki-heading\">History\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"history\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The table lists the events that shaped the extension mechanism and the official extensions.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Date\u003C/th>\n\u003Cth>Event\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>4 June 2025\u003C/td>\n\u003Ctd>SEP-990, the basis of Enterprise-Managed Authorization, is created\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>21 November 2025\u003C/td>\n\u003Ctd>SEP-1865 &quot;MCP Apps - Interactive User Interfaces for MCP&quot; is created\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>25 November 2025\u003C/td>\n\u003Ctd>Specification 2025-11-25 with experimental tasks in the core\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>26 January 2026\u003C/td>\n\u003Ctd>MCP Apps, the first official extension: revision 2026-01-26 of its specification\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>23 April 2026\u003C/td>\n\u003Ctd>SEP-2640 &quot;Skills Extension&quot; is created\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>27 April 2026\u003C/td>\n\u003Ctd>SEP-2663 &quot;Tasks Extension&quot; is created\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>28 July 2026\u003C/td>\n\u003Ctd>Specification 2026-07-28: the \u003Ccode>extensions\u003C/code> field in capabilities, tasks moved to \u003Ccode>io.modelcontextprotocol/tasks\u003C/code>, revisions of the authorization extensions keyed to 2026-07-28\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>25 September 2026\u003C/td>\n\u003Ctd>SEP-3392 &quot;Extension Lifecycle&quot; is created: stages Experimental, Beta and Stable\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"extension-identifiers\" class=\"wiki-heading\">Extension identifiers\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"extension-identifiers\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>An extension is identified by a string of the form \u003Ccode>{vendor-prefix}/{extension-name}\u003C/code>. The identifier follows the rules for \u003Ccode>_meta\u003C/code> keys, except that the prefix is mandatory. The prefix is a series of labels separated by dots and should be a reversed domain name that the author owns: a company with \u003Ccode>example.com\u003C/code> uses \u003Ccode>com.example/my-extension\u003C/code>. Any prefix whose second label is \u003Ccode>modelcontextprotocol\u003C/code> or \u003Ccode>mcp\u003C/code> is reserved for MCP.\u003C/p>\n\u003Cp>The table lists the identifiers of official extensions.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Extension\u003C/th>\n\u003Cth>Identifier\u003C/th>\n\u003Cth>Repository\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>MCP Apps\u003C/td>\n\u003Ctd>\u003Ccode>io.modelcontextprotocol/ui\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>ext-apps\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Tasks\u003C/td>\n\u003Ctd>\u003Ccode>io.modelcontextprotocol/tasks\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>ext-tasks\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>OAuth Client Credentials\u003C/td>\n\u003Ctd>\u003Ccode>io.modelcontextprotocol/oauth-client-credentials\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>ext-auth\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Enterprise-Managed Authorization\u003C/td>\n\u003Ctd>\u003Ccode>io.modelcontextprotocol/enterprise-managed-authorization\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>ext-auth\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Skills over MCP\u003C/td>\n\u003Ctd>\u003Ccode>io.modelcontextprotocol/skills\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>ext-skills\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The identifier does not change when the extension moves from one stage to another. A \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"breaking-change\">breaking change\u003C/span> also keeps the identifier. A new identifier, such as \u003Ccode>io.modelcontextprotocol/my-extension-v2\u003C/code>, is used only when the old and new behavior must coexist under one protocol revision. SEP-2133 originally required a new identifier for every breaking change; SEP-3392 replaced that rule.\u003C/p>\n\u003Ch2 id=\"negotiation\" class=\"wiki-heading\">Negotiation\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"negotiation\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"declaring-support\" class=\"wiki-heading\">Declaring support\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"declaring-support\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Support is declared in the \u003Ccode>extensions\u003C/code> field of capabilities: a map from identifiers to settings objects. An empty object means support without settings. Each extension defines the schema of its own settings. In a stateless protocol the client declares extensions in every request, inside \u003Ccode>_meta[&quot;io.modelcontextprotocol/clientCapabilities&quot;]\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;method&quot;: &quot;tools/call&quot;,\n  &quot;params&quot;: {\n    &quot;name&quot;: &quot;get_weather&quot;,\n    &quot;arguments&quot;: { &quot;location&quot;: &quot;New York&quot; },\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {\n        &quot;extensions&quot;: {\n          &quot;io.modelcontextprotocol/ui&quot;: { &quot;mimeTypes&quot;: [&quot;text/html;profile=mcp-app&quot;] },\n          &quot;io.modelcontextprotocol/tasks&quot;: {}\n        }\n      }\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The server declares its extensions in the capabilities returned by \u003Ccode>server/discover\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;supportedVersions&quot;: [&quot;2026-07-28&quot;],\n    &quot;capabilities&quot;: {\n      &quot;tools&quot;: {},\n      &quot;resources&quot;: {},\n      &quot;extensions&quot;: {\n        &quot;io.modelcontextprotocol/ui&quot;: {},\n        &quot;io.modelcontextprotocol/skills&quot;: { &quot;directoryRead&quot;: true }\n      }\n    },\n    &quot;ttlMs&quot;: 3600000,\n    &quot;cacheScope&quot;: &quot;public&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>A server must not assume support declared in an earlier request.\u003C/p>\n\u003Ch3 id=\"versions-with-the-handshake\" class=\"wiki-heading\">Versions with the handshake\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"versions-with-the-handshake\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Before 2026-07-28 many SDKs already exchanged extensions in \u003Ccode>capabilities.extensions\u003C/code> of the \u003Ccode>initialize\u003C/code> request and response. The field is not part of the published schemas of those versions; if the other side omits it, the extension is treated as unsupported.\u003C/p>\n\u003Ch3 id=\"what-extensions-may-add\" class=\"wiki-heading\">What extensions may add\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"what-extensions-may-add\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>An extension may add methods, notifications, \u003Ccode>_meta\u003C/code> keys, settings and values of \u003Ccode>resultType\u003C/code>. The set of \u003Ccode>resultType\u003C/code> values a client accepts consists of the core values plus those of extensions advertised in capabilities. Tasks, for example, reserve the method prefix \u003Ccode>tasks/\u003C/code>, the notification prefix \u003Ccode>notifications/tasks/\u003C/code> and the \u003Ccode>resultType\u003C/code> value \u003Ccode>&quot;task&quot;\u003C/code>.\u003C/p>\n\u003Ch2 id=\"official-experimental-and-third-party-extensions\" class=\"wiki-heading\">Official, experimental and third-party extensions\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"official-experimental-and-third-party-extensions\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>\u003Cstrong>Official extensions\u003C/strong> live in repositories of the \u003Ccode>modelcontextprotocol\u003C/code> GitHub organization with the \u003Ccode>ext-\u003C/code> prefix and use the \u003Ccode>io.modelcontextprotocol\u003C/code> prefix. Each repository lists its Extension Maintainers in \u003Ccode>MAINTAINERS.md\u003C/code>, and each extension is associated with a Working Group or an Interest Group. Core Maintainers keep the authority to change, deprecate or remove any official extension.\u003C/p>\n\u003Cp>\u003Cstrong>Experimental extensions\u003C/strong> are an incubation path for Working Groups and Interest Groups. They live under \u003Ccode>specification/experimental/\u003C/code> of an \u003Ccode>ext-\u003C/code> repository or in a repository with the \u003Ccode>experimental-ext-\u003C/code> prefix. Published packages must show their experimental status, and implementers should pin a tag or commit, because two revisions need not be compatible.\u003C/p>\n\u003Cp>Extensions developed outside the MCP organization are not recognized by MCP governance; SEP-2133 calls them unofficial. They should use a reversed domain of their author as the prefix and follow the same negotiation rules.\u003C/p>\n\u003Ch2 id=\"lifecycle-and-governance\" class=\"wiki-heading\">Lifecycle and governance\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"lifecycle-and-governance\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"stages\" class=\"wiki-heading\">Stages\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"stages\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>SEP-3392 defines the stages of an extension. The directory that holds its specification shows the stage: \u003Ccode>specification/experimental/\u003C/code>, \u003Ccode>specification/beta/\u003C/code> or \u003Ccode>specification/stable/\u003C/code>.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Stage\u003C/th>\n\u003Cth>Allowed changes\u003C/th>\n\u003Cth>Entry\u003C/th>\n\u003Cth>What implementers can expect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Experimental\u003C/td>\n\u003Ctd>Any change at any time\u003C/td>\n\u003Ctd>Added by an Extension Maintainer\u003C/td>\n\u003Ctd>Nothing; the design may disappear\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Beta\u003C/td>\n\u003Ctd>Any change, breaking changes rare and documented\u003C/td>\n\u003Ctd>Extensions Track SEP\u003C/td>\n\u003Ctd>Real use; documented breaking changes\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Stable\u003C/td>\n\u003Ctd>Only with a new core protocol revision\u003C/td>\n\u003Ctd>Second Extensions Track SEP\u003C/td>\n\u003Ctd>Fixed behavior within a protocol revision\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Core\u003C/td>\n\u003Ctd>As for the core specification\u003C/td>\n\u003Ctd>Standards Track SEP\u003C/td>\n\u003Ctd>As for the core specification\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Changes are approved by Extension Maintainers without Core Maintainer review. A Beta extension that makes a breaking change should add or increment a \u003Ccode>revision\u003C/code> string in its settings object, so that peers can detect a mismatch. A Stable extension is published as immutable revisions keyed to core protocol revisions, for example \u003Ccode>specification/stable/&lt;name&gt;/2026-07-28/\u003C/code>.\u003C/p>\n\u003Ch3 id=\"creation-and-promotion\" class=\"wiki-heading\">Creation and promotion\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"creation-and-promotion\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>An extension starts as Experimental. To enter Beta, its authors submit an Extensions Track SEP and state whether the extension is meant to become Stable or to move into the core. At least one reference implementation in an official SDK is required before review, and Core Maintainers decide on acceptance. To become Stable, a second SEP needs two independent, interoperating implementations, one on the client side and one on the server side, and a conformance scenario.\u003C/p>\n\u003Cp>A Standards Track SEP can promote an extension into the core in protocol revision R. For requests that declare R or later the feature is core behavior; for earlier revisions the extension still applies.\u003C/p>\n\u003Ch3 id=\"sdk-support\" class=\"wiki-heading\">SDK support\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"sdk-support\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Supporting extensions is not required for protocol conformance, and SDK maintainers decide which ones to implement. Extensions are disabled by default and require explicit opt-in by the developer.\u003C/p>\n\u003Ch3 id=\"current-stages\" class=\"wiki-heading\">Current stages\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"current-stages\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The table lists the stages of official extensions on the extensions overview page.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Extension\u003C/th>\n\u003Cth>Stage\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>OAuth Client Credentials\u003C/td>\n\u003Ctd>Stable\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Enterprise-Managed Authorization\u003C/td>\n\u003Ctd>Stable\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>MCP Apps\u003C/td>\n\u003Ctd>Stable\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Tasks\u003C/td>\n\u003Ctd>Beta, intended for the core\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Skills over MCP\u003C/td>\n\u003Ctd>Beta, destination not stated\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Server Cards\u003C/td>\n\u003Ctd>Beta, destination not stated\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"tasks\" class=\"wiki-heading\">Tasks\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"tasks\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"purpose\" class=\"wiki-heading\">Purpose\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"purpose\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The \u003Cstrong>Tasks\u003C/strong> extension lets a server answer \u003Ccode>tools/call\u003C/code> with a task handle instead of the final result. A \u003Cstrong>task\u003C/strong> is a durable state machine that carries the execution state of a request and is identified by a \u003Ccode>taskId\u003C/code> generated by the server. The client polls the task and retrieves the result later, also after reconnecting. Only \u003Ccode>tools/call\u003C/code> can create tasks in the current revision.\u003C/p>\n\u003Cp>Creation is decided by the server. The client declares the extension in the capabilities of its requests and must handle both result shapes; there is no separate flag for task creation. A server must not return a task to a client that did not declare the extension.\u003C/p>\n\u003Ch3 id=\"creating-and-polling-a-task\" class=\"wiki-heading\">Creating and polling a task\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"creating-and-polling-a-task\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The examples omit \u003Ccode>_meta\u003C/code> for brevity. A long-running call returns a result with \u003Ccode>resultType: &quot;task&quot;\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;task&quot;,\n    &quot;taskId&quot;: &quot;786512e2-9e0d-44bd-8f29-789f320fe840&quot;,\n    &quot;status&quot;: &quot;working&quot;,\n    &quot;statusMessage&quot;: &quot;Build started.&quot;,\n    &quot;createdAt&quot;: &quot;2026-08-10T10:30:00Z&quot;,\n    &quot;lastUpdatedAt&quot;: &quot;2026-08-10T10:30:00Z&quot;,\n    &quot;ttlMs&quot;: 3600000,\n    &quot;pollIntervalMs&quot;: 5000\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The server must not send this result until the task is durably created, so that a \u003Ccode>tasks/get\u003C/code> for the returned ID succeeds. \u003Ccode>ttlMs\u003C/code> is the lifetime from creation, or \u003Ccode>null\u003C/code> for unlimited. \u003Ccode>pollIntervalMs\u003C/code> is the suggested polling interval, and servers may rate-limit clients that poll more often. The client polls with \u003Ccode>tasks/get\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 2,\n  &quot;method&quot;: &quot;tasks/get&quot;,\n  &quot;params&quot;: { &quot;taskId&quot;: &quot;786512e2-9e0d-44bd-8f29-789f320fe840&quot; }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>On \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span> the client sets the \u003Ccode>Mcp-Name\u003C/code> header of \u003Ccode>tasks/get\u003C/code>, \u003Ccode>tasks/update\u003C/code> and \u003Ccode>tasks/cancel\u003C/code> to the task ID, so that intermediaries can route the request to the instance that holds the task.\u003C/p>\n\u003Ch3 id=\"statuses\" class=\"wiki-heading\">Statuses\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"statuses\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The table lists the statuses of a task.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Status\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003Cth>Additional field\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>working\u003C/code>\u003C/td>\n\u003Ctd>The request is being processed\u003C/td>\n\u003Ctd>None\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>input_required\u003C/code>\u003C/td>\n\u003Ctd>The server needs input from the client\u003C/td>\n\u003Ctd>\u003Ccode>inputRequests\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>completed\u003C/code>\u003C/td>\n\u003Ctd>The request finished; terminal\u003C/td>\n\u003Ctd>\u003Ccode>result\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>failed\u003C/code>\u003C/td>\n\u003Ctd>A JSON-RPC error occurred during execution; terminal\u003C/td>\n\u003Ctd>\u003Ccode>error\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cancelled\u003C/code>\u003C/td>\n\u003Ctd>The task was cancelled; terminal\u003C/td>\n\u003Ctd>None\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A tool result with \u003Ccode>isError: true\u003C/code> is a \u003Ccode>completed\u003C/code> task with the error inside \u003Ccode>result\u003C/code>. The \u003Ccode>failed\u003C/code> status is reserved for \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"protocol-error\">protocol errors\u003C/span>.\u003C/p>\n\u003Ch3 id=\"input-during-execution\" class=\"wiki-heading\">Input during execution\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"input-during-execution\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>When the task needs input, \u003Ccode>tasks/get\u003C/code> returns \u003Ccode>status: &quot;input_required&quot;\u003C/code> and an \u003Ccode>inputRequests\u003C/code> map in the format of \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mrtr\">Multi Round-Trip Requests\u003C/span>. The client answers with \u003Ccode>tasks/update\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 6,\n  &quot;method&quot;: &quot;tasks/update&quot;,\n  &quot;params&quot;: {\n    &quot;taskId&quot;: &quot;786512e2-9e0d-44bd-8f29-789f320fe840&quot;,\n    &quot;inputResponses&quot;: {\n      &quot;approve_deploy&quot;: { &quot;action&quot;: &quot;accept&quot;, &quot;content&quot;: { &quot;approved&quot;: true } }\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The server acknowledges with an empty result that has \u003Ccode>resultType: &quot;complete&quot;\u003C/code>. The acknowledgement is eventually consistent: the status seen by \u003Ccode>tasks/get\u003C/code> may change later. Each key of \u003Ccode>inputRequests\u003C/code> is unique for the lifetime of the task, and the server ignores answers to unknown or already answered keys. A completed task returns the result the original request would have returned:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 9,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;taskId&quot;: &quot;786512e2-9e0d-44bd-8f29-789f320fe840&quot;,\n    &quot;status&quot;: &quot;completed&quot;,\n    &quot;createdAt&quot;: &quot;2026-08-10T10:30:00Z&quot;,\n    &quot;lastUpdatedAt&quot;: &quot;2026-08-10T10:52:00Z&quot;,\n    &quot;ttlMs&quot;: 3600000,\n    &quot;pollIntervalMs&quot;: 5000,\n    &quot;result&quot;: {\n      &quot;content&quot;: [{ &quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;Deployed build 1842 to staging.&quot; }],\n      &quot;isError&quot;: false\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch3 id=\"cancellation-and-notifications\" class=\"wiki-heading\">Cancellation and notifications\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"cancellation-and-notifications\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Ccode>tasks/cancel\u003C/code> signals the intent to cancel. The server must acknowledge it but is not obliged to stop the work, and the task may still reach \u003Ccode>completed\u003C/code>. Instead of polling, a client can open \u003Ccode>subscriptions/listen\u003C/code> with a \u003Ccode>taskIds\u003C/code> filter and receive \u003Ccode>notifications/tasks\u003C/code> with the full task state.\u003C/p>\n\u003Ch3 id=\"differences-from-2025-11-25\" class=\"wiki-heading\">Differences from 2025-11-25\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"differences-from-2025-11-25\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The experimental tasks of 2025-11-25 are not wire-compatible with the extension. The blocking \u003Ccode>tasks/result\u003C/code> method and \u003Ccode>tasks/list\u003C/code> are removed, the \u003Ccode>task\u003C/code> parameter of \u003Ccode>tools/call\u003C/code> is ignored, and the capability declarations \u003Ccode>tasks.requests.*\u003C/code>, \u003Ccode>tasks.cancel\u003C/code> and \u003Ccode>tasks.list\u003C/code> are replaced by the extension identifier. Task IDs must be hard to guess, and every task request is checked for authorization.\u003C/p>\n\u003Ch2 id=\"mcp-apps\" class=\"wiki-heading\">MCP Apps\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"mcp-apps\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"components\" class=\"wiki-heading\">Components\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"components\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Cstrong>MCP Apps\u003C/strong> (\u003Ccode>io.modelcontextprotocol/ui\u003C/code>) let a server deliver an interactive HTML interface that the host renders inside the conversation. The extension combines two primitives: a \u003Cstrong>UI resource\u003C/strong> with the \u003Ccode>ui://\u003C/code> URI scheme and the MIME type \u003Ccode>text/html;profile=mcp-app\u003C/code>, and a tool that refers to that resource in \u003Ccode>_meta.ui.resourceUri\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;name&quot;: &quot;get_weather&quot;,\n  &quot;description&quot;: &quot;Get current weather for a location&quot;,\n  &quot;inputSchema&quot;: {\n    &quot;type&quot;: &quot;object&quot;,\n    &quot;properties&quot;: { &quot;location&quot;: { &quot;type&quot;: &quot;string&quot; } }\n  },\n  &quot;_meta&quot;: {\n    &quot;ui&quot;: {\n      &quot;resourceUri&quot;: &quot;ui://weather-server/dashboard&quot;,\n      &quot;visibility&quot;: [&quot;model&quot;, &quot;app&quot;]\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The host fetches the interface with \u003Ccode>resources/read\u003C/code>, possibly before the tool is called. The resource content may carry \u003Ccode>_meta.ui.csp\u003C/code> with the external origins the interface may contact:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 4,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;contents&quot;: [\n      {\n        &quot;uri&quot;: &quot;ui://weather-server/dashboard&quot;,\n        &quot;mimeType&quot;: &quot;text/html;profile=mcp-app&quot;,\n        &quot;text&quot;: &quot;&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body&gt;...&lt;/body&gt;&lt;/html&gt;&quot;,\n        &quot;_meta&quot;: { &quot;ui&quot;: { &quot;csp&quot;: { &quot;connectDomains&quot;: [&quot;https://api.example.com&quot;] } } }\n      }\n    ],\n    &quot;ttlMs&quot;: 3600000,\n    &quot;cacheScope&quot;: &quot;public&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>\u003Ccode>visibility\u003C/code> controls who can call the tool. The value \u003Ccode>&quot;model&quot;\u003C/code> makes it available to the model, \u003Ccode>&quot;app&quot;\u003C/code> to the interface of the same server. A tool with \u003Ccode>[&quot;app&quot;]\u003C/code> only is excluded from the model's tool list. Resources and tools are covered in \u003Ca href=\"/en/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">MCP resources\u003C/a> and \u003Ca href=\"/en/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">MCP tools\u003C/a>.\u003C/p>\n\u003Ch3 id=\"sandbox\" class=\"wiki-heading\">Sandbox\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"sandbox\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The interface runs in a sandboxed iframe without access to the DOM, cookies or storage of the host. A web host places it behind a sandbox proxy on a different origin. If the resource declares no CSP, the host applies a restrictive default that blocks external connections, and it must not allow domains that were not declared.\u003C/p>\n\u003Ch3 id=\"communication-between-the-interface-and-the-host\" class=\"wiki-heading\">Communication between the interface and the host\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"communication-between-the-interface-and-the-host\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The interface and the host exchange JSON-RPC 2.0 messages over \u003Ccode>postMessage\u003C/code>. The specification describes this as a dialect of MCP in which the interface acts as a client of the host.\u003C/p>\n\u003Cdiv class=\"wiki-code wiki-code--plain\">\u003Cpre>\u003Ccode>Host (AI application)\n |\n +-- MCP client ------ tools/call, resources/read ------ MCP server\n |\n +-- sandbox proxy (separate origin)\n       |\n       +-- iframe with the interface --- postMessage, JSON-RPC\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The exchange starts with \u003Ccode>ui/initialize\u003C/code> and \u003Ccode>ui/notifications/initialized\u003C/code>. The host sends the tool arguments in \u003Ccode>ui/notifications/tool-input\u003C/code> and the result in \u003Ccode>ui/notifications/tool-result\u003C/code>. The interface can call tools of its server with \u003Ccode>tools/call\u003C/code>, which the host forwards and may subject to user approval. It can also send a message to the chat with \u003Ccode>ui/message\u003C/code>, add data to the model's context with \u003Ccode>ui/update-model-context\u003C/code> and ask the host to open a link with \u003Ccode>ui/open-link\u003C/code>. Before removing the interface the host sends \u003Ccode>ui/resource-teardown\u003C/code>.\u003C/p>\n\u003Ch3 id=\"fallback\" class=\"wiki-heading\">Fallback\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"fallback\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A host without MCP Apps support treats the tool as an ordinary tool and shows its text result. For this reason the tool must return meaningful \u003Ccode>content\u003C/code> even when an interface is available, and servers should provide a text-only behavior for every tool with an interface.\u003C/p>\n\u003Ch2 id=\"enterprise-managed-authorization\" class=\"wiki-heading\">Enterprise-Managed Authorization\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"enterprise-managed-authorization\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The \u003Cstrong>Enterprise-Managed Authorization\u003C/strong> extension (\u003Ccode>io.modelcontextprotocol/enterprise-managed-authorization\u003C/code>) makes the organization's identity provider (IdP) the point where access to \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-server\">MCP servers\u003C/span> is decided. Without it, every user authorizes every client on every server separately. With it, administrators define in the IdP which users may use which clients with which servers and scopes. The basics of MCP authorization with OAuth are described in \u003Ca href=\"/en/wiki/mcp/mcp-authorization\" class=\"wiki-link wiki-link--article\">MCP authorization\u003C/a>.\u003C/p>\n\u003Cp>The extension is a profile of the IETF draft Identity Assertion JWT Authorization Grant. The flow has three steps:\u003C/p>\n\u003Col>\n\u003Cli>The user signs in to the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-client\">MCP client\u003C/span> through the enterprise IdP with OpenID Connect or SAML, and the client keeps the identity assertion.\u003C/li>\n\u003Cli>The client sends a token exchange request (RFC 8693) to the IdP with \u003Ccode>requested_token_type\u003C/code> equal to \u003Ccode>urn:ietf:params:oauth:token-type:id-jag\u003C/code>. The IdP evaluates its policies and returns an Identity Assertion JWT Authorization Grant (ID-JAG).\u003C/li>\n\u003Cli>The client presents the ID-JAG to the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"authorization-server\">authorization server\u003C/span> of the MCP server as a JWT bearer grant (RFC 7523) and receives an access token.\u003C/li>\n\u003C/ol>\n\u003Cp>The client does not redirect the user to the authorization server of the MCP server. It learns that the server supports the profile from the value \u003Ccode>urn:ietf:params:oauth:grant-profile:id-jag\u003C/code> in \u003Ccode>authorization_grant_profiles_supported\u003C/code> of the authorization server metadata. The IdP sees only the issuance of the token, not the MCP traffic.\u003C/p>\n\u003Cp>The same repository contains \u003Cstrong>OAuth Client Credentials\u003C/strong> (\u003Ccode>io.modelcontextprotocol/oauth-client-credentials\u003C/code>), an extension for machine-to-machine access without user interaction, such as CI \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"ci-pipeline\">pipelines\u003C/span> and background services.\u003C/p>\n\u003Ch2 id=\"skills-over-mcp\" class=\"wiki-heading\">Skills over MCP\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"skills-over-mcp\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>\u003Cstrong>Skills over MCP\u003C/strong> (\u003Ccode>io.modelcontextprotocol/skills\u003C/code>) let a server publish Agent Skills: directories with a \u003Ccode>SKILL.md\u003C/code> file and supporting files. SEP-2640 has the status Final, and the extensions overview lists the extension as Beta. A server that declares it must also declare \u003Ccode>resources\u003C/code> and implement \u003Ccode>skills/list\u003C/code> and \u003Ccode>skills/get\u003C/code>; the files are read with \u003Ccode>resources/read\u003C/code> under \u003Ccode>skill://\u003C/code> URIs.\u003C/p>\n\u003Cp>Reading \u003Ccode>SKILL.md\u003C/code> does not activate a skill. The host loads it through its own skill path, which verifies the content and asks for user approval where required. The extension requires hosts to treat skill content as untrusted input; risks of instructions in such content are covered in \u003Ca href=\"/en/wiki/ai-testing/prompt-injection\" class=\"wiki-link wiki-link--article\">prompt injection\u003C/a>.\u003C/p>\n\u003Ch2 id=\"behavior-without-extension-support\" class=\"wiki-heading\">Behavior without extension support\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"behavior-without-extension-support\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>If one side supports an extension and the other does not, the supporting side must either fall back to core behavior or reject the request with an error. Extensions should document their fallback. The table lists the behavior defined by each official extension.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Extension\u003C/th>\n\u003Cth>Peer without support\u003C/th>\n\u003Cth>Defined behavior\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Tasks\u003C/td>\n\u003Ctd>Client\u003C/td>\n\u003Ctd>Server returns the ordinary result; task methods return \u003Ccode>-32021\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>MCP Apps\u003C/td>\n\u003Ctd>Host\u003C/td>\n\u003Ctd>Tool works as a text-only tool\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Enterprise-Managed Authorization\u003C/td>\n\u003Ctd>Client\u003C/td>\n\u003Ctd>Server falls back to core authorization or rejects the client\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Skills over MCP\u003C/td>\n\u003Ctd>Server\u003C/td>\n\u003Ctd>Client does not send \u003Ccode>skills/list\u003C/code> or \u003Ccode>skills/get\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Any\u003C/td>\n\u003Ctd>Client sees an unknown \u003Ccode>resultType\u003C/code>\u003C/td>\n\u003Ctd>The result is invalid for the client\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The specification does not define one error code for all extensions.\u003C/p>\n\u003Ch2 id=\"extension-core-feature-and-experimental-capability\" class=\"wiki-heading\">Extension, core feature and experimental capability\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"extension-core-feature-and-experimental-capability\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Three mechanisms add optional behavior to MCP. The table compares them.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Core feature\u003C/th>\n\u003Cth>Extension\u003C/th>\n\u003Cth>Experimental capability\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Where it is specified\u003C/td>\n\u003Ctd>Core specification\u003C/td>\n\u003Ctd>Extension document in an \u003Ccode>ext-\u003C/code> repository\u003C/td>\n\u003Ctd>Not specified\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Declared in\u003C/td>\n\u003Ctd>Named capability, such as \u003Ccode>tools\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>capabilities.extensions\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>capabilities.experimental\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Identifier\u003C/td>\n\u003Ctd>Field name in the schema\u003C/td>\n\u003Ctd>\u003Ccode>vendor-prefix/name\u003C/code>\u003C/td>\n\u003Ctd>Arbitrary key\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Who approves changes\u003C/td>\n\u003Ctd>Core Maintainers\u003C/td>\n\u003Ctd>Extension Maintainers\u003C/td>\n\u003Ctd>Not defined\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Change points\u003C/td>\n\u003Ctd>Protocol revisions\u003C/td>\n\u003Ctd>Depends on the stage\u003C/td>\n\u003Ctd>Any time\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Required for conformance\u003C/td>\n\u003Ctd>Per the specification\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Not defined\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Changes to a core feature go through SEPs approved by Core Maintainers, and its deprecation follows the feature lifecycle policy described in \u003Ca href=\"/en/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">Stateless MCP\u003C/a>.\u003C/p>\n\u003Cp>The \u003Ccode>experimental\u003C/code> field of \u003Ccode>ClientCapabilities\u003C/code> and \u003Ccode>ServerCapabilities\u003C/code> holds non-standard capabilities as a map of names to objects. The schema defines no process, prefix or document for them, while an experimental extension has a Working Group, a repository and a path to Beta.\u003C/p>\n\u003Ch2 id=\"terms\" class=\"wiki-heading\">Terms\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"terms\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Term\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>MCP extension\u003C/td>\n\u003Ctd>Optional addition to the specification outside the core protocol, declared in capabilities\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Extension identifier\u003C/td>\n\u003Ctd>String of the form \u003Ccode>vendor-prefix/name\u003C/code> that identifies an extension in capabilities\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Official extension\u003C/td>\n\u003Ctd>Extension in an \u003Ccode>ext-\u003C/code> repository of the MCP organization with the \u003Ccode>io.modelcontextprotocol\u003C/code> prefix\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Experimental extension\u003C/td>\n\u003Ctd>Extension in incubation with no stability promise, linked to a Working or Interest Group\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Extension stage\u003C/td>\n\u003Ctd>Maturity level of an extension: Experimental, Beta or Stable\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Task\u003C/td>\n\u003Ctd>Durable state of a long-running request that the client polls by \u003Ccode>taskId\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UI resource\u003C/td>\n\u003Ctd>Resource with a \u003Ccode>ui://\u003C/code> URI that contains an HTML interface for MCP Apps\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>ID-JAG\u003C/td>\n\u003Ctd>Identity Assertion JWT Authorization Grant: token from the enterprise IdP exchanged for an access token\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Skill\u003C/td>\n\u003Ctd>Directory with \u003Ccode>SKILL.md\u003C/code> and supporting files served by the Skills extension\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"sources\" class=\"wiki-heading\">Sources\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"sources\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/overview\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Extensions Overview\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Versioning and Compatibility: extension negotiation, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key Changes, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.ts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">TypeScript schema, version 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/seps/2133-extensions\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">SEP-2133: Extensions\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/seps/3392-extension-lifecycle\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">SEP-3392: Extension Lifecycle\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/tasks/overview\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Tasks\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/seps/2663-tasks-extension\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">SEP-2663: Tasks Extension\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/modelcontextprotocol/ext-tasks/blob/main/schema/2026-07-28/schema.ts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Tasks Extension schema, version 2026-07-28, GitHub\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/apps/overview\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Apps\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Apps specification, revision 2026-01-26, GitHub\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Apps - Bringing UI Capabilities To MCP Clients, MCP blog, 26 January 2026\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/auth/enterprise-managed-authorization\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Enterprise-Managed Authorization\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/modelcontextprotocol/ext-auth/blob/main/specification/stable/enterprise-managed-authorization/2026-07-28/enterprise-managed-authorization.mdx\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Enterprise-Managed Authorization specification, revision 2026-07-28, GitHub\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/skills/overview\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Skills\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://blog.modelcontextprotocol.io/posts/2026-07-28/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">The 2026-07-28 Specification, MCP blog, 28 July 2026\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003C/ul>\n",[10,14,17,20,23,26,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105],{"id":11,"level":12,"text":13},"overview",2,"Overview",{"id":15,"level":12,"text":16},"the-problem-extensions-solve","The problem extensions solve",{"id":18,"level":12,"text":19},"history","History",{"id":21,"level":12,"text":22},"extension-identifiers","Extension identifiers",{"id":24,"level":12,"text":25},"negotiation","Negotiation",{"id":27,"level":28,"text":29},"declaring-support",3,"Declaring support",{"id":31,"level":28,"text":32},"versions-with-the-handshake","Versions with the handshake",{"id":34,"level":28,"text":35},"what-extensions-may-add","What extensions may add",{"id":37,"level":12,"text":38},"official-experimental-and-third-party-extensions","Official, experimental and third-party extensions",{"id":40,"level":12,"text":41},"lifecycle-and-governance","Lifecycle and governance",{"id":43,"level":28,"text":44},"stages","Stages",{"id":46,"level":28,"text":47},"creation-and-promotion","Creation and promotion",{"id":49,"level":28,"text":50},"sdk-support","SDK support",{"id":52,"level":28,"text":53},"current-stages","Current stages",{"id":55,"level":12,"text":56},"tasks","Tasks",{"id":58,"level":28,"text":59},"purpose","Purpose",{"id":61,"level":28,"text":62},"creating-and-polling-a-task","Creating and polling a task",{"id":64,"level":28,"text":65},"statuses","Statuses",{"id":67,"level":28,"text":68},"input-during-execution","Input during execution",{"id":70,"level":28,"text":71},"cancellation-and-notifications","Cancellation and notifications",{"id":73,"level":28,"text":74},"differences-from-2025-11-25","Differences from 2025-11-25",{"id":76,"level":12,"text":77},"mcp-apps","MCP Apps",{"id":79,"level":28,"text":80},"components","Components",{"id":82,"level":28,"text":83},"sandbox","Sandbox",{"id":85,"level":28,"text":86},"communication-between-the-interface-and-the-host","Communication between the interface and the host",{"id":88,"level":28,"text":89},"fallback","Fallback",{"id":91,"level":12,"text":92},"enterprise-managed-authorization","Enterprise-Managed Authorization",{"id":94,"level":12,"text":95},"skills-over-mcp","Skills over MCP",{"id":97,"level":12,"text":98},"behavior-without-extension-support","Behavior without extension support",{"id":100,"level":12,"text":101},"extension-core-feature-and-experimental-capability","Extension, core feature and experimental capability",{"id":103,"level":12,"text":104},"terms","Terms",{"id":106,"level":12,"text":107},"sources","Sources",2902,1793718895635]