{"slug":"mcp-drops-session-state-to-become-routable-infrastructure","citations":[{"url":"https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/","committed_hash":"sha256:cbf7af555bd7e02d087dc5da6e31b48ecbfa5b8c0667ad1a318722590059930a","committed_hash_short":"sha256:cbf7af55…0059930a","mime_type":"text/html","committed_at":"2026-07-28T00:00:21.147194+00:00","content_snapshot":"<!doctype html><html lang=en dir=auto><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content=\"IE=edge\"><meta name=viewport content=\"width=device-width,initial-scale=1,shrink-to-fit=no\"><meta name=robots content=\"index, follow\"><title>The 2026-07-28 MCP Specification Release Candidate | Model Context Protocol Blog</title><meta name=keywords content=\"mcp,spec,release,protocol\"><meta name=description content=\"The release candidate for the next Model Context Protocol (MCP) specification is now available: a stateless protocol core, the Extensions framework, Tasks, MCP Apps, authorization hardening, and a formal deprecation policy.\"><meta name=author content=\"David Soria Parra (Lead Maintainer), Den Delimarsky (Lead Maintainer)\"><link rel=canonical href=https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/><link crossorigin=anonymous href=/assets/css/stylesheet.523d219e00d28c77a217c0daf61491b55ff7065521fb50db0920ebf5e48c6618.css integrity=\"sha256-Uj0hngDSjHeiF8Da9hSRtV/3BlUh+1DbCSDr9eSMZhg=\" rel=\"preload stylesheet\" as=style><link rel=icon href=https://blog.modelcontextprotocol.io/favicon.svg><link rel=icon type=image/png sizes=16x16 href=https://blog.modelcontextprotocol.io/favicon.svg><link rel=icon type=image/png sizes=32x32 href=https://blog.modelcontextprotocol.io/favicon.svg><link rel=apple-touch-icon href=https://blog.modelcontextprotocol.io/favicon.svg><link rel=mask-icon href=https://blog.modelcontextprotocol.io/favicon.svg><meta name=theme-color content=\"#2e2e33\"><meta name=msapplication-TileColor content=\"#2e2e33\"><link rel=alternate hreflang=en href=https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><meta property=\"og:url\" content=\"https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/\"><meta property=\"og:site_name\" content=\"Model Context Protocol Blog\"><meta property=\"og:title\" content=\"The 2026-07-28 MCP Specification Release Candidate\"><meta property=\"og:description\" content=\"The release candidate for the next Model Context Protocol (MCP) specification is now available: a stateless protocol core, the Extensions framework, Tasks, MCP Apps, authorization hardening, and a formal deprecation policy.\"><meta property=\"og:locale\" content=\"en-us\"><meta property=\"og:type\" content=\"article\"><meta property=\"article:section\" content=\"posts\"><meta property=\"article:published_time\" content=\"2026-05-21T09:00:00+00:00\"><meta property=\"article:modified_time\" content=\"2026-07-24T22:54:18+03:00\"><meta property=\"article:tag\" content=\"Mcp\"><meta property=\"article:tag\" content=\"Spec\"><meta property=\"article:tag\" content=\"Release\"><meta property=\"article:tag\" content=\"Protocol\"><meta property=\"og:image\" content=\"https://blog.modelcontextprotocol.io/og-image.png\"><meta name=twitter:card content=\"summary_large_image\"><meta name=twitter:image content=\"https://blog.modelcontextprotocol.io/og-image.png\"><meta name=twitter:title content=\"The 2026-07-28 MCP Specification Release Candidate\"><meta name=twitter:description content=\"The release candidate for the next Model Context Protocol (MCP) specification is now available: a stateless protocol core, the Extensions framework, Tasks, MCP Apps, authorization hardening, and a formal deprecation policy.\"><script type=application/ld+json>{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"item\":\"https://blog.modelcontextprotocol.io/\",\"name\":\"Model Context Protocol Blog\",\"position\":1},{\"@type\":\"ListItem\",\"item\":\"https://blog.modelcontextprotocol.io/posts/\",\"name\":\"Posts\",\"position\":2},{\"@type\":\"ListItem\",\"item\":\"https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/\",\"name\":\"The 2026-07-28 MCP Specification Release Candidate\",\"position\":3}]}</script><script type=application/ld+json>{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"The 2026-07-28 MCP Specification Release Candidate\",\"name\":\"The 2026-07-28 MCP Specification Release Candidate\",\"description\":\"The release candidate for the next Model Context Protocol (MCP) specification is now available: a stateless protocol core, the Extensions framework, Tasks, MCP Apps, authorization hardening, and a formal deprecation policy.\",\"keywords\":[\"mcp\",\"spec\",\"release\",\"protocol\"],\"articleBody\":\"The release candidate for MCP 2026-07-28 is now available. It is the largest revision of the protocol since launch and delivers on the 2026 roadmap:\\na stateless core that scales on ordinary HTTP infrastructure extensions including server-rendered UIs through MCP Apps and long-running work through the Tasks extension authorization that aligns more closely with OAuth and OpenID Connect deployments a formal deprecation policy so the protocol can evolve without breaking what you’ve built, and many other changes.\\nThe practical effect on a production deployment is immediate. A remote MCP server that previously needed sticky sessions, a shared session store, and deep packet inspection at the gateway can now run behind a plain round-robin load balancer, route traffic on an Mcp-Method header, and let clients cache tools/list responses for as long as the server’s ttlMs permits.\\nThe release candidate is available today and the final specification ships on July 28, 2026. This release contains breaking changes; see Release Timeline and Validation for the details.\\nA Stateless Protocol The headline change is that MCP is now stateless at the protocol layer. Six Specification Enhancement Proposals (SEPs) work together to get there, completing the plan we laid out in The Future of MCP Transports in December.\\nBefore and after In 2025-11-25, calling a tool over Streamable HTTP means establishing a session first:\\nPOST /mcp HTTP/1.1 Content-Type: application/json {\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":1,\\\"method\\\":\\\"initialize\\\", \\\"params\\\":{\\\"protocolVersion\\\":\\\"2025-11-25\\\",\\\"capabilities\\\":{}, \\\"clientInfo\\\":{\\\"name\\\":\\\"my-app\\\",\\\"version\\\":\\\"1.0\\\"}}} The server responds with an Mcp-Session-Id that every subsequent request must carry, pinning the client to whichever instance issued it:\\nPOST /mcp HTTP/1.1 Mcp-Session-Id: 1868a90c-3a3f-4f5b Content-Type: application/json {\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":2,\\\"method\\\":\\\"tools/call\\\", \\\"params\\\":{\\\"name\\\":\\\"search\\\",\\\"arguments\\\":{\\\"q\\\":\\\"otters\\\"}}} In 2026-07-28, the same call is a single self-contained request that any server instance can handle:\\nPOST /mcp HTTP/1.1 MCP-Protocol-Version: 2026-07-28 Mcp-Method: tools/call Mcp-Name: search Content-Type: application/json {\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":1,\\\"method\\\":\\\"tools/call\\\", \\\"params\\\":{\\\"name\\\":\\\"search\\\",\\\"arguments\\\":{\\\"q\\\":\\\"otters\\\"}, \\\"_meta\\\":{\\\"io.modelcontextprotocol/clientInfo\\\":{\\\"name\\\":\\\"my-app\\\",\\\"version\\\":\\\"1.0\\\"}}}} The handshake and session are gone The initialize/initialized handshake is removed (SEP-2575). The protocol version, client info, and client capabilities that used to be exchanged once at connection time now travel in _meta on every request, and a new server/discover method lets clients fetch server capabilities when they need them up front.\\nThe Mcp-Session-Id header and the protocol-level session that came with it are also removed (SEP-2567). With both gone, any MCP request can land on any server instance, and the sticky routing and shared session stores that horizontal deployments needed before are no longer required at the protocol layer.\\nStateless protocol, stateful applications Removing the protocol-level session does not mean your application has to be stateless. Servers that need to carry state across calls can do what HTTP APIs have always done: mint an explicit handle (a basket_id, a browser_id) from a tool and have the model pass it back as an ordinary argument on later calls.\\nIn practice, we’ve found this pattern (the model threading an identifier from one tool call to the next) to be more than just a workable substitute for session state. It’s often a more powerful one. The model can compose handles across tools, reason about them, and hand them off between steps in ways that externally managed session state, hidden in transport metadata, never really allowed.\\nThe protocol no longer manages that state for you, but it doesn’t prevent you from managing it yourself. The explicit-handle pattern simply makes the state visible to the model rather than hidden away.\\nServer-to-client requests, restructured A stateless protocol still needs a way for servers to ask the client for something mid-call, such as an elicitation prompt. Two SEPs rebuild that flow so it works without a persistent connection.\\nServer-initiated requests may now only be issued while the server is actively processing a client request (SEP-2260). Earlier spec versions recommended this; it’s now required. A user is never prompted out of nowhere, and every elicitation traces back to something they (or their agent) started.\\nMulti Round-Trip Requests (SEP-2322) change how those prompts are delivered. Instead of holding a Server-Sent Events (SSE) stream open, the server returns an InputRequiredResult:\\n{ \\\"resultType\\\": \\\"input_required\\\", \\\"inputRequests\\\": { \\\"confirm\\\": { \\\"type\\\": \\\"elicitation\\\", \\\"message\\\": \\\"Delete 3 files?\\\", \\\"schema\\\": { \\\"type\\\": \\\"boolean\\\" } } }, \\\"requestState\\\": \\\"eyJzdGVwIjoxLCJmaWxlcyI6WyJhIiwiYiIsImMiXX0=\\\" } The client gathers the answers and re-issues the original call with inputResponses and the echoed requestState. Any server instance can pick that retry up because everything it needs is in the payload.\\nRoutable, cacheable, traceable Three smaller changes make the resulting traffic easier to operate.\\nThe Streamable HTTP transport now requires Mcp-Method and Mcp-Name headers (SEP-2243) so load balancers, gateways, and rate-limiters can route on the operation without inspecting the body. Servers reject requests where the headers and body disagree.\\nList and resource read results now carry ttlMs and cacheScope (SEP-2549), modeled on HTTP Cache-Control. Clients know exactly how long a tools/list response is fresh and whether it’s safe to share across users, and a long-lived SSE stream is no longer the only way to learn that a list changed.\\nW3C Trace Context propagation in _meta is now documented (SEP-414), locking down the traceparent, tracestate, and baggage key names so distributed traces correlate across SDKs and gateways. Several SDKs and tools were already doing this; with the key names fixed in the spec, a trace that starts in a host application can follow a tool call through the client SDK, the MCP server, and whatever the server calls downstream, and show up as a single span tree in an OpenTelemetry-compatible backend.\\nExtensions Become First-Class Extensions existed in the 2025-11-25 release but had no formal process behind them. SEP-2133 adds that: extensions are identified by reverse-DNS IDs, negotiated through an extensions map on client and server capabilities, live in their own ext-* repositories with delegated maintainers, and version independently of the specification. A new Extensions Track in the SEP process gives them a path from experimental to official.\\nThis release includes two official extensions.\\nMCP Apps: server-rendered user interfaces MCP Apps (SEP-1865) lets servers ship interactive HTML interfaces that hosts render in a sandboxed iframe. Tools declare their UI templates ahead of time so hosts can prefetch, cache, and security-review them before anything runs. The rendered UI talks back to the host over the same JSON-RPC base protocol used everywhere else in MCP, so every UI-initiated action goes through the same audit and consent path as a direct tool call.\\nTasks graduates to an extension Tasks shipped as an experimental core feature in 2025-11-25. Production use surfaced enough redesign that the right home for it is an extension rather than the specification.\\nThe Tasks extension reshapes the lifecycle around the stateless model: a server can answer tools/call with a task handle, and the client drives it with tasks/get, tasks/update, and tasks/cancel. Task creation is server-directed: the client advertises the extension and the server decides when a call should run as a task. tasks/list is removed because it can’t be scoped safely without sessions.\\nAnyone who shipped against the 2025-11-25 experimental Tasks API will need to migrate to the new lifecycle.\\nAuthorization Hardening Six SEPs harden the authorization specification to align more closely with how OAuth 2.0 and OpenID Connect are deployed in practice.\\nClients must now validate the iss parameter on authorization responses per RFC 9207 (SEP-2468). This is a low-cost mitigation for a class of mix-up attack that is more prevalent in MCP’s single-client, many-server deployment pattern. In a future version, clients will be expected to reject responses that omit iss, so authorization servers should begin supplying it now if they don’t already.\\nClients now declare their OpenID Connect application_type during Dynamic Client Registration (SEP-837), avoiding the common case where an authorization server defaults a desktop or CLI client to \\\"web\\\" and rejects its localhost redirect URI. Clients bind registered credentials to the issuing authorization server’s issuer and re-register when a resource migrates between authorization servers (SEP-2352). The spec also documents how to request refresh tokens from OpenID Connect-style authorization servers (SEP-2207), and clarifies scope accumulation during step-up (SEP-2350) and the .well-known discovery suffix (SEP-2351).\\nRoots, Sampling, and Logging Are Deprecated Three core features are deprecated under the new feature lifecycle policy (SEP-2577):\\nFeature Replacement Roots Tool parameters, resource URIs, or server configuration Sampling Direct integration with LLM provider APIs Logging stderr for stdio transports; OpenTelemetry for structured observability These are annotation-only deprecations. The methods, types, and capability flags continue to work in this release and in every specification version published within a year of it, and removing any of them will require a separate SEP under the lifecycle policy.\\nFull JSON Schema 2020-12 for Tools Tool inputSchema and outputSchema are lifted to full JSON Schema 2020-12 (SEP-2106). Input schemas keep the type: \\\"object\\\" root constraint but now allow composition (oneOf, anyOf, allOf), conditionals, and references ($ref, $defs). Output schemas are unrestricted, and structuredContent can now be any JSON value rather than only an object. Implementations must not auto-dereference external $ref URIs and should bound schema depth and validation time.\\nSeparately, the error code for a missing resource changes from the MCP-custom -32002 to the JSON-RPC standard -32602 Invalid Params (SEP-2164). If your client matches on the literal -32002 value, update it.\\nHow the Protocol Evolves From Here This release contains breaking changes. We don’t intend for that to be the norm.\\nThree governance SEPs in this release are designed so that future revisions can evolve the protocol without breaking core capabilities. The feature lifecycle policy gives every feature an Active, Deprecated, and Removed lifecycle with at least twelve months between deprecation and the earliest possible removal. The Extensions framework means new capabilities can ship as opt-in extensions and stabilize there before, if ever, moving into the specification. And a Standards Track SEP can no longer reach Final status until a matching scenario lands in the conformance suite (SEP-2484), which is the same suite the new SDK tier system scores official SDKs against.\\nThe stateless rework in this release is the kind of foundational change that needed a clean break. With it landed, and with deprecation windows and extensions as the standard tools going forward, our expectation is that implementers targeting 2026-07-28 will be able to adopt future revisions without rewriting their transport or lifecycle code.\\nRelease Timeline and Validation The release candidate is locked as of May 21, 2026. The final specification will be published on July 28, 2026. The ten-week window is for SDK maintainers and client implementers to validate the changes against real workloads; under the SDK tier system, Tier 1 SDKs are expected to ship support within this window.\\nThe full release candidate is in the draft specification, and the changelog will list every change against 2025-11-25.\\nIf you find a problem, open an issue in the specification repository. For implementation questions, the relevant Working Group channel in the contributor Discord is the fastest path to an answer.\\nLooking Ahead This release gives MCP the foundation we expect it to grow on for a long time: a protocol that runs statelessly on commodity HTTP infrastructure, an extensions framework where capabilities like Tasks and MCP Apps can ship on their own timeline, and a lifecycle policy that lets implementers build on 2026-07-28 knowing what they ship will keep working.\\nThank you to everyone who shaped these proposals through the Working Groups and a great deal of patient review. We’re looking forward to making this final with the community on July 28.\\n\",\"wordCount\":1864,\"inLanguage\":\"en\",\"image\":\"https://blog.modelcontextprotocol.io/og-image.png\",\"datePublished\":\"2026-05-21T09:00:00Z\",\"dateModified\":\"2026-07-24T22:54:18+03:00\",\"author\":[{\"@type\":\"Person\",\"name\":\"David Soria Parra (Lead Maintainer)\"},{\"@type\":\"Person\",\"name\":\"Den Delimarsky (Lead Maintainer)\"}],\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Model Context Protocol Blog\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://blog.modelcontextprotocol.io/favicon.svg\"}}}</script></head><body id=top><a class=skip-link href=#main-content>Skip to content</a>\n<script>localStorage.getItem(\"pref-theme\")===\"dark\"?document.body.classList.add(\"dark\"):localStorage.getItem(\"pref-theme\")===\"light\"?document.body.classList.remove(\"dark\"):window.matchMedia(\"(prefers-color-scheme: dark)\").matches&&document.body.classList.add(\"dark\")</script><header class=header><nav class=nav><div class=logo><a href=https://blog.modelcontextprotocol.io/ accesskey=h title=\"Model Context Protocol Blog (Alt + H)\"><svg class=\"logo-svg\" width=\"28\" height=\"28\" viewBox=\"0 0 180 180\" fill=\"none\" aria-hidden=\"true\"><path d=\"M23.5996 85.2532 86.2021 22.6507C94.8457 14.0071 108.86 14.0071 117.503 22.6507 126.147 31.2942 126.147 45.3083 117.503 53.9519L70.2254 101.23\" stroke=\"currentColor\" stroke-width=\"12\" stroke-linecap=\"round\"/><path d=\"M70.8789 100.578 117.504 53.952C126.148 45.3083 140.163 45.3083 148.806 53.952L149.132 54.278C157.776 62.9216 157.776 76.9357 149.132 85.5792L92.5139 142.198C89.6327 145.079 89.6327 149.75 92.5139 152.631L104.14 164.257\" stroke=\"currentColor\" stroke-width=\"12\" stroke-linecap=\"round\"/><path d=\"M101.853 38.3013l-46.3 46.2998C46.9094 93.2447 46.9094 107.258 55.553 115.902 64.1966 124.546 78.2106 124.546 86.8543 115.902L133.154 69.6025\" stroke=\"currentColor\" stroke-width=\"12\" stroke-linecap=\"round\"/></svg>Model Context Protocol Blog</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://modelcontextprotocol.io/docs title=Documentation><span>Documentation</span>&nbsp;\n<svg fill=\"none\" shape-rendering=\"geometricPrecision\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" viewBox=\"0 0 24 24\" height=\"12\" width=\"12\"><path d=\"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6\"/><path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/></svg></a></li><li><a href=https://blog.modelcontextprotocol.io/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://blog.modelcontextprotocol.io/archives/ title=Archives><span>Archives</span></a></li><li><a href=https://blog.modelcontextprotocol.io/search/ title=\"Search (Alt + /)\" accesskey=/><span>Search</span></a></li><li class=menu-break aria-hidden=true></li><li><button id=theme-toggle accesskey=t title=\"(Alt + T)\" aria-label=\"Toggle theme\">\n<svg id=\"moon\" width=\"24\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z\"/></svg>\n<svg id=\"sun\" width=\"24\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"5\"/><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/></svg></button></li><li><a class=menu-icon href=/index.xml title=RSS aria-label=RSS><svg width=\"24\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 11a9 9 0 019 9\"/><path d=\"M4 4a16 16 0 0116 16\"/><circle cx=\"5\" cy=\"19\" r=\"1\"/></svg></a></li><li><a class=menu-icon href=https://github.com/modelcontextprotocol title=GitHub aria-label=GitHub><svg width=\"24\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22\"/></svg></a></li><li><a class=menu-icon href=https://linkedin.com/company/modelcontextprotocol title=LinkedIn aria-label=LinkedIn><svg width=\"24\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z\"/><rect x=\"2\" y=\"9\" width=\"4\" height=\"12\"/><circle cx=\"4\" cy=\"4\" r=\"2\"/></svg></a></li></ul></nav></header><main class=main id=main-content><article class=post-single><header class=post-header><div class=breadcrumbs><a href=https://blog.modelcontextprotocol.io/>Home</a>&nbsp;»&nbsp;<a href=https://blog.modelcontextprotocol.io/posts/>Posts</a></div><h1 class=\"post-title entry-hint-parent\">The 2026-07-28 MCP Specification Release Candidate</h1><div class=post-description>The release candidate for the next Model Context Protocol (MCP) specification is now available: a stateless protocol core, the Extensions framework, Tasks, MCP Apps, authorization hardening, and a formal deprecation policy.</div><div class=post-meta>May 21, 2026&nbsp;·&nbsp;9 min&nbsp;·&nbsp;David Soria Parra (Lead Maintainer), Den Delimarsky (Lead Maintainer)</div></header><div class=toc><details><summary accesskey=c title=\"(Alt + C)\"><span class=details>Table of Contents</span></summary><div class=inner><ul><li><a href=#a-stateless-protocol aria-label=\"A Stateless Protocol\">A Stateless Protocol</a><ul><li><a href=#before-and-after aria-label=\"Before and after\">Before and after</a></li><li><a href=#the-handshake-and-session-are-gone aria-label=\"The handshake and session are gone\">The handshake and session are gone</a></li><li><a href=#stateless-protocol-stateful-applications aria-label=\"Stateless protocol, stateful applications\">Stateless protocol, stateful applications</a></li><li><a href=#server-to-client-requests-restructured aria-label=\"Server-to-client requests, restructured\">Server-to-client requests, restructured</a></li><li><a href=#routable-cacheable-traceable aria-label=\"Routable, cacheable, traceable\">Routable, cacheable, traceable</a></li></ul></li><li><a href=#extensions-become-first-class aria-label=\"Extensions Become First-Class\">Extensions Become First-Class</a><ul><li><a href=#mcp-apps-server-rendered-user-interfaces aria-label=\"MCP Apps: server-rendered user interfaces\">MCP Apps: server-rendered user interfaces</a></li><li><a href=#tasks-graduates-to-an-extension aria-label=\"Tasks graduates to an extension\">Tasks graduates to an extension</a></li></ul></li><li><a href=#authorization-hardening aria-label=\"Authorization Hardening\">Authorization Hardening</a></li><li><a href=#roots-sampling-and-logging-are-deprecated aria-label=\"Roots, Sampling, and Logging Are Deprecated\">Roots, Sampling, and Logging Are Deprecated</a></li><li><a href=#full-json-schema-2020-12-for-tools aria-label=\"Full JSON Schema 2020-12 for Tools\">Full JSON Schema 2020-12 for Tools</a></li><li><a href=#how-the-protocol-evolves-from-here aria-label=\"How the Protocol Evolves From Here\">How the Protocol Evolves From Here</a></li><li><a href=#release-timeline-and-validation aria-label=\"Release Timeline and Validation\">Release Timeline and Validation</a></li><li><a href=#looking-ahead aria-label=\"Looking Ahead\">Looking Ahead</a></li></ul></div></details></div><div class=post-content><p>The release candidate for MCP <strong><code>2026-07-28</code></strong> is now available. It is the largest\nrevision of the protocol since launch and delivers on the\n<a href=/posts/2026-mcp-roadmap/>2026 roadmap</a>:</p><ul><li><strong>a stateless core</strong> that scales on ordinary HTTP infrastructure</li><li><strong>extensions</strong> including server-rendered UIs through <a href=#mcp-apps-server-rendered-user-interfaces>MCP Apps</a> and long-running work through the <a href=#tasks-graduates-to-an-extension>Tasks extension</a></li><li><strong>authorization</strong> that aligns more closely with OAuth and OpenID Connect deployments</li><li><strong>a formal deprecation policy</strong> so the protocol can evolve without breaking what you&rsquo;ve\nbuilt,</li></ul><p>and many other changes.</p><p>The practical effect on a production deployment is immediate. A remote MCP\nserver that previously needed sticky sessions, a shared session store, and\ndeep packet inspection at the gateway can now run behind a plain round-robin\nload balancer, route traffic on an <code>Mcp-Method</code> header, and let clients cache\n<code>tools/list</code> responses for as long as the server&rsquo;s <code>ttlMs</code> permits.</p><blockquote><p>The release candidate is available today and the final specification ships on\n<strong>July 28, 2026</strong>. This release contains breaking changes; see\n<a href=#release-timeline-and-validation>Release Timeline and Validation</a> for the\ndetails.</p></blockquote><h2 id=a-stateless-protocol>A Stateless Protocol<a hidden class=anchor aria-hidden=true href=#a-stateless-protocol>#</a></h2><p>The headline change is that MCP is now stateless at the protocol layer. Six\n<a href=https://modelcontextprotocol.io/community/sep-guidelines>Specification Enhancement Proposals</a>\n(SEPs) work together to get there, completing the plan we laid out in\n<a href=/posts/2025-12-19-mcp-transport-future/>The Future of MCP Transports</a> in\nDecember.</p><p><img alt=\"Before: a client routed through a load balancer with a sticky route to one MCP server instance, all instances sharing a session store. After: the same client routed to any of three MCP server instances with no session store.\" loading=lazy src=/posts/images/2026-07-28-rc/stateless-topology.svg></p><h3 id=before-and-after>Before and after<a hidden class=anchor aria-hidden=true href=#before-and-after>#</a></h3><p>In <a href=/posts/2025-11-25-first-mcp-anniversary/><code>2025-11-25</code></a>, calling a tool over\nStreamable HTTP means establishing a session first:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-http data-lang=http><span style=display:flex><span><span style=color:#a6e22e>POST</span> /mcp <span style=color:#66d9ef>HTTP</span><span style=color:#f92672>/</span><span style=color:#ae81ff>1.1</span>\n</span></span><span style=display:flex><span>Content-Type<span style=color:#f92672>:</span> <span style=color:#ae81ff>application/json</span>\n</span></span><span style=display:flex><span>\n</span></span><span style=display:flex><span>{<span style=color:#f92672>&#34;jsonrpc&#34;</span>:<span style=color:#e6db74>&#34;2.0&#34;</span>,<span style=color:#f92672>&#34;id&#34;</span>:<span style=color:#ae81ff>1</span>,<span style=color:#f92672>&#34;method&#34;</span>:<span style=color:#e6db74>&#34;initialize&#34;</span>,\n</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>:{<span style=color:#f92672>&#34;protocolVersion&#34;</span>:<span style=color:#e6db74>&#34;2025-11-25&#34;</span>,<span style=color:#f92672>&#34;capabilities&#34;</span>:{},\n</span></span><span style=display:flex><span>           <span style=color:#f92672>&#34;clientInfo&#34;</span>:{<span style=color:#f92672>&#34;name&#34;</span>:<span style=color:#e6db74>&#34;my-app&#34;</span>,<span style=color:#f92672>&#34;version&#34;</span>:<span style=color:#e6db74>&#34;1.0&#34;</span>}}}\n</span></span></code></pre></div><p>The server responds with an <code>Mcp-Session-Id</code> that every subsequent request must\ncarry, pinning the client to whichever instance issued it:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-http data-lang=http><span style=display:flex><span><span style=color:#a6e22e>POST</span> /mcp <span style=color:#66d9ef>HTTP</span><span style=color:#f92672>/</span><span style=color:#ae81ff>1.1</span>\n</span></span><span style=display:flex><span>Mcp-Session-Id<span style=color:#f92672>:</span> <span style=color:#ae81ff>1868a90c-3a3f-4f5b</span>\n</span></span><span style=display:flex><span>Content-Type<span style=color:#f92672>:</span> <span style=color:#ae81ff>application/json</span>\n</span></span><span style=display:flex><span>\n</span></span><span style=display:flex><span>{<span style=color:#f92672>&#34;jsonrpc&#34;</span>:<span style=color:#e6db74>&#34;2.0&#34;</span>,<span style=color:#f92672>&#34;id&#34;</span>:<span style=color:#ae81ff>2</span>,<span style=color:#f92672>&#34;method&#34;</span>:<span style=color:#e6db74>&#34;tools/call&#34;</span>,\n</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>:{<span style=color:#f92672>&#34;name&#34;</span>:<span style=color:#e6db74>&#34;search&#34;</span>,<span style=color:#f92672>&#34;arguments&#34;</span>:{<span style=color:#f92672>&#34;q&#34;</span>:<span style=color:#e6db74>&#34;otters&#34;</span>}}}\n</span></span></code></pre></div><p>In <code>2026-07-28</code>, the same call is a single self-contained request that any\nserver instance can handle:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-http data-lang=http><span style=display:flex><span><span style=color:#a6e22e>POST</span> /mcp <span style=color:#66d9ef>HTTP</span><span style=color:#f92672>/</span><span style=color:#ae81ff>1.1</span>\n</span></span><span style=display:flex><span>MCP-Protocol-Version<span style=color:#f92672>:</span> <span style=color:#ae81ff>2026-07-28</span>\n</span></span><span style=display:flex><span>Mcp-Method<span style=color:#f92672>:</span> <span style=color:#ae81ff>tools/call</span>\n</span></span><span style=display:flex><span>Mcp-Name<span style=color:#f92672>:</span> <span style=color:#ae81ff>search</span>\n</span></span><span style=display:flex><span>Content-Type<span style=color:#f92672>:</span> <span style=color:#ae81ff>application/json</span>\n</span></span><span style=display:flex><span>\n</span></span><span style=display:flex><span>{<span style=color:#f92672>&#34;jsonrpc&#34;</span>:<span style=color:#e6db74>&#34;2.0&#34;</span>,<span style=color:#f92672>&#34;id&#34;</span>:<span style=color:#ae81ff>1</span>,<span style=color:#f92672>&#34;method&#34;</span>:<span style=color:#e6db74>&#34;tools/call&#34;</span>,\n</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>:{<span style=color:#f92672>&#34;name&#34;</span>:<span style=color:#e6db74>&#34;search&#34;</span>,<span style=color:#f92672>&#34;arguments&#34;</span>:{<span style=color:#f92672>&#34;q&#34;</span>:<span style=color:#e6db74>&#34;otters&#34;</span>},\n</span></span><span style=display:flex><span>           <span style=color:#f92672>&#34;_meta&#34;</span>:{<span style=color:#f92672>&#34;io.modelcontextprotocol/clientInfo&#34;</span>:{<span style=color:#f92672>&#34;name&#34;</span>:<span style=color:#e6db74>&#34;my-app&#34;</span>,<span style=color:#f92672>&#34;version&#34;</span>:<span style=color:#e6db74>&#34;1.0&#34;</span>}}}}\n</span></span></code></pre></div><h3 id=the-handshake-and-session-are-gone>The handshake and session are gone<a hidden class=anchor aria-hidden=true href=#the-handshake-and-session-are-gone>#</a></h3><p>The <code>initialize</code>/<code>initialized</code> handshake is removed\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2575>SEP-2575</a>).\nThe protocol version, client info, and client capabilities that used to be\nexchanged once at connection time now travel in <code>_meta</code> on every request, and a\nnew <code>server/discover</code> method lets clients fetch server capabilities when they\nneed them up front.</p><p>The <code>Mcp-Session-Id</code> header and the protocol-level session that came with it are\nalso removed\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2567>SEP-2567</a>).\nWith both gone, any MCP request can land on any server instance, and the sticky\nrouting and shared session stores that horizontal deployments needed before are\nno longer required at the protocol layer.</p><h3 id=stateless-protocol-stateful-applications>Stateless protocol, stateful applications<a hidden class=anchor aria-hidden=true href=#stateless-protocol-stateful-applications>#</a></h3><p>Removing the protocol-level session does not mean your application has to be\nstateless. Servers that need to carry state across calls can do what HTTP APIs\nhave always done: mint an explicit handle (a <code>basket_id</code>, a <code>browser_id</code>) from\na tool and have the model pass it back as an ordinary argument on later calls.</p><p><img alt=\"Sequence diagram: the model calls create_basket, the MCP server returns a basket_id, and the model passes that same basket_id back as an argument to add_item.\" loading=lazy src=/posts/images/2026-07-28-rc/handle-pattern.svg></p><p>In practice, we&rsquo;ve found this pattern (the model threading an identifier from\none tool call to the next) to be more than just a workable substitute for\nsession state. It&rsquo;s often a more powerful one. The model can compose handles\nacross tools, reason about them, and hand them off between steps in ways that\nexternally managed session state, hidden in transport metadata, never really\nallowed.</p><p>The protocol no longer manages that state for you, but it doesn&rsquo;t prevent you\nfrom managing it yourself. The explicit-handle pattern simply makes the state\nvisible to the model rather than hidden away.</p><h3 id=server-to-client-requests-restructured>Server-to-client requests, restructured<a hidden class=anchor aria-hidden=true href=#server-to-client-requests-restructured>#</a></h3><p>A stateless protocol still needs a way for servers to ask the client for\nsomething mid-call, such as an elicitation prompt. Two SEPs rebuild that flow so\nit works without a persistent connection.</p><p>Server-initiated requests may now only be issued while the server is actively\nprocessing a client request\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2260>SEP-2260</a>).\nEarlier spec versions recommended this; it&rsquo;s now required. A user is never\nprompted out of nowhere, and every elicitation traces back to something they (or\ntheir agent) started.</p><p>Multi Round-Trip Requests\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2322>SEP-2322</a>)\nchange how those prompts are delivered. Instead of holding a Server-Sent Events\n(SSE) stream open, the server returns an <code>InputRequiredResult</code>:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{\n</span></span><span style=display:flex><span>  <span style=color:#f92672>&#34;resultType&#34;</span>: <span style=color:#e6db74>&#34;input_required&#34;</span>,\n</span></span><span style=display:flex><span>  <span style=color:#f92672>&#34;inputRequests&#34;</span>: {\n</span></span><span style=display:flex><span>    <span style=color:#f92672>&#34;confirm&#34;</span>: {\n</span></span><span style=display:flex><span>      <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;elicitation&#34;</span>,\n</span></span><span style=display:flex><span>      <span style=color:#f92672>&#34;message&#34;</span>: <span style=color:#e6db74>&#34;Delete 3 files?&#34;</span>,\n</span></span><span style=display:flex><span>      <span style=color:#f92672>&#34;schema&#34;</span>: { <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;boolean&#34;</span> }\n</span></span><span style=display:flex><span>    }\n</span></span><span style=display:flex><span>  },\n</span></span><span style=display:flex><span>  <span style=color:#f92672>&#34;requestState&#34;</span>: <span style=color:#e6db74>&#34;eyJzdGVwIjoxLCJmaWxlcyI6WyJhIiwiYiIsImMiXX0=&#34;</span>\n</span></span><span style=display:flex><span>}\n</span></span></code></pre></div><p>The client gathers the answers and re-issues the original call with\n<code>inputResponses</code> and the echoed <code>requestState</code>. Any server instance can pick\nthat retry up because everything it needs is in the payload.</p><h3 id=routable-cacheable-traceable>Routable, cacheable, traceable<a hidden class=anchor aria-hidden=true href=#routable-cacheable-traceable>#</a></h3><p>Three smaller changes make the resulting traffic easier to operate.</p><p>The Streamable HTTP transport now requires <code>Mcp-Method</code> and <code>Mcp-Name</code> headers\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2243>SEP-2243</a>)\nso load balancers, gateways, and rate-limiters can route on the operation\nwithout inspecting the body. Servers reject requests where the headers and body\ndisagree.</p><p>List and resource read results now carry <code>ttlMs</code> and <code>cacheScope</code>\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2549>SEP-2549</a>),\nmodeled on HTTP <code>Cache-Control</code>. Clients know exactly how long a <code>tools/list</code>\nresponse is fresh and whether it&rsquo;s safe to share across users, and a long-lived\nSSE stream is no longer the only way to learn that a list changed.</p><p>W3C Trace Context propagation in <code>_meta</code> is now documented\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/414>SEP-414</a>),\nlocking down the <code>traceparent</code>, <code>tracestate</code>, and <code>baggage</code> key names so\ndistributed traces correlate across SDKs and gateways. Several SDKs and tools\nwere already doing this; with the key names fixed in the spec, a trace that\nstarts in a host application can follow a tool call through the client SDK, the\nMCP server, and whatever the server calls downstream, and show up as a single\nspan tree in an <a href=https://opentelemetry.io/>OpenTelemetry</a>-compatible backend.</p><h2 id=extensions-become-first-class>Extensions Become First-Class<a hidden class=anchor aria-hidden=true href=#extensions-become-first-class>#</a></h2><p>Extensions existed in the <code>2025-11-25</code> release but had no formal process behind\nthem.\n<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2133>SEP-2133</a>\nadds that: extensions are identified by reverse-DNS IDs, negotiated through an <code>extensions</code>\nmap on client and server capabilities, live in their own <code>ext-*</code> repositories\nwith delegated maintainers, and version independently of the specification. A new\nExtensions Track in the SEP process gives them a path from experimental to\nofficial.</p><p>This release includes two official extensions.</p><h3 id=mcp-apps-server-rendered-user-interfaces>MCP Apps: server-rendered user interfaces<a hidden class=anchor aria-hidden=true href=#mcp-apps-server-rendered-user-interfaces>#</a></h3><p><a href=/posts/2026-01-26-mcp-apps/>MCP Apps</a>\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865>SEP-1865</a>)\nlets servers ship interactive HTML interfaces that hosts render in a sandboxed\niframe. Tools declare their UI templates ahead of time so hosts can prefetch,\ncache, and security-review them before anything runs. The rendered UI talks back\nto the host over the same JSON-RPC base protocol used everywhere else in MCP, so\nevery UI-initiated action goes through the same audit and consent path as a\ndirect tool call.</p><h3 id=tasks-graduates-to-an-extension>Tasks graduates to an extension<a hidden class=anchor aria-hidden=true href=#tasks-graduates-to-an-extension>#</a></h3><p>Tasks shipped as an experimental core feature in\n<a href=https://modelcontextprotocol.io/specification/2025-11-25/server/tasks><code>2025-11-25</code></a>.\nProduction use surfaced enough redesign that the right home for it is an\nextension rather than the specification.</p><p>The <a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2663>Tasks extension</a>\nreshapes the lifecycle around the stateless model: a server can answer\n<code>tools/call</code> with a task handle, and the client drives it with <code>tasks/get</code>,\n<code>tasks/update</code>, and <code>tasks/cancel</code>. Task creation is server-directed: the client\nadvertises the extension and the server decides when a call should run as a\ntask. <code>tasks/list</code> is removed because it can&rsquo;t be scoped safely without\nsessions.</p><p>Anyone who shipped against the <code>2025-11-25</code> experimental Tasks API will need to\nmigrate to the new lifecycle.</p><h2 id=authorization-hardening>Authorization Hardening<a hidden class=anchor aria-hidden=true href=#authorization-hardening>#</a></h2><p>Six SEPs harden the\n<a href=https://modelcontextprotocol.io/specification/draft/basic/authorization>authorization specification</a>\nto align more closely with how OAuth 2.0 and OpenID Connect are deployed in\npractice.</p><p>Clients must now validate the <code>iss</code> parameter on authorization responses per\n<a href=https://www.rfc-editor.org/rfc/rfc9207>RFC 9207</a>\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2468>SEP-2468</a>).\nThis is a low-cost mitigation for a class of mix-up attack that is more\nprevalent in MCP&rsquo;s single-client, many-server deployment pattern. In a future\nversion, clients will be expected to reject responses that omit <code>iss</code>, so\nauthorization servers should begin supplying it now if they don&rsquo;t already.</p><p>Clients now declare their OpenID Connect <code>application_type</code> during Dynamic\nClient Registration\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/837>SEP-837</a>),\navoiding the common case where an authorization server defaults a desktop or CLI\nclient to <code>\"web\"</code> and rejects its localhost redirect URI. Clients bind\nregistered credentials to the issuing authorization server&rsquo;s <code>issuer</code> and\nre-register when a resource migrates between authorization servers\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2352>SEP-2352</a>).\nThe spec also documents how to request refresh tokens from OpenID Connect-style\nauthorization servers\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2207>SEP-2207</a>),\nand clarifies scope accumulation during step-up\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2350>SEP-2350</a>)\nand the <code>.well-known</code> discovery suffix\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2351>SEP-2351</a>).</p><h2 id=roots-sampling-and-logging-are-deprecated>Roots, Sampling, and Logging Are Deprecated<a hidden class=anchor aria-hidden=true href=#roots-sampling-and-logging-are-deprecated>#</a></h2><p>Three core features are deprecated under the new\n<a href=#how-the-protocol-evolves-from-here>feature lifecycle policy</a>\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577>SEP-2577</a>):</p><table><thead><tr><th>Feature</th><th>Replacement</th></tr></thead><tbody><tr><td>Roots</td><td><a href=https://modelcontextprotocol.io/specification/draft/server/tools>Tool parameters</a>, resource URIs, or server configuration</td></tr><tr><td>Sampling</td><td>Direct integration with LLM provider APIs</td></tr><tr><td>Logging</td><td><code>stderr</code> for stdio transports; <a href=https://opentelemetry.io/>OpenTelemetry</a> for structured observability</td></tr></tbody></table><p>These are annotation-only deprecations. The methods, types, and capability flags\ncontinue to work in this release and in every specification version published\nwithin a year of it, and removing any of them will require a separate SEP under\nthe lifecycle policy.</p><h2 id=full-json-schema-2020-12-for-tools>Full JSON Schema 2020-12 for Tools<a hidden class=anchor aria-hidden=true href=#full-json-schema-2020-12-for-tools>#</a></h2><p>Tool <code>inputSchema</code> and <code>outputSchema</code> are lifted to full\n<a href=https://json-schema.org/draft/2020-12>JSON Schema 2020-12</a>\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2106>SEP-2106</a>).\nInput schemas keep the <code>type: \"object\"</code> root constraint but now allow\ncomposition (<code>oneOf</code>, <code>anyOf</code>, <code>allOf</code>), conditionals, and references (<code>$ref</code>,\n<code>$defs</code>). Output schemas are unrestricted, and <code>structuredContent</code> can now be\nany JSON value rather than only an object. Implementations must not\nauto-dereference external <code>$ref</code> URIs and should bound schema depth and\nvalidation time.</p><p>Separately, the error code for a missing resource changes from the MCP-custom\n<code>-32002</code> to the JSON-RPC standard <code>-32602</code> Invalid Params\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2164>SEP-2164</a>).\nIf your client matches on the literal <code>-32002</code> value, update it.</p><h2 id=how-the-protocol-evolves-from-here>How the Protocol Evolves From Here<a hidden class=anchor aria-hidden=true href=#how-the-protocol-evolves-from-here>#</a></h2><p>This release contains breaking changes. We don&rsquo;t intend for that to be the norm.</p><p>Three governance SEPs in this release are designed so that future revisions can\nevolve the protocol without breaking core capabilities. The\n<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596>feature lifecycle policy</a>\ngives every feature an <em>Active</em>, <em>Deprecated</em>, and <em>Removed</em> lifecycle with at least\ntwelve months between deprecation and the earliest possible removal. The\n<a href=#extensions-become-first-class>Extensions framework</a> means new capabilities\ncan ship as opt-in extensions and stabilize there before, if ever, moving into\nthe specification. And a Standards Track SEP can no longer reach Final status\nuntil a matching scenario lands in the <a href=https://github.com/modelcontextprotocol/conformance>conformance suite</a>\n(<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2484>SEP-2484</a>),\nwhich is the same suite the new <a href=https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1777>SDK tier system</a>\nscores official SDKs against.</p><p>The stateless rework in this release is the kind of foundational change that\nneeded a clean break. With it landed, and with deprecation windows and\nextensions as the standard tools going forward, our expectation is that\nimplementers targeting <code>2026-07-28</code> will be able to adopt future revisions without\nrewriting their transport or lifecycle code.</p><h2 id=release-timeline-and-validation>Release Timeline and Validation<a hidden class=anchor aria-hidden=true href=#release-timeline-and-validation>#</a></h2><p>The release candidate is locked as of <strong>May 21, 2026</strong>. The final specification\nwill be published on <strong>July 28, 2026</strong>. The ten-week window is for SDK\nmaintainers and client implementers to validate the changes against real\nworkloads; under the <a href=https://modelcontextprotocol.io/docs/sdk>SDK tier system</a>,\nTier 1 SDKs are expected to ship support within this window.</p><p>The full release candidate is in the\n<a href=https://modelcontextprotocol.io/specification/draft>draft specification</a>, and\nthe <a href=https://modelcontextprotocol.io/specification/draft/changelog>changelog</a>\nwill list every change against <code>2025-11-25</code>.</p><p>If you find a problem, open an issue in the\n<a href=https://github.com/modelcontextprotocol/modelcontextprotocol/issues>specification repository</a>.\nFor implementation questions, the relevant\n<a href=https://modelcontextprotocol.io/community/working-interest-groups>Working Group</a>\nchannel in the\n<a href=https://modelcontextprotocol.io/community/communication#discord>contributor Discord</a>\nis the fastest path to an answer.</p><h2 id=looking-ahead>Looking Ahead<a hidden class=anchor aria-hidden=true href=#looking-ahead>#</a></h2><p>This release gives MCP the foundation we expect it to grow on for a long time: a\nprotocol that runs statelessly on commodity HTTP infrastructure, an extensions\nframework where capabilities like Tasks and MCP Apps can ship on their own\ntimeline, and a lifecycle policy that lets implementers build on <code>2026-07-28</code>\nknowing what they ship will keep working.</p><p>Thank you to everyone who shaped these proposals through the Working Groups and\na great deal of patient review. We&rsquo;re looking forward to making this final with\nthe community on July 28.</p></div><footer class=post-footer><ul class=post-tags><li><a href=https://blog.modelcontextprotocol.io/tags/mcp/>Mcp</a></li><li><a href=https://blog.modelcontextprotocol.io/tags/spec/>Spec</a></li><li><a href=https://blog.modelcontextprotocol.io/tags/release/>Release</a></li><li><a href=https://blog.modelcontextprotocol.io/tags/protocol/>Protocol</a></li></ul></footer></article></main><footer class=footer><nav class=footer-nav><a href=https://modelcontextprotocol.io/docs>Documentation</a><span class=footer-sep> · </span><a href=https://blog.modelcontextprotocol.io/posts/>Posts</a><span class=footer-sep> · </span><a href=https://blog.modelcontextprotocol.io/archives/>Archives</a><span class=footer-sep> · </span><a href=https://blog.modelcontextprotocol.io/search/>Search</a>\n<span class=footer-sep>· </span><a href=/tags/>Tags</a>\n<span class=footer-sep>· </span><a href=https://github.com/modelcontextprotocol>GitHub</a>\n<span class=footer-sep>· </span><a href=https://linkedin.com/company/modelcontextprotocol>LinkedIn</a>\n<span class=footer-sep>· </span><a href=/index.xml>RSS</a></nav><span>Copyright © Model Context Protocol a Series of LF Projects, LLC.<br>For web site terms of use, trademark policy and other project policies please see <a href=https://lfprojects.org>https://lfprojects.org</a>.</span></footer><a href=#top aria-label=\"go to top\" title=\"Go to Top (Alt + G)\" class=top-link id=top-link accesskey=g><svg viewBox=\"0 0 12 6\" fill=\"currentColor\"><path d=\"M12 6H0l6-6z\"/></svg>\n</a><script>let menu=document.getElementById(\"menu\");if(menu){const e=localStorage.getItem(\"menu-scroll-position\");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem(\"menu-scroll-position\",menu.scrollLeft)}}document.querySelectorAll('a[href^=\"#\"]').forEach(e=>{e.addEventListener(\"click\",function(e){e.preventDefault();var t=this.getAttribute(\"href\").substr(1);window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:\"smooth\"}),t===\"top\"?history.replaceState(null,null,\" \"):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById(\"top-link\");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility=\"visible\",mybutton.style.opacity=\"1\"):(mybutton.style.visibility=\"hidden\",mybutton.style.opacity=\"0\")}</script><script>document.getElementById(\"theme-toggle\").addEventListener(\"click\",()=>{document.body.className.includes(\"dark\")?(document.body.classList.remove(\"dark\"),localStorage.setItem(\"pref-theme\",\"light\")):(document.body.classList.add(\"dark\"),localStorage.setItem(\"pref-theme\",\"dark\"))})</script><script>document.querySelectorAll(\"pre > code\").forEach(e=>{const n=e.parentNode.parentNode,t=document.createElement(\"button\");t.classList.add(\"copy-code\"),t.innerHTML=\"copy\";function s(){t.innerHTML=\"copied!\",setTimeout(()=>{t.innerHTML=\"copy\"},2e3)}t.addEventListener(\"click\",t=>{if(\"clipboard\"in navigator){navigator.clipboard.writeText(e.textContent),s();return}const n=document.createRange();n.selectNodeContents(e);const o=window.getSelection();o.removeAllRanges(),o.addRange(n);try{document.execCommand(\"copy\"),s()}catch{}o.removeRange(n)}),n.classList.contains(\"highlight\")?n.appendChild(t):n.parentNode.firstChild==n||(e.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName==\"TABLE\"?e.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(t):e.parentNode.appendChild(t))})</script></body></html>","snapshot_chars":54490,"live_check":"changed"},{"url":"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis","committed_hash":"sha256:da86f66df10f8e044c16720f0c590df0f302c76f1587718e57e305b9e4d872f6","committed_hash_short":"sha256:da86f66d…e4d872f6","mime_type":"text/html","committed_at":"2026-07-28T00:00:21.232731+00:00","content_snapshot":"<!DOCTYPE html><html class=\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable instrument_serif_535d8616-module__GDyPrG__variable font-sans\" lang=\"en\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=5\"/><link rel=\"preload\" href=\"/_next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\" as=\"font\" crossorigin=\"\" type=\"font/woff2\"/><link rel=\"preload\" href=\"/_next/static/media/7ebf22b5a21034f8-s.p.10_7676vm7pyy.woff2\" as=\"font\" crossorigin=\"\" type=\"font/woff2\"/><link rel=\"preload\" href=\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\" as=\"font\" crossorigin=\"\" type=\"font/woff2\"/><link rel=\"preload\" href=\"/_next/static/media/e41d5df559864f9e-s.p.0gq7fw9.sy_5..woff2\" as=\"font\" crossorigin=\"\" type=\"font/woff2\"/><link rel=\"preload\" as=\"image\" href=\"/logo-black.svg\"/><link rel=\"stylesheet\" href=\"/_next/static/chunks/0x5hulsdcv16j.css\" data-precedence=\"next\"/><link rel=\"stylesheet\" href=\"/_next/static/chunks/1375h7jyi~127.css\" data-precedence=\"next\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/_next/static/chunks/0fh1k_r~b~e_o.js\"/><script src=\"/_next/static/chunks/02j3b3kqw16o_.js\" async=\"\"></script><script src=\"/_next/static/chunks/0xo94uum3hbeo.js\" async=\"\"></script><script src=\"/_next/static/chunks/0k8x.hopn~dbb.js\" async=\"\"></script><script src=\"/_next/static/chunks/15~sw-y0t5qla.js\" async=\"\"></script><script src=\"/_next/static/chunks/0_zt5gdwndu-o.js\" async=\"\"></script><script src=\"/_next/static/chunks/turbopack-0r2lweie01gnn.js\" async=\"\"></script><script src=\"/_next/static/chunks/0vfhqx7irdtsp.js\" async=\"\"></script><script src=\"/_next/static/chunks/0yze7hvbcp5.x.js\" async=\"\"></script><script src=\"/_next/static/chunks/0zod1seoish6v.js\" async=\"\"></script><script src=\"/_next/static/chunks/0h9.k2fyk8cqu.js\" async=\"\"></script><script src=\"/_next/static/chunks/13b9o4nx8cmv5.js\" async=\"\"></script><script src=\"/_next/static/chunks/0bok.jphy_~lu.js\" async=\"\"></script><script src=\"/_next/static/chunks/039fygmp~-jt3.js\" async=\"\"></script><script src=\"/_next/static/chunks/10xegheq_2_g2.js\" async=\"\"></script><link rel=\"preload\" href=\"https://www.googletagmanager.com/gtm.js?id=GTM-NGSFB45\" as=\"script\"/><link href=\"/manifest.json\" rel=\"manifest\"/><link href=\"/feed.xml\" rel=\"alternate\" title=\"Digital Applied Blog\" type=\"application/rss+xml\"/><meta content=\"#18181b\" name=\"theme-color\"/><meta content=\"DigitalApplied\" name=\"apple-mobile-web-app-title\"/><meta name=\"next-size-adjust\" content=\"\"/><title>MCP Dev Summit 2026 Readout: The Protocol Grows Up</title><meta name=\"description\" content=\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\"/><meta name=\"author\" content=\"Digital Applied\"/><meta name=\"keywords\" content=\"mcp dev summit 2026,mcp july 28 spec stateless,shadow mcp governance,mcp 110 million downloads,enterprise mcp gateway,aws mcp server,mcp tasks extension apps\"/><meta name=\"creator\" content=\"Digital Applied\"/><meta name=\"publisher\" content=\"Digital Applied\"/><meta name=\"robots\" content=\"index, follow\"/><meta name=\"googlebot\" content=\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"/><link rel=\"canonical\" href=\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\"/><meta property=\"og:title\" content=\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\"/><meta property=\"og:description\" content=\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\"/><meta property=\"og:url\" content=\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\"/><meta property=\"og:image\" content=\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis/article-image\"/><meta property=\"og:image:type\" content=\"image/png\"/><meta property=\"og:image:width\" content=\"1200\"/><meta property=\"og:image:height\" content=\"630\"/><meta property=\"og:image:alt\" content=\"MCP Dev Summit 2026 Readout: The Protocol Grows Up - Digital Applied Blog\"/><meta property=\"og:type\" content=\"article\"/><meta property=\"article:published_time\" content=\"2026-06-12\"/><meta property=\"article:modified_time\" content=\"2026-06-12\"/><meta property=\"article:author\" content=\"Digital Applied Team\"/><meta property=\"article:tag\" content=\"model-context-protocol\"/><meta property=\"article:tag\" content=\"mcp-dev-summit\"/><meta property=\"article:tag\" content=\"mcp-spec-2026\"/><meta property=\"article:tag\" content=\"shadow-mcp\"/><meta property=\"article:tag\" content=\"enterprise-mcp-governance\"/><meta property=\"article:tag\" content=\"aaif\"/><meta property=\"article:tag\" content=\"mcp-tunnels\"/><meta property=\"article:tag\" content=\"stateless-mcp\"/><meta name=\"twitter:card\" content=\"summary_large_image\"/><meta name=\"twitter:title\" content=\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\"/><meta name=\"twitter:description\" content=\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\"/><meta name=\"twitter:image\" content=\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis/article-image\"/><meta name=\"twitter:image:alt\" content=\"MCP Dev Summit 2026 Readout: The Protocol Grows Up - Digital Applied Blog\"/><meta name=\"twitter:image:type\" content=\"image/png\"/><meta name=\"twitter:image:width\" content=\"1200\"/><meta name=\"twitter:image:height\" content=\"630\"/><link rel=\"icon\" href=\"/favicon.ico?favicon.0hms~afauq~g0.ico\" sizes=\"48x48\" type=\"image/x-icon\"/><link rel=\"icon\" href=\"/icon.svg?icon.074~muy3rpvs~.svg\" sizes=\"any\" type=\"image/svg+xml\"/><link rel=\"apple-touch-icon\" href=\"/apple-icon.png?apple-icon.0z2i6746e9zp1.png\" sizes=\"180x180\" type=\"image/png\"/><script src=\"/_next/static/chunks/03~yq9q893hmn.js\" noModule=\"\"></script></head><body class=\"antialiased\"><div hidden=\"\"><!--$--><!--/$--></div><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"LocalBusiness\",\"@id\":\"https://www.digitalapplied.com/#organization\",\"name\":\"Digital Applied\",\"legalName\":\"Digital Applied, s. r. o.\",\"url\":\"https://www.digitalapplied.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.digitalapplied.com/logo-black.svg\",\"width\":\"512\",\"height\":\"512\"},\"image\":\"https://www.digitalapplied.com/opengraph-image\",\"description\":\"International digital marketing agency specializing in SEO, PPC, social media marketing, and AI-powered digital transformation for global clients\",\"foundingDate\":\"2019-05-01\",\"telephone\":\"+421-90-246-8050\",\"email\":\"info@digitalapplied.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Priemyselná 668/7\",\"addressLocality\":\"Bratislava\",\"addressRegion\":\"Bratislava\",\"postalCode\":\"821 09\",\"addressCountry\":\"SK\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.142672,\"longitude\":17.168666},\"sameAs\":[\"https://x.com/digitalapplied\",\"https://www.facebook.com/digitalapplied\",\"https://www.instagram.com/digital_applied\",\"https://www.linkedin.com/company/digitalapplied\"],\"areaServed\":[{\"@type\":\"Country\",\"name\":\"United States\"},{\"@type\":\"Country\",\"name\":\"United Kingdom\"},{\"@type\":\"Country\",\"name\":\"Canada\"},{\"@type\":\"Country\",\"name\":\"Australia\"},{\"@type\":\"Place\",\"name\":\"European Union\"},{\"@type\":\"Place\",\"name\":\"Worldwide\"}],\"priceRange\":\"€€€-€€€€\",\"paymentAccepted\":[\"Credit Card\",\"Wire Transfer\",\"PayPal\"],\"currenciesAccepted\":\"EUR, USD, GBP\",\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"07:30\",\"closes\":\"17:00\"},{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":\"Saturday\",\"opens\":\"08:00\",\"closes\":\"11:00\"}],\"contactPoint\":{\"@type\":\"ContactPoint\",\"telephone\":\"+421-90-246-8050\",\"contactType\":\"customer service\",\"email\":\"info@digitalapplied.com\",\"availableLanguage\":[\"English\",\"Slovak\"],\"areaServed\":\"Worldwide\"},\"vatID\":\"SK2120914510\",\"taxID\":\"52125670\",\"identifier\":{\"@type\":\"PropertyValue\",\"propertyID\":\"Company ID\",\"value\":\"52125670\"},\"hasOfferCatalog\":{\"@type\":\"OfferCatalog\",\"name\":\"Digital Marketing Services\",\"itemListElement\":[{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"SEO Optimization\",\"url\":\"https://www.digitalapplied.com/services/agentic-seo\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"PPC Advertising\",\"url\":\"https://www.digitalapplied.com/services/paid-media\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Social Media Marketing\",\"url\":\"https://www.digitalapplied.com/services/social-media\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Web Development\",\"url\":\"https://www.digitalapplied.com/services/web-development\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Content Marketing\",\"url\":\"https://www.digitalapplied.com/services/content-engine\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Analytics & Insights\",\"url\":\"https://www.digitalapplied.com/services/analytics\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"eCommerce Solutions\",\"url\":\"https://www.digitalapplied.com/services/ecommerce\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"CRM & Automation\",\"url\":\"https://www.digitalapplied.com/services/crm-automation\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"AI & Digital Transformation\",\"url\":\"https://www.digitalapplied.com/services/ai-transformation\"}}]}}</script><div class=\"flex min-h-screen flex-col\"><nav class=\"sticky top-0 z-40 w-full border-border/60 border-b bg-background/80 backdrop-blur-md supports-backdrop-filter:bg-background/70\"><div class=\"mx-auto max-w-7xl px-4 md:px-8\"><div class=\"flex h-17 items-center justify-between\"><a aria-label=\"Digital Applied\" class=\"flex items-center\" href=\"/\"><img alt=\"Digital Applied\" width=\"1556\" height=\"280\" decoding=\"async\" data-nimg=\"1\" class=\"h-6 w-auto\" style=\"color:transparent\" src=\"/logo-black.svg\"/></a><div class=\"hidden items-center gap-1 md:flex\"><a class=\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\" href=\"/services\">Services</a><a class=\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\" href=\"/ai-tools\">AI Tools</a><a class=\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\" href=\"/blog\">Blog</a><a class=\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\" href=\"/about\">About</a><a class=\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\" href=\"/contact\">Contact</a></div><div class=\"hidden items-center gap-2.5 md:flex\"><a class=\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\" href=\"/auth/login\">Log in</a><a data-slot=\"button\" data-variant=\"default\" data-size=\"sm\" class=\"group/button inline-flex shrink-0 items-center justify-center border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 bg-primary text-primary-foreground hover:bg-primary/80 gap-1 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 h-9.5 rounded-lg px-4\" href=\"/get-started\">Start engines</a></div><button data-slot=\"sheet-trigger\" data-variant=\"ghost\" data-size=\"icon\" class=\"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50 size-9 md:hidden\" aria-label=\"Open menu\" type=\"button\" aria-haspopup=\"dialog\" aria-expanded=\"false\" aria-controls=\"radix-_R_habvb_\" data-state=\"closed\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-menu h-5 w-5\" aria-hidden=\"true\"><path d=\"M4 5h16\"></path><path d=\"M4 12h16\"></path><path d=\"M4 19h16\"></path></svg></button></div></div></nav><main class=\"grow\"><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"@id\":\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis#article\",\"headline\":\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\",\"description\":\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\",\"url\":\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\",\"datePublished\":\"2026-06-12T00:00:00+01:00\",\"dateModified\":\"2026-06-12T00:00:00+01:00\",\"author\":{\"@type\":\"Organization\",\"@id\":\"https://www.digitalapplied.com/authors/digital-applied-team#author\",\"name\":\"Digital Applied Team\",\"url\":\"https://www.digitalapplied.com/authors/digital-applied-team\"},\"publisher\":{\"@id\":\"https://www.digitalapplied.com/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis/article-image\"},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis#webpage\"},\"isPartOf\":{\"@id\":\"https://www.digitalapplied.com/#website\"},\"articleSection\":\"AI Development\",\"keywords\":\"mcp dev summit 2026, mcp july 28 spec stateless, shadow mcp governance, mcp 110 million downloads, enterprise mcp gateway, aws mcp server, mcp tasks extension apps\",\"about\":[{\"@type\":\"Thing\",\"name\":\"model-context-protocol\"},{\"@type\":\"Thing\",\"name\":\"mcp-dev-summit\"},{\"@type\":\"Thing\",\"name\":\"mcp-spec-2026\"},{\"@type\":\"Thing\",\"name\":\"shadow-mcp\"},{\"@type\":\"Thing\",\"name\":\"enterprise-mcp-governance\"},{\"@type\":\"Thing\",\"name\":\"aaif\"},{\"@type\":\"Thing\",\"name\":\"mcp-tunnels\"},{\"@type\":\"Thing\",\"name\":\"stateless-mcp\"}]}</script><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.digitalapplied.com/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.digitalapplied.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AI Development\",\"item\":\"https://www.digitalapplied.com/blog/category/ai-development\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\"}]}</script><div aria-hidden=\"true\" class=\"pointer-events-none fixed inset-x-0 top-0 z-40 h-[2px] overflow-hidden\"><div class=\"h-full bg-linear-to-r from-[var(--color-ignition)] to-[var(--color-ignition-2)] transition-[width] duration-100 ease-linear\" style=\"width:0%\"></div></div><nav aria-label=\"Breadcrumb\" class=\"border-white/5 border-b bg-[#0a0a0b] text-white/55\"><ol class=\"mx-auto flex max-w-[1320px] items-center gap-2 px-4 py-3.5 font-mono text-[11px] uppercase tracking-[0.1em] md:px-8\"><li class=\"flex items-center gap-2\"><a class=\"transition-colors hover:text-ignition-2\" href=\"/\">Home</a><span class=\"text-white/25\">/</span></li><li class=\"flex items-center gap-2\"><a class=\"transition-colors hover:text-ignition-2\" href=\"/blog\">Blog</a><span class=\"text-white/25\">/</span></li><li class=\"flex items-center gap-2\"><a class=\"transition-colors hover:text-ignition-2\" href=\"/blog/category/ai-development\">AI Development</a><span class=\"text-white/25\">/</span></li><li class=\"flex items-center gap-2\"><span class=\"text-white\">MCP Dev Summit 2026 Readout</span></li></ol></nav><section class=\"relative isolate overflow-hidden bg-[#0a0a0b] pt-14 text-white\"><div aria-hidden=\"true\" class=\"mask-[radial-gradient(ellipse_at_50%_30%,black_20%,transparent_75%)] pointer-events-none absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.035)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.035)_1px,transparent_1px)] bg-size-[56px_56px] [-webkit-mask-image:radial-gradient(ellipse_at_50%_30%,black_20%,transparent_75%)]\"></div><div aria-hidden=\"true\" class=\"pointer-events-none absolute top-[-5%] left-[-5%] size-[620px] blur-2xl [background:radial-gradient(circle,rgba(255,107,26,0.18),rgba(255,107,26,0.03)_40%,transparent_70%)]\"></div><div aria-hidden=\"true\" class=\"pointer-events-none absolute top-[20%] right-[-5%] size-[520px] blur-2xl [background:radial-gradient(circle,rgba(77,107,254,0.16),rgba(77,107,254,0.02)_40%,transparent_70%)]\"></div><div class=\"relative z-2 mx-auto max-w-[1320px] px-4 md:px-8\"><div class=\"mb-9 flex flex-wrap items-center gap-3\"><span class=\"rounded-sm border border-ignition/30 bg-ignition/10 px-3 py-1.5 font-mono text-[11px] text-ignition uppercase tracking-[0.14em]\">AI Development</span><span class=\"rounded-sm bg-ignition-2 px-3 py-1.5 font-medium font-mono text-[#0a0a0b] text-[11px] uppercase tracking-[0.14em]\"><span class=\"mr-1.5 inline-block size-[5px] animate-[ignition-pulse_1.2s_infinite] rounded-full bg-[#0a0a0b] align-[1px]\"></span>New Release</span><span class=\"rounded-sm border border-white/15 px-3 py-1.5 font-mono text-[11px] text-white/65 uppercase tracking-[0.14em]\">14<!-- --> min read</span><span class=\"rounded-sm border border-white/15 px-3 py-1.5 font-mono text-[11px] text-white/65 uppercase tracking-[0.14em]\">Published <!-- -->June 12, 2026</span></div><p class=\"m-0 mb-[18px] max-w-[900px] text-[17px] text-white/72 leading-normal tracking-[-0.005em]\">110M monthly SDK downloads ·<!-- --> <span class=\"font-serif text-ignition-2 italic\">stateless</span> <!-- -->July 28 spec · Shadow MCP as the new<!-- --> <span class=\"font-medium font-mono text-[15px] text-white\">Shadow IT</span></p><h1 class=\"m-0 mb-6 max-w-[1100px] font-normal text-[clamp(40px,5.4vw,76px)] text-white leading-none tracking-[-0.035em]\">MCP Dev Summit<!-- --> <span class=\"font-light font-sans text-white tabular-nums\">2026</span> <!-- -->Readout: The Protocol<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">Grows Up</em></h1><p class=\"m-0 mb-11 max-w-[760px] text-[18px] text-white/72 leading-[1.6]\">The April 2026 MCP Dev Summit was the moment the Model Context Protocol stopped being a clever adoption metric and became enterprise infrastructure. The story isn&#x27;t the download curve — it&#x27;s the incoming July 28 spec that deletes sessions entirely, and the governance question of what to do about the MCP servers your IT team never approved.</p><div class=\"mb-12 flex flex-wrap items-center gap-5\"><div class=\"flex items-center gap-3\"><div class=\"flex size-11 items-center justify-center rounded-full bg-[linear-gradient(135deg,var(--color-ignition),var(--color-ignition-2))] font-medium font-mono text-[#0a0a0b] text-[14px]\">DA</div><div><div class=\"font-medium text-[14px] text-white leading-[1.2]\">Digital Applied Team</div><div class=\"mt-0.5 font-mono text-[10.5px] text-white/55 uppercase tracking-[0.08em]\">Senior strategists · Published Jun 12, 2026</div></div></div><div class=\"flex flex-wrap gap-x-6 gap-y-2 border-white/10 border-l pl-6 font-mono text-[11px] text-white/50 uppercase tracking-widest max-sm:gap-x-4 max-sm:border-l-0 max-sm:pl-0\"><div>Published<span class=\"mt-1 block text-[12px] text-white tracking-[0.04em]\">Jun 12, 2026</span></div><div>Read time<span class=\"mt-1 block text-[12px] text-white tracking-[0.04em]\">14 min</span></div><div>Sources<span class=\"mt-1 block text-[12px] text-white tracking-[0.04em]\">8 primary</span></div></div></div><div class=\"mb-14 grid grid-cols-2 gap-px overflow-hidden rounded-2xl border border-white/10 bg-white/10 md:grid-cols-4\"><div class=\"relative bg-[#0a0a0b] px-5 py-6\"><span class=\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\">Monthly SDK downloads</span><div class=\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\">110<span class=\"ml-0.5 font-mono text-[16px] text-ignition\">M</span></div><div class=\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\">April 2026 keynote</div><div class=\"mt-3 inline-flex items-center gap-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\"><span aria-hidden=\"true\">▼</span>16 months to reach</div></div><div class=\"relative bg-[#0a0a0b] px-5 py-6\"><span class=\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\">Public MCP servers tracked</span><div class=\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\">10<span class=\"ml-0.5 font-mono text-[16px] text-ignition\">K+</span></div><div class=\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\">around the summit</div></div><div class=\"relative bg-[#0a0a0b] px-5 py-6\"><span class=\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\">Shadow MCP multiple</span><div class=\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\">3–10<span class=\"ml-0.5 font-mono text-[16px] text-ignition\">×</span></div><div class=\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\">vs. IT expectation</div><div class=\"mt-3 inline-flex items-center gap-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\"><span aria-hidden=\"true\">▼</span>discovery gap</div></div><div class=\"relative bg-[#0a0a0b] px-5 py-6\"><span class=\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\">Spec release window</span><div class=\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\">Jul 28</div><div class=\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\">stateless core</div><div class=\"mt-3 inline-flex items-center gap-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\"><span aria-hidden=\"true\">▼</span>RC locked May 21</div></div></div></div></section><section class=\"relative bg-white dark:bg-zinc-950\"><div class=\"mx-auto grid max-w-[1320px] grid-cols-1 gap-10 px-6 py-16 md:px-8 lg:grid-cols-[240px_minmax(0,1fr)] lg:gap-14 xl:grid-cols-[260px_minmax(0,1fr)_280px]\"><aside class=\"sticky top-[84px] hidden self-start lg:block\"><div><div class=\"mb-4 flex items-center gap-2 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.14em]\"><span class=\"h-px w-4 bg-ignition\"></span>Table of contents</div><ul class=\"flex flex-col gap-0.5 border-zinc-200 border-l dark:border-zinc-800\"><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#takeaways\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">00</span><span>Key takeaways</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#summit\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">01</span><span>What the summit signalled</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#stateless\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">02</span><span>The stateless spec shift</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#spec-matrix\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">03</span><span>July 28 spec action matrix</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#shadow-mcp\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">04</span><span>Shadow MCP is the new Shadow IT</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#governance\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">05</span><span>The enterprise control plane</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#vendors\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">06</span><span>Hyperscaler governance compared</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#sandboxes\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">07</span><span>Sandboxes and tunnels</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#playbook\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">08</span><span>A governance playbook</span></a></li><li><a class=\"-ml-px grid grid-cols-[32px_1fr] gap-2.5 border-l-2 px-3 py-2.5 text-[13px] leading-[1.4] tracking-[-0.005em] transition-colors border-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-950 dark:text-zinc-400 dark:hover:bg-zinc-900 dark:hover:text-white\" href=\"#conclusion\"><span class=\"pt-px font-mono text-[10.5px] tracking-[0.06em] text-zinc-500\">09</span><span>Conclusion</span></a></li></ul></div></aside><article class=\"prose-none min-w-0\"><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p class=\"lede\">The MCP Dev Summit 2026 was the moment the Model Context Protocol crossed from adoption story to infrastructure question. The North America edition ran April 2–3, 2026 at the New York Marriott Marquis and drew roughly 1,200 attendees — about double the prior summit. The headline number, 110 million monthly SDK downloads, was the easy takeaway. The harder, more durable one was governance.</p><p>For two years the standard MCP pitch was a download chart. That era ended on stage in New York. The keynotes, the 23 security-focused sessions, and the incoming spec all pointed the same direction: MCP is now load-bearing inside large organisations, and the open problems are operational — sessions, sprawl, identity, and audit trails — not whether the protocol works.</p><p>This readout treats the summit as an inflection rather than a news dump. It unpacks the incoming July 28 spec through a governance lens, translates the spec into a team-action matrix, makes the case that Shadow MCP is the new Shadow IT, and compares what each hyperscaler now brings to enterprise MCP. For the underlying download and server counts this builds on, see our<!-- --> <a class=\"link\" href=\"/blog/mcp-adoption-statistics-2026-model-context-protocol\">MCP adoption statistics</a> <!-- -->and the running<!-- --> <a class=\"link\" href=\"/blog/mcp-server-ecosystem-tracker-50-servers-cataloged-2026\">MCP server ecosystem</a> <!-- -->tracker.</p></div><div class=\"my-12 scroll-mt-[90px] border-zinc-950 border-t-2 pt-7 dark:border-white\" id=\"takeaways\"><div class=\"mb-6 flex items-center gap-2.5 font-mono text-[11px] text-zinc-950 uppercase tracking-[0.14em] dark:text-white\"><span class=\"size-1.5 rounded-full bg-ignition shadow-[0_0_8px_var(--color-ignition)]\"></span>Key takeaways</div><ol class=\"m-0 list-none p-0\"><li class=\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\"><span class=\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\">01</span><div><span class=\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\">The summit reframed MCP from adoption metric to infrastructure.</span><span class=\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">The North America edition (April 2–3, 2026) drew ~1,200 attendees and devoted 23 of its sessions to security. The story stopped being downloads and became governance, identity, and audit.</span></div></li><li class=\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\"><span class=\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\">02</span><div><span class=\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\">110M monthly downloads is the April 2026 keynote figure.</span><span class=\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">MCP co-creator David Soria Parra cited 110M monthly SDK downloads — reached in 16 months, a milestone React took three years to hit. The December 2025 baseline was 97M; both are vendor-stated, so timestamp whichever you cite.</span></div></li><li class=\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\"><span class=\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\">03</span><div><span class=\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\">The July 28 spec makes the protocol stateless.</span><span class=\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">The incoming release removes the initialize handshake and the session header so any request can route to any server instance. That unlocks vanilla round-robin load balancers — the change that makes MCP feasible at scale, not just possible.</span></div></li><li class=\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\"><span class=\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\">04</span><div><span class=\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\">Shadow MCP is the new Shadow IT.</span><span class=\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">Organisations typically discover several times more MCP deployments than IT expected. Servers bind to localhost, listen on random high ports, or hide behind reverse proxies — and surface in IDE plugins as production dependencies with no approval.</span></div></li><li class=\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\"><span class=\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\">05</span><div><span class=\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\">A centralised gateway plus registry is the emerging consensus.</span><span class=\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">Amazon, Uber, AWS, Docker, Kong, Solo.io, Bloomberg, and Cloudflare are converging on the same control-plane pattern. The procurement question for engineering leads is now which governance stack, not whether to govern.</span></div></li></ol></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"summit\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">01<!-- --> — <!-- -->The Inflection</span>What the summit<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">actually</em> <!-- -->signalled.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>MCP Dev Summit North America 2026 was held April 2–3 at the New York Marriott Marquis, drawing approximately 1,200 attendees — roughly double the prior summit. The programme spanned 17 keynotes and more than 95 sessions across four tracks, with security the single most represented theme at 23 dedicated sessions. That ratio is the tell: a protocol still proving itself spends its stage time on capability demos, while a protocol entering production spends it on threat models and identity.</p><p>David Soria Parra, MCP&#x27;s co-creator at Anthropic, opened Day 1 with the figure that travelled furthest — 110 million monthly SDK downloads, a level MCP reached in 16 months. For context, React took roughly three years to hit the same milestone. That number is vendor-stated and timestamped to the April keynote; an earlier December 2025 Anthropic announcement put the figure at 97 million. Both are real points on a steep curve, which is exactly why the date matters more than the headline.</p><p>The institutional signals were just as loud as the metrics. The Agentic AI Foundation — the body the protocol was donated to in December 2025 — reported reaching 170 member organisations in under four months, well past the 100-member milestone cited from the stage. Jim Zemlin stepped down as interim Executive Director, with Mazin Gilbert appointed to lead the foundation. The x402 Foundation launched at the summit, folding a payment protocol into the agent ecosystem. None of this is the behaviour of an experiment; it is the scaffolding of an institution.</p></div><blockquote class=\"my-7 border-ignition border-l-[3px] bg-zinc-50 px-6 py-5 font-serif text-[19px] text-zinc-950 italic leading-normal tracking-[-0.005em] dark:bg-zinc-900 dark:text-white\">&quot;MCP is the Linux of agents. We&#x27;re going to keep going.&quot;<cite class=\"mt-3 block font-medium font-mono text-[11px] text-zinc-500 uppercase not-italic tracking-widest\">— Jim Zemlin, Linux Foundation CEO, MCP Dev Summit North America 2026</cite></blockquote><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>Our reading: the &quot;Linux of agents&quot; framing is more than a soundbite. It signals a deliberate move toward a neutral, foundation- governed standard with a predictable lifecycle — and the spec changes below back that up. The summit&#x27;s most underrated message was not that MCP is popular. It was that MCP is now being run like infrastructure, with a deprecation policy, an authorization roadmap, and an enterprise governance track to match.</p></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"stateless\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">02<!-- --> — <!-- -->Architecture</span>The spec shift everyone<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">underreported</em>.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>The current stable specification is dated 2025-11-25, with stdio and Streamable HTTP transports over JSON-RPC 2.0. The incoming July 28, 2026 release — whose release candidate was locked May 21, 2026 by lead maintainers David Soria Parra and Den Delimarsky, with a validation window running to July 28 — is the most consequential revision since the protocol&#x27;s creation. Most coverage summarised it as &quot;sessions are gone.&quot; That undersells what changes.</p><p>Concretely, the July 28 spec removes the <code>initialize</code>/<code>initialized</code> handshake and the<!-- --> <code>Mcp-Session-Id</code> header, making the protocol fully stateless. The operational consequence is the part that matters: any MCP request can now route to any server instance with no sticky sessions and no shared session store. You can place a server behind a vanilla AWS Application Load Balancer or a Cloudflare load balancer with zero custom routing logic. That is the difference between MCP being technically possible at scale and being genuinely feasible to operate at the scale of an Uber or a Pinterest.</p></div><div class=\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\"><span aria-hidden=\"true\" class=\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\"></span><span class=\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\">Why stateless is the real headline</span><div class=\"text-[15.5px] text-white leading-[1.6]\">A stateful protocol forces sticky sessions: every request in a conversation has to land on the same server instance, which means shared session stores, custom routing, and a fragile failover story. Deleting sessions removes all of that. The incoming spec turns an MCP server into an ordinary<!-- --> <em class=\"font-serif text-white italic\">horizontally scalable</em> <!-- -->HTTP service — the unglamorous change that quietly unlocks production-scale deployment.</div></div><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>The release is additive as well as subtractive. It introduces two official extensions — MCP Apps (server-rendered HTML UIs in sandboxed iframes with JSON-RPC channels) and a Tasks Extension (a stateless lifecycle via <code>tasks/get</code>,<!-- --> <code>tasks/update</code>, and <code>tasks/cancel</code> after a tool handles a request). Tool <code>inputSchema</code> and<!-- --> <code>outputSchema</code> gain full JSON Schema 2020-12 support, so<!-- --> <code>oneOf</code>, <code>anyOf</code>, <code>allOf</code>, conditionals, and <code>$ref</code> with <code>$defs</code> all become valid. New <code>Mcp-Method</code> and <code>Mcp-Name</code> <!-- -->headers let a load balancer route without inspecting the request body, and <code>ttlMs</code> / <code>cacheScope</code> fields enable client-side caching of <code>tools/list</code> results.</p><p>Three features are formally deprecated: Roots (replaced by tool parameters, resource URIs, or server config), Sampling (replaced by direct LLM provider API calls), and Logging (replaced by stderr for stdio transports and OpenTelemetry for structured observability). Crucially, these deprecations are annotation-only — removal requires a separate proposal after at least 12 months. That formal deprecation-to-removal window is itself the news: it is the first concrete evidence that the foundation is treating MCP as long-lived infrastructure rather than a perpetually experimental protocol.</p></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"spec-matrix\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">03<!-- --> — <!-- -->Team Action</span>The July 28 spec as a<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">team-action</em> <!-- -->matrix.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>Coverage of the release candidate tends to list its SEPs without answering the question engineering leads actually have: who on my team has to do what, and by when. The table below maps each significant change to its impact class, the role affected, and the required action. Every cell traces to the official MCP release notes; the timeline column reflects the announced July 28 window.</p></div><figure class=\"my-8 overflow-hidden rounded-2xl border border-zinc-200 dark:border-zinc-800\"><table class=\"w-full border-collapse text-left text-[13.5px]\"><caption class=\"sr-only\">July 28, 2026 MCP spec changes mapped to impact level, the developer role affected, the required action, and timeline.</caption><thead><tr class=\"bg-zinc-950 text-white dark:bg-zinc-900\"><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Change</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Impact</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Who acts</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Required action</th></tr></thead><tbody class=\"divide-y divide-zinc-200 dark:divide-zinc-800\"><tr><th class=\"bg-zinc-50 px-4 py-3 text-left align-top font-medium text-zinc-950 dark:bg-zinc-900/40 dark:text-white\" colSpan=\"4\" scope=\"colgroup\">Breaking — stateless core</th></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Sessions removed</td><td class=\"px-4 py-3\">Breaking</td><td class=\"px-4 py-3\">Both</td><td class=\"px-4 py-3\">Drop the handshake and session header; move any session state to request payloads or external stores. Re-test behind a round-robin load balancer.</td></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Error code change</td><td class=\"px-4 py-3\">Breaking</td><td class=\"px-4 py-3\">Client devs</td><td class=\"px-4 py-3\">Handle missing-resource errors as JSON-RPC standard<!-- --> <code>-32602</code> instead of the MCP-custom<!-- --> <code>-32002</code>.</td></tr><tr><th class=\"bg-zinc-50 px-4 py-3 text-left align-top font-medium text-zinc-950 dark:bg-zinc-900/40 dark:text-white\" colSpan=\"4\" scope=\"colgroup\">Additive — new capability</th></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">MCP Apps + Tasks</td><td class=\"px-4 py-3\">Additive</td><td class=\"px-4 py-3\">Server devs</td><td class=\"px-4 py-3\">Adopt server-rendered iframe UIs and the stateless task lifecycle where long-running tools need progress and cancellation. No action if unused.</td></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">JSON Schema 2020-12</td><td class=\"px-4 py-3\">Additive</td><td class=\"px-4 py-3\">Server devs</td><td class=\"px-4 py-3\">Tighten tool input/output schemas with <code>oneOf</code>/<code>anyOf</code>/<code>$ref</code> once Tier 1 SDKs ship support.</td></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Routing + caching headers</td><td class=\"px-4 py-3\">Additive</td><td class=\"px-4 py-3\">Both</td><td class=\"px-4 py-3\">Use <code>Mcp-Method</code>/<code>Mcp-Name</code> for body-free routing; cache <code>tools/list</code> via<!-- --> <code>ttlMs</code>/<code>cacheScope</code>; propagate W3C Trace Context.</td></tr><tr><th class=\"bg-zinc-50 px-4 py-3 text-left align-top font-medium text-zinc-950 dark:bg-zinc-900/40 dark:text-white\" colSpan=\"4\" scope=\"colgroup\">Hardening + deprecation</th></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Auth alignment (OAuth/OIDC)</td><td class=\"px-4 py-3\">Hardening</td><td class=\"px-4 py-3\">Client devs</td><td class=\"px-4 py-3\">Validate <code>iss</code> per RFC 9207, declare OpenID Connect<!-- --> <code>application_type</code> at Dynamic Client Registration, bind credentials to the issuing server.</td></tr><tr class=\"align-top text-zinc-700 dark:text-zinc-300\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Roots / Sampling / Logging</td><td class=\"px-4 py-3\">Deprecation</td><td class=\"px-4 py-3\">Both</td><td class=\"px-4 py-3\">Migrate off the three deprecated features; annotation-only now, with at least a 12-month window before any removal.</td></tr></tbody></table></figure><div class=\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\"><span aria-hidden=\"true\" class=\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\"></span><span class=\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\">Read this as a roadmap, not a release note</span><div class=\"text-[15.5px] text-white leading-[1.6]\">The single most important row is the first one. If a server holds any per-conversation state today, the stateless core is a<!-- --> <em class=\"font-serif text-white italic\">breaking</em> change you need on the roadmap now — not in late July. Everything additive can wait for SDK support; the stateless migration is the work that determines whether your MCP fleet scales cleanly.</div></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"shadow-mcp\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">04<!-- --> — <!-- -->Governance Risk</span>Shadow MCP is the new<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">Shadow IT</em>.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>The most important governance idea to come out of the summit period is also the least technical: Shadow MCP. The analogy to Shadow IT is exact because the mechanism is identical. A low-friction tooling layer spreads faster than IT can track it, and then quietly becomes a compliance liability. With MCP, the spread is faster still, because a server is often just a dependency a developer adds to an IDE plugin.</p><p>Security researchers and vendors analysing the problem report a consistent pattern: organisations typically discover several times more MCP deployments than IT expected — commonly framed as a 3–10x gap. The reason these servers evade traditional visibility is structural. They bind to localhost, listen on random high ports, or sit behind reverse proxies. They appear inside IDE plugins as routine production dependencies with no formal approval step. None of that trips a conventional asset inventory.</p></div><blockquote class=\"my-7 border-ignition border-l-[3px] bg-zinc-50 px-6 py-5 font-serif text-[19px] text-zinc-950 italic leading-normal tracking-[-0.005em] dark:bg-zinc-900 dark:text-white\">&quot;Behind corporate firewalls, we&#x27;re quietly wiring MCPs to Salesforce, Jira, internal wikis, Snowflake daily.&quot;<cite class=\"mt-3 block font-medium font-mono text-[11px] text-zinc-500 uppercase not-italic tracking-widest\">— David Soria Parra, MCP co-creator / Anthropic, MCP Dev Summit North America 2026</cite></blockquote><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>That quote is the whole problem in one sentence. Every one of those connections is a credentialed bridge between an autonomous agent and a system of record, created without a change ticket. The security picture around it is genuinely uncomfortable. Independent analyses describe a meaningful share of public MCP servers relying on static secrets for authentication, and a non-trivial fraction being lookalikes that impersonate legitimate products. We treat the specific percentages in those reports as secondary, vendor-sourced estimates rather than audited fact — but the direction is not in dispute: the authentication posture of the public ecosystem is weak, and the impersonation surface is real.</p><p>Aggregator coverage of the summit also points to dozens of CVEs filed against MCP implementations in early 2026 and a slice of public servers affected by tool poisoning. Because those figures trace to a single secondary source rather than primary CVE databases, we cite them only as a qualitative signal — there were enough vulnerabilities disclosed to make security the summit&#x27;s dominant track, and the tool-poisoning class is real, regardless of the precise count.</p></div><div class=\"my-8 flex flex-col gap-4\"><div class=\"relative flex flex-col gap-5 rounded-2xl border border-zinc-200 bg-white p-6 md:flex-row md:gap-8 md:p-7 dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex items-start gap-4 md:w-[220px] md:shrink-0 md:flex-col md:gap-3\"><div class=\"flex flex-1 flex-col gap-1.5\"><div class=\"font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\">Discovery gap</div><h5 class=\"m-0 font-medium text-[18px] text-zinc-950 leading-[1.3] tracking-[-0.01em] dark:text-white\">More deployments than IT expects</h5></div><div class=\"flex items-baseline gap-1 font-light text-[48px] text-zinc-900 leading-none tracking-[-0.03em] md:order-first dark:text-zinc-100\">3–10<span class=\"font-mono font-normal text-[14px] text-ignition\">×</span></div></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[13.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">The recurring finding across Shadow MCP analyses: organisations consistently uncover several times more MCP servers than their IT teams approved, creating immediate compliance gaps.</p><div class=\"w-full self-start border-zinc-100 border-t pt-2 text-left md:self-end md:text-right dark:border-zinc-800\"><span class=\"font-mono text-[10px] text-ignition uppercase tracking-widest\">Quarterly audit, not one-time cleanup</span></div></div></div><div class=\"relative flex flex-col gap-5 rounded-2xl border border-zinc-200 bg-white p-6 md:flex-row md:gap-8 md:p-7 dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex items-start gap-4 md:w-[220px] md:shrink-0 md:flex-col md:gap-3\"><div class=\"flex flex-1 flex-col gap-1.5\"><div class=\"font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\">Why it hides</div><h5 class=\"m-0 font-medium text-[18px] text-zinc-950 leading-[1.3] tracking-[-0.01em] dark:text-white\">Evasion mechanisms</h5></div><div class=\"flex items-baseline gap-1 font-light text-[48px] text-zinc-900 leading-none tracking-[-0.03em] md:order-first dark:text-zinc-100\">3</div></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[13.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">MCP servers bind to localhost, listen on random high ports, or sit behind reverse proxies — and surface inside IDE plugins as production dependencies. Conventional asset inventories miss all three.</p><div class=\"w-full self-start border-zinc-100 border-t pt-2 text-left md:self-end md:text-right dark:border-zinc-800\"><span class=\"font-mono text-[10px] text-ignition uppercase tracking-widest\">localhost · high ports · reverse proxy</span></div></div></div><div class=\"relative flex flex-col gap-5 rounded-2xl border border-zinc-200 bg-white p-6 md:flex-row md:gap-8 md:p-7 dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex items-start gap-4 md:w-[220px] md:shrink-0 md:flex-col md:gap-3\"><div class=\"flex flex-1 flex-col gap-1.5\"><div class=\"font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\">Live demo</div><h5 class=\"m-0 font-medium text-[18px] text-zinc-950 leading-[1.3] tracking-[-0.01em] dark:text-white\">Rebinding on local servers</h5></div><div class=\"flex items-baseline gap-1 font-light text-[48px] text-zinc-900 leading-none tracking-[-0.03em] md:order-first dark:text-zinc-100\">DNS</div></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[13.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\">Jonathan Leitschuh demonstrated DNS rebinding vulnerabilities affecting local MCP servers at the summit, with origin-header validation emphasised as the critical safeguard for any localhost-bound server.</p><div class=\"w-full self-start border-zinc-100 border-t pt-2 text-left md:self-end md:text-right dark:border-zinc-800\"><span class=\"font-mono text-[10px] text-ignition uppercase tracking-widest\">Origin validation is mandatory</span></div></div></div></div><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>Here is the operational implication worth coining: MCP sprawl audits are now a recurring IT hygiene task, not a one-time cleanup. The same way endpoint and SaaS inventories became quarterly rituals once Shadow IT matured, MCP discovery belongs on a standing cadence. That governance work is now formal enough that a session titled &quot;From Shadow MCP to Sanctioned MCP&quot; appeared on the schedule at the Mumbai edition of the summit — shadow governance is a named track, not a hallway conversation.</p></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"governance\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">05<!-- --> — <!-- -->Consensus Pattern</span>The enterprise<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">control plane</em> <!-- -->everyone converged on.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>If the summit had a single architectural consensus, it was this: the enterprise MCP control plane is a centralised gateway plus a registry. Organisations converging on the pattern span the full spectrum — Amazon, Uber, AWS, Docker, Kong, Solo.io, Bloomberg, and Cloudflare all described variants of the same shape. A gateway terminates and governs every agent-to-server call; a registry is the single source of truth for which servers exist and who may use them. This is the same logical role an<!-- --> <a class=\"link\" href=\"/blog/llm-gateway-architecture-2026-engineering-reference\">LLM gateway architecture</a> <!-- -->plays for model traffic, applied to tool traffic.</p><p>Uber gave the most concrete production picture. The company disclosed an MCP Gateway and Registry exposing thousands of Thrift, Protobuf, and HTTP endpoints, fronted by a Go-based GenAI Gateway that handles PII redaction. The scale figures it shared — more than 5,000 engineers, over 10,000 internal services, 1,500+ monthly active agents, and 60,000+ agent executions weekly, with its Minions Agent making around 1,800 code changes a week and used by 95% of engineering — are vendor-stated and not independently audited. Even discounted for that, they describe MCP operating as core production infrastructure, not a pilot.</p></div><div class=\"my-8 flex flex-col gap-4\"><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-white/10 bg-[#0a0a0b] text-white\"><div aria-hidden=\"true\" style=\"position:absolute;inset:-1px;border-radius:16px;padding:1px;background:linear-gradient(135deg,#ff6b1a,transparent 60%);-webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none\"></div><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] uppercase tracking-[0.14em] text-ignition-2\"><span class=\"size-1.5 rounded-full bg-current\"></span>Layer 1</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.2] tracking-[-0.02em] text-white\">The<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">gateway</em></h5><div class=\"self-start\"><span class=\"inline-block rounded-md px-2.5 py-1.5 font-mono text-[12px] tracking-[-0.01em] bg-ignition/10 text-ignition-2\">Single ingress for agent → server calls</span></div></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[13.5px] leading-[1.6] text-white/72\">Terminates every MCP call, enforces identity and policy, redacts PII, and emits the audit trail. The natural place to detect Shadow MCP via hostname scanning, URI patterns, and JSON-RPC body inspection.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-sm bg-ignition/10 px-2 py-1 font-mono text-[10px] text-ignition uppercase tracking-[0.12em]\">Identity · policy · audit</span></div></div></div><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] uppercase tracking-[0.14em] text-zinc-500\"><span class=\"size-1.5 rounded-full bg-current\"></span>Layer 2</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.2] tracking-[-0.02em] text-zinc-950 dark:text-white\">The<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">registry</em></h5><div class=\"self-start\"><span class=\"inline-block rounded-md px-2.5 py-1.5 font-mono text-[12px] tracking-[-0.01em] bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300\">Source of truth for sanctioned servers</span></div></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[13.5px] leading-[1.6] text-zinc-600 dark:text-zinc-400\">Catalogues which MCP servers exist, who owns them, and who may use them. Turns Shadow MCP discovery into a closed loop: anything not in the registry is, by definition, unsanctioned.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-sm bg-ignition/10 px-2 py-1 font-mono text-[10px] text-ignition uppercase tracking-[0.12em]\">Catalogue · ownership · approval</span></div></div></div><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] uppercase tracking-[0.14em] text-zinc-500\"><span class=\"size-1.5 rounded-full bg-current\"></span>Layer 3</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.2] tracking-[-0.02em] text-zinc-950 dark:text-white\">Token efficiency</h5><div class=\"self-start\"><span class=\"inline-block rounded-md px-2.5 py-1.5 font-mono text-[12px] tracking-[-0.01em] bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300\">Code-execution patterns at the edge</span></div></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[13.5px] leading-[1.6] text-zinc-600 dark:text-zinc-400\">Cloudflare reported its Code Mode cutting token usage sharply — roughly 9,400 tokens for four servers and 52 tools down to about 600 — by letting the model write code against tool APIs rather than loading every definition into context.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-sm bg-ignition/10 px-2 py-1 font-mono text-[10px] text-ignition uppercase tracking-[0.12em]\">Vendor-stated · ~94% reduction</span></div></div></div></div><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>Cloudflare published a full enterprise MCP reference architecture in mid-April, combining remote MCP servers, Access for SSO and MFA, MCP Server Portals, AI Gateway, and Cloudflare Gateway for shadow-MCP detection. Its claimed Code Mode token reduction — from roughly 9,400 tokens to about 600 — is vendor-stated, but the underlying technique matters more than the exact figure: the same progressive, code-execution approach to tool discovery is how Claude Code defers tool definitions that exceed a context threshold, with Anthropic reporting substantial token savings. Token efficiency, in other words, is becoming a property of the gateway layer, not just the model.</p></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"vendors\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">06<!-- --> — <!-- -->Procurement</span>What each hyperscaler<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">actually</em> <!-- -->ships.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>For an engineering lead making a procurement decision, the useful artefact is a side-by-side of what each vendor now brings to enterprise MCP. The table below compares the major offerings on maturity, core capability, auth model, and audit posture. Every cell traces to the vendor&#x27;s own announcement or independent analyst coverage from the April–June 2026 window.</p></div><figure class=\"my-8 overflow-hidden rounded-2xl border border-zinc-200 dark:border-zinc-800\"><table class=\"w-full border-collapse text-left text-[13.5px]\"><caption class=\"sr-only\">Enterprise MCP governance offerings compared across launch maturity, core capability, auth model, and audit trail.</caption><thead><tr class=\"bg-zinc-950 text-white dark:bg-zinc-900\"><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Offering</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Maturity</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Core capability</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Auth model</th><th class=\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\" scope=\"col\">Audit trail</th></tr></thead><tbody class=\"divide-y divide-zinc-200 text-zinc-700 dark:divide-zinc-800 dark:text-zinc-300\"><tr class=\"align-top\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">AWS MCP Server</td><td class=\"px-4 py-3\">GA — May 6, 2026</td><td class=\"px-4 py-3\">One <code>call_aws</code> tool across 15,000+ AWS API operations, plus doc-search and sandboxed script execution.</td><td class=\"px-4 py-3\">Existing IAM credentials; MCP Proxy bridges to OAuth 2.1; cross-account and cross-role access.</td><td class=\"px-4 py-3\">CloudWatch metrics (<code>AWS-MCP</code> namespace) + CloudTrail for compliance.</td></tr><tr class=\"align-top\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Cloudflare Enterprise MCP</td><td class=\"px-4 py-3\">Reference arch — Apr 14, 2026</td><td class=\"px-4 py-3\">Remote MCP, Server Portals, AI Gateway, and Code Mode token efficiency at the edge.</td><td class=\"px-4 py-3\">Access for SSO/MFA; Cloudflare Gateway for shadow-MCP detection.</td><td class=\"px-4 py-3\">Gateway logging; hostname, URI, and JSON-RPC body inspection.</td></tr><tr class=\"align-top\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Claude MCP Tunnels</td><td class=\"px-4 py-3\">Research preview — May 19, 2026</td><td class=\"px-4 py-3\">Outbound-only encrypted reach to private MCP servers with no inbound firewall rules or public endpoints.</td><td class=\"px-4 py-3\">End-to-end encrypted; regulated-industry rollout first.</td><td class=\"px-4 py-3\">Runs inside the customer perimeter; integrates with existing controls.</td></tr><tr class=\"align-top\"><td class=\"px-4 py-3 font-medium text-zinc-950 dark:text-white\">Claude self-hosted sandboxes</td><td class=\"px-4 py-3\">Public beta — May 19, 2026</td><td class=\"px-4 py-3\">Isolated execution via Cloudflare, Daytona, Modal, or Vercel — plus a bring-your-own option.</td><td class=\"px-4 py-3\">Per-partner isolation; zero-trust secrets injection (Cloudflare) and VPC peering (Vercel).</td><td class=\"px-4 py-3\">Inherits the sandbox provider&#x27;s controls and logging.</td></tr></tbody></table></figure><div class=\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\"><span aria-hidden=\"true\" class=\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\"></span><span class=\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\">The procurement read</span><div class=\"text-[15.5px] text-white leading-[1.6]\">AWS MCP Server is the only fully GA option here and is free — you pay only for the AWS resources you create — which makes it the low-risk starting point for teams already on AWS. Cloudflare is the most complete <em class=\"font-serif text-white italic\">governance</em> <!-- -->story for shadow-MCP detection. Anthropic’s tunnels and sandboxes are the right fit when the constraint is reaching servers inside a locked-down perimeter — but both are pre-GA, so treat them as pilots, not dependencies.</div></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"sandboxes\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">07<!-- --> — <!-- -->Perimeter</span>Sandboxes and tunnels:<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">running</em> <!-- -->inside the perimeter.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>The governance theme had a concrete product moment a few weeks after the summit. At Code with Claude London on May 19, 2026, Anthropic launched self-hosted sandboxes in public beta and MCP tunnels in research preview. Four sandbox launch partners shipped on day one — Cloudflare (microVMs with zero-trust secrets injection), Daytona (composable, long-running, stateful computers), Modal (sub-second startup for AI workloads), and Vercel (VM security plus VPC peering, millisecond startup) — with a bring-your-own-sandbox option alongside. We cover the launch in depth in our companion piece on<!-- --> <a class=\"link\" href=\"/blog/code-with-claude-sandboxes-mcp-tunnels-launch\">self-hosted sandboxes and MCP tunnels</a>.</p><p>MCP tunnels are the more architecturally interesting of the two. A tunnel establishes an outbound-only, end-to-end encrypted connection so an agent can reach a private MCP server without inbound firewall rules, public endpoints, or IP allowlisting. Supported in Managed Agents and the Messages API and still in research preview, Anthropic is rolling access out to regulated industries first. The reason that ordering matters is the reason the whole governance theme exists: the bottleneck on production agents is rarely the model. It is the security review.</p></div><div class=\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\"><span aria-hidden=\"true\" class=\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\"></span><span class=\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\">The real bottleneck</span><div class=\"text-[15.5px] text-white leading-[1.6]\">The compliance and security review — not the model — is what keeps most agents out of production. Self-hosted sandboxes and MCP tunnels exist to let agents run<!-- --> <em class=\"font-serif text-white italic\">inside</em> the customer’s perimeter, with audit logs and identity integration a CISO can sign off on, rather than behind a sandbox the security team takes weeks to clear. That is the layer the summit was really about.</div></div><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>The day-one customer references underline how production-minded the launch was: Amplitude built a Design Agent on Cloudflare, Clay ran its Sculptor GTM engineering agent on Daytona, DoorDash evaluated Modal for agentic commerce, and Rogo ran AI for institutional finance on Vercel. These are not demos. They are early-adopter teams putting agents against real systems, which is exactly the threshold the stateless spec and the gateway pattern are built to support at scale.</p></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"playbook\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">08<!-- --> — <!-- -->Playbook</span>A governance playbook for the<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">next two quarters</em>.</h2><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>The summit&#x27;s lessons collapse into a small number of decisions most engineering organisations can act on now, ahead of the July 28 release. The matrix below is our reading of the priority order — what to do first, and why.</p></div><div class=\"my-8 flex flex-col gap-4\"><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-white/10 bg-[#0a0a0b] text-white\"><div aria-hidden=\"true\" style=\"position:absolute;inset:-1px;border-radius:16px;padding:1px;background:linear-gradient(135deg,#ff6b1a,transparent 60%);-webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none\"></div><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\"><span class=\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\"></span>Audit</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-white\">Run a Shadow MCP<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">discovery</em> <!-- -->sweep</h5></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[14px] leading-[1.6] text-white/72\">Assume IT undercounts MCP deployments by several times. Scan for localhost-bound servers, high-port listeners, and IDE-plugin dependencies. Make this a quarterly hygiene task, not a one-off.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-ignition/10 text-ignition-2\">Do this first</span></div></div></div><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\"><span class=\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\"></span>Architecture</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-zinc-950 dark:text-white\">Plan the stateless migration</h5></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[14px] leading-[1.6] text-zinc-600 dark:text-zinc-400\">If any server holds per-conversation state, the July 28 stateless core is a breaking change. Move state out of sessions now and re-test behind a round-robin load balancer before the release lands.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white\">Roadmap before late July</span></div></div></div><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\"><span class=\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\"></span>Control plane</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-zinc-950 dark:text-white\">Stand up a gateway plus registry</h5></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[14px] leading-[1.6] text-zinc-600 dark:text-zinc-400\">Adopt the consensus pattern: one gateway for identity, policy, PII redaction, and audit; one registry as the source of truth. Anything not in the registry is unsanctioned by definition.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white\">The durable investment</span></div></div></div><div class=\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\"><div class=\"flex flex-col gap-3 md:w-[220px] md:shrink-0\"><div class=\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\"><span class=\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\"></span>Identity</div><h5 class=\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-zinc-950 dark:text-white\">Kill static secrets</h5></div><div class=\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\"></div><div class=\"flex flex-1 flex-col justify-between gap-4\"><p class=\"m-0 text-[14px] leading-[1.6] text-zinc-600 dark:text-zinc-400\">The weakest part of the public ecosystem is authentication. Align with the spec&#x27;s OAuth 2.0 / OpenID Connect hardening, validate issuers, and replace static secrets with short-lived, scoped credentials.</p><div class=\"self-start pt-1 md:self-end\"><span class=\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white\">Close the auth gap</span></div></div></div></div><div class=\"max-w-[720px] [&amp;_*:where(p,h3,ul)]:text-pretty [&amp;_a.link:hover]:bg-ignition/10 [&amp;_a.link:hover]:text-ignition [&amp;_a.link]:border-ignition [&amp;_a.link]:border-b [&amp;_a.link]:pb-px [&amp;_a.link]:font-medium [&amp;_a.link]:text-zinc-950 [&amp;_a.link]:transition-colors [&amp;_a.link]:dark:text-white [&amp;_code]:rounded-[4px] [&amp;_code]:bg-zinc-100 [&amp;_code]:px-1.5 [&amp;_code]:py-0.5 [&amp;_code]:font-mono [&amp;_code]:text-[0.88em] [&amp;_code]:text-zinc-950 [&amp;_code]:dark:bg-zinc-800 [&amp;_code]:dark:text-white [&amp;_h3]:mt-9 [&amp;_h3]:mb-3.5 [&amp;_h3]:font-medium [&amp;_h3]:text-[22px] [&amp;_h3]:text-zinc-950 [&amp;_h3]:leading-tight [&amp;_h3]:tracking-[-0.015em] [&amp;_h3]:dark:text-white [&amp;_p.lede]:mb-7 [&amp;_p.lede]:font-normal [&amp;_p.lede]:text-[19px] [&amp;_p.lede]:text-zinc-950 [&amp;_p.lede]:leading-[1.6] [&amp;_p.lede]:dark:text-white [&amp;_p]:mb-5 [&amp;_p]:text-[17px] [&amp;_p]:text-zinc-800 [&amp;_p]:leading-[1.7] [&amp;_p]:dark:text-zinc-200 [&amp;_strong]:font-semibold [&amp;_strong]:text-zinc-950 [&amp;_strong]:dark:text-white [&amp;_ul]:mb-6 [&amp;_ul]:ml-0 [&amp;_ul]:list-none [&amp;_ul]:p-0 [&amp;_ul_li]:relative [&amp;_ul_li]:mb-2.5 [&amp;_ul_li]:pl-[22px] [&amp;_ul_li]:text-[16px] [&amp;_ul_li]:text-zinc-700 [&amp;_ul_li]:leading-[1.6] [&amp;_ul_li]:before:absolute [&amp;_ul_li]:before:top-[11px] [&amp;_ul_li]:before:left-0.5 [&amp;_ul_li]:before:size-1.5 [&amp;_ul_li]:before:rounded-full [&amp;_ul_li]:before:bg-ignition [&amp;_ul_li]:before:content-[&#x27;&#x27;] [&amp;_ul_li]:dark:text-zinc-300\"><p>For most organisations the sequence matters more than any single item. You cannot govern what you cannot see, so discovery comes first; the stateless migration is the highest-leverage engineering work because it is both breaking and date-bound; and the gateway plus registry is the durable investment that turns discovery into a closed loop. If your team is standing up that control plane from scratch — or weighing AWS, Cloudflare, and Anthropic&#x27;s offerings against your own constraints — our<!-- --> <a class=\"link\" href=\"/services/ai-transformation\">AI transformation engagements</a> <!-- -->start with exactly this kind of architecture and governance work, and our<!-- --> <a class=\"link\" href=\"/services/web-development\">custom development team</a> <!-- -->builds the gateway and registry layer to fit your stack.</p></div><h2 class=\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\" id=\"conclusion\"><span class=\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\">09<!-- --> — <!-- -->Conclusion</span>The moment the protocol<!-- --> <em class=\"font-normal font-serif text-ignition-2 italic\">grew up</em>.</h2><div class=\"relative my-10 overflow-hidden rounded-2xl bg-[#0a0a0b] p-8 text-white\"><div aria-hidden=\"true\" class=\"pointer-events-none absolute right-[-20%] bottom-[-30%] size-[400px] [background:radial-gradient(circle,rgba(255,107,26,0.12),transparent_60%)]\"></div><div class=\"relative mb-3.5 flex items-center gap-2.5 font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\"><span class=\"size-1.5 rounded-full bg-ignition shadow-[0_0_6px_var(--color-ignition)]\"></span>The shape of MCP, mid-2026</div><h3 class=\"relative m-0 mb-4 font-medium text-[22px] text-white leading-[1.2] tracking-[-0.015em]\">MCP&#x27;s open question stopped being &#x27;does this work&#x27; and became &#x27;can a CISO sign off on it&#x27;.</h3><div class=\"relative space-y-3 text-[15.5px] text-white/80 leading-[1.65]\"><p>The 2026 Dev Summit will be remembered less for the 110 million downloads and more for the shift it confirmed. MCP is now infrastructure, and infrastructure is judged on different terms — scalability, identity, audit, and a predictable lifecycle. The incoming July 28 spec answers the first of those by<!-- --> <em class=\"font-serif text-ignition-2 italic\">deleting</em> <!-- -->sessions, and the 12-month deprecation window answers the last by committing to a stable lifecycle.</p><p>The governance story is the one to internalise. Shadow MCP is real, it spreads exactly the way Shadow IT did, and the same antidote applies — visibility first, then a control plane that turns discovery into a closed loop. The consensus on a centralised gateway plus registry, and the arrival of perimeter-friendly tools like self-hosted sandboxes and MCP tunnels, mean the building blocks now exist. The work is operational, not speculative.</p><p>Our advice for engineering leads is unglamorous and effective: run a discovery sweep this quarter, put the stateless migration on the roadmap before late July, stand up a gateway and registry, and close the authentication gap. The protocol grew up at this summit. The organisations that treat it as infrastructure — rather than a clever developer toy — are the ones that will ship agents their security teams actually approve.</p></div></div></article><aside class=\"sticky top-[84px] hidden flex-col gap-5 self-start xl:flex\"><div class=\"rounded-2xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-900\"><span class=\"mb-3.5 block font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\">Share dispatch</span><div class=\"flex flex-col gap-2\"><div class=\"flex flex-wrap gap-2\"><a aria-label=\"Share on X\" class=\"inline-flex h-9 min-w-0 flex-1 items-center justify-center gap-1.5 rounded-md border border-zinc-200 bg-white px-3 font-medium text-[12.5px] text-zinc-600 transition-colors hover:border-zinc-900 hover:bg-zinc-100 hover:text-zinc-950 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:border-white dark:hover:text-white\" href=\"https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.digitalapplied.com%2Fblog%2Fmcp-dev-summit-2026-readout-protocol-roadmap-analysis&amp;text=MCP%20Dev%20Summit%202026%20Readout%3A%20The%20Protocol%20Grows%20Up\" rel=\"noopener noreferrer\" target=\"_blank\"><svg aria-hidden=\"true\" class=\"size-3.5\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"></path></svg> X</a><a aria-label=\"Share on LinkedIn\" class=\"inline-flex h-9 min-w-0 flex-1 items-center justify-center gap-1.5 rounded-md border border-zinc-200 bg-white px-3 font-medium text-[12.5px] text-zinc-600 transition-colors hover:border-zinc-900 hover:bg-zinc-100 hover:text-zinc-950 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:border-white dark:hover:text-white\" href=\"https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.digitalapplied.com%2Fblog%2Fmcp-dev-summit-2026-readout-protocol-roadmap-analysis\" rel=\"noopener noreferrer\" target=\"_blank\"><svg aria-hidden=\"true\" class=\"size-3.5\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.266 2.37 4.266 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.063 2.063 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452z\"></path></svg> LinkedIn</a></div><button class=\"inline-flex h-9 min-w-0 flex-1 items-center justify-center gap-1.5 rounded-md border border-zinc-200 bg-white px-3 font-medium text-[12.5px] text-zinc-600 transition-colors hover:border-zinc-900 hover:bg-zinc-100 hover:text-zinc-950 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:border-white dark:hover:text-white\" type=\"button\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-link2 lucide-link-2 size-3.5\" aria-hidden=\"true\"><path d=\"M9 17H7A5 5 0 0 1 7 7h2\"></path><path d=\"M15 7h2a5 5 0 1 1 0 10h-2\"></path><line x1=\"8\" x2=\"16\" y1=\"12\" y2=\"12\"></line></svg>Copy link</button></div></div><div class=\"relative overflow-hidden rounded-2xl bg-[#0a0a0b] p-5 text-white\"><div aria-hidden=\"true\" style=\"position:absolute;inset:-1px;border-radius:14px;padding:1px;background:linear-gradient(135deg,#ff6b1a,transparent 60%);-webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none\"></div><span class=\"mb-3.5 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.12em]\">AI Insights</span><h4 class=\"m-0 mb-2.5 font-medium text-[15px] text-white leading-[1.3] tracking-[-0.01em]\">Deep dives on AI marketing and development.</h4><p class=\"m-0 mb-3.5 text-[12.5px] text-white/65 leading-normal\">Agentic development, frontier AI models, and data-driven strategies. No recycled AI takes.</p><form class=\"flex flex-col gap-2\"><input aria-label=\"Email address\" autoComplete=\"email\" class=\"w-full rounded-md border border-white/15 bg-black/35 px-3 py-2.5 font-sans text-[13px] text-white outline-none focus:border-ignition disabled:opacity-60\" inputMode=\"email\" placeholder=\"you@work.com\" required=\"\" type=\"email\" name=\"email\" value=\"\"/><input aria-hidden=\"true\" autoComplete=\"off\" class=\"absolute left-[-9999px] h-0 w-0 opacity-0\" tabindex=\"-1\" type=\"text\" name=\"website\" value=\"\"/><button class=\"inline-flex h-auto w-full items-center justify-center rounded-md bg-white py-2.5 font-medium text-[13px] text-zinc-950 transition-colors hover:bg-white/90 disabled:cursor-not-allowed disabled:opacity-60\" type=\"submit\">Subscribe</button></form></div><div class=\"rounded-2xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-900\"><span class=\"mb-3.5 block font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\">Spec timeline</span><h4 class=\"m-0 mb-2.5 font-medium text-[15px] text-zinc-950 dark:text-white\">July 28, 2026</h4><div class=\"mb-1 font-mono text-[12px] text-zinc-950 dark:text-white\">RC locked May 21 · stateless core</div><p class=\"m-0 text-[12px] text-zinc-500 leading-normal\">The July 28 spec is an announced release, not a shipped one. Confirm final wording against the official MCP specification before you re-architect a server around it.</p></div></aside></div></section><section class=\"relative isolate overflow-hidden bg-[#0a0a0b] py-20 text-white\"><div aria-hidden=\"true\" class=\"pointer-events-none absolute inset-0 [-webkit-mask-image:radial-gradient(ellipse_at_center,black_30%,transparent_75%)] [background-image:linear-gradient(rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.03)_1px,transparent_1px)] [background-size:56px_56px] [mask-image:radial-gradient(ellipse_at_center,black_30%,transparent_75%)]\"></div><div aria-hidden=\"true\" class=\"pointer-events-none absolute top-1/2 left-1/2 size-[900px] -translate-x-1/2 -translate-y-1/2 blur-[30px] [background:radial-gradient(circle,rgba(255,107,26,0.18),rgba(255,107,26,0.04)_30%,transparent_65%)]\"></div><div class=\"relative z-[2] mx-auto grid max-w-[1320px] items-center gap-14 px-4 md:px-8 lg:grid-cols-[1.3fr_1fr]\"><div><span class=\"mb-4.5 inline-flex items-center gap-2.5 font-mono text-[11px] text-ignition uppercase tracking-[0.14em]\"><span class=\"h-px w-5 bg-ignition\"></span>Govern MCP like infrastructure</span><h2 class=\"m-0 mb-4.5 font-light text-[clamp(30px,3.8vw,50px)] leading-[1.04] tracking-[-0.03em]\">Turn an unmanaged MCP sprawl into a governed control plane your CISO will<!-- --> <em class=\"bg-clip-text font-normal font-serif text-transparent italic\" style=\"background-image:linear-gradient(180deg, #fff 40%, var(--color-ignition-2) 80%, var(--color-ignition) 100%)\">sign off on</em>.</h2><p class=\"m-0 mb-7 max-w-[520px] text-[16px] text-white/72 leading-[1.6]\">Our team helps organisations govern, scale, and secure their MCP deployments — Shadow MCP discovery, gateway-plus-registry control planes, stateless migration, and identity hardening — delivered in days, not quarters.</p><div class=\"mb-6 flex flex-wrap gap-3\"><a class=\"group relative inline-flex h-[52px] items-center justify-center gap-2 overflow-hidden rounded-lg bg-[#0a0a0b] px-7 font-medium text-[15px] text-white shadow-[0_0_0_1px_#0a0a0b,0_10px_30px_-10px_rgba(255,107,26,0.4)] transition-transform hover:-translate-y-0.5\" href=\"/get-started\"><span class=\"relative z-[1]\">Get started</span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-right relative z-[1] size-4 transition-transform group-hover:translate-x-0.5\" aria-hidden=\"true\"><path d=\"M7 7h10v10\"></path><path d=\"M7 17 17 7\"></path></svg></a><a class=\"inline-flex h-[52px] items-center justify-center gap-2 rounded-lg border border-white/15 bg-white/5 px-7 font-medium text-[15px] text-white transition-colors hover:border-white/30 hover:bg-white/10\" href=\"/services/ai-transformation\">Explore AI &amp; digital transformation</a></div><div class=\"flex flex-wrap gap-x-7 gap-y-2 font-mono text-[11px] text-white/55 uppercase tracking-[0.1em]\"><span class=\"inline-flex items-center gap-2\"><span class=\"size-1.5 rounded-full bg-ignition\"></span>Free consultation</span><span class=\"inline-flex items-center gap-2\"><span class=\"size-1.5 rounded-full bg-ignition\"></span>Expert guidance</span><span class=\"inline-flex items-center gap-2\"><span class=\"size-1.5 rounded-full bg-ignition\"></span>Tailored solutions</span></div></div><div class=\"relative overflow-hidden rounded-2xl border border-white/10 bg-white/[0.04] p-7\"><div aria-hidden=\"true\" style=\"position:absolute;inset:-1px;border-radius:18px;padding:1px;background:linear-gradient(135deg,#ff6b1a,transparent 60%);-webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none\"></div><span class=\"mb-3.5 block font-mono text-[11px] text-ignition-2 uppercase tracking-[0.14em]\">What we work on</span><h4 class=\"m-0 mb-3.5 font-medium text-[19px] text-white tracking-[-0.01em]\">Enterprise MCP engagements</h4><ul class=\"m-0 list-none p-0\"><li class=\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\"><span class=\"font-mono text-[13px] text-ignition\">→</span>Shadow MCP discovery sweeps and quarterly hygiene cadence</li><li class=\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\"><span class=\"font-mono text-[13px] text-ignition\">→</span>Gateway plus registry control-plane architecture</li><li class=\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\"><span class=\"font-mono text-[13px] text-ignition\">→</span>Stateless migration ahead of the July 28 spec</li><li class=\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\"><span class=\"font-mono text-[13px] text-ignition\">→</span>OAuth / OpenID Connect identity hardening</li><li class=\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\"><span class=\"font-mono text-[13px] text-ignition\">→</span>Vendor evaluation — AWS, Cloudflare, Anthropic governance</li></ul></div></div></section><section class=\"border-zinc-200 border-t bg-white py-24 dark:border-zinc-800 dark:bg-zinc-950\" id=\"faq\"><div class=\"mx-auto max-w-[960px] px-4 md:px-8\"><div class=\"mb-12\"><div class=\"mb-3.5 inline-flex items-center gap-2.5 font-mono text-[11px] text-zinc-500 uppercase tracking-[0.14em]\"><span class=\"h-px w-5 bg-ignition\"></span>FAQ · MCP Dev Summit 2026</div><h2 class=\"m-0 font-normal text-[clamp(32px,4vw,48px)] text-zinc-950 leading-[1.05] tracking-[-0.03em] dark:text-white\">The questions engineering leads<!-- --> <em class=\"font-normal font-serif italic\">keep asking.</em></h2></div><div class=\"border-zinc-200 border-t dark:border-zinc-800\"><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-0\" aria-expanded=\"true\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>What was the MCP Dev Summit 2026 and why does it matter?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all rotate-45 border-ignition bg-ignition text-white\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button><div class=\"mt-3.5 max-w-[760px] text-[15px] text-zinc-600 leading-[1.65] dark:text-zinc-400\" id=\"faq-answer-0\">MCP Dev Summit North America 2026 ran April 2–3, 2026 at the New York Marriott Marquis and drew roughly 1,200 attendees, about double the prior summit. Across 17 keynotes and more than 95 sessions, security was the single most represented theme with 23 dedicated sessions. The significance is the reframing it confirmed: the Model Context Protocol stopped being judged on adoption — the headline was 110 million monthly SDK downloads — and started being judged on enterprise terms like governance, identity, audit, and scalability. The summit marked the protocol&#x27;s transition from a fast-growing developer standard into load-bearing infrastructure inside large organisations.</div></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-1\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>What does the July 28, 2026 MCP spec change?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-2\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>Why is the stateless change such a big deal?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-3\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>What is Shadow MCP?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-4\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>How are enterprises being told to govern MCP?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-5\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>How many MCP downloads and servers are there?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-6\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>What are MCP tunnels and self-hosted sandboxes?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div><div class=\"border-zinc-200 border-b py-5 dark:border-zinc-800\"><button aria-controls=\"faq-answer-7\" aria-expanded=\"false\" class=\"flex w-full cursor-pointer items-center justify-between gap-4 bg-transparent p-0 text-left font-medium text-[17px] text-zinc-950 tracking-[-0.01em] dark:text-white\" type=\"button\"><span>What should my team do before the July 28 spec lands?</span><span class=\"flex size-7 shrink-0 items-center justify-center rounded-full border transition-all border-zinc-200 text-zinc-600 dark:border-zinc-700 dark:text-zinc-400\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus size-3.5\" aria-hidden=\"true\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\"></path></svg></span></button></div></div></div></section><section class=\"bg-zinc-100 py-24 dark:bg-zinc-900\"><div class=\"mx-auto max-w-[1320px] px-4 md:px-8\"><div class=\"mb-10\"><div class=\"mb-3.5 inline-flex items-center gap-2.5 font-mono text-[11px] text-zinc-500 uppercase tracking-[0.14em]\"><span class=\"h-px w-5 bg-ignition\"></span>Related dispatches</div><h2 class=\"m-0 font-normal text-[clamp(30px,3.6vw,44px)] text-zinc-950 leading-[1.05] tracking-[-0.025em] dark:text-white\">Continue exploring<!-- --> <em class=\"font-normal font-serif italic\">the MCP ecosystem.</em></h2></div><div class=\"grid gap-4 md:grid-cols-3\"><a class=\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\" href=\"/blog/mcp-server-ecosystem-tracker-50-servers-cataloged-2026\"><span class=\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\">AI Development</span><h4 class=\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\">MCP Server Ecosystem Tracker: 56 Servers Cataloged 2026</h4><p class=\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\">Issue #1 of the MCP server tracker — 56 production-ready servers cataloged across 10 categories with auth model, transport, maintainer, and status.</p><div class=\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\"><span>May 25, 2026<!-- --> · <!-- -->15<!-- --> min</span><span class=\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\">Read <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-right size-3.5\" aria-hidden=\"true\"><path d=\"M7 7h10v10\"></path><path d=\"M7 17 17 7\"></path></svg></span></div></a><a class=\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\" href=\"/blog/gemini-cli-to-antigravity-cli-migration-june-18-2026-guide\"><span class=\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\">AI Development</span><h4 class=\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\">Gemini CLI Dies June 18: The Antigravity Migration Guide</h4><p class=\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\">Gemini CLI stops serving Pro, Ultra, and free users on June 18, 2026. The 45-minute migration to Antigravity CLI, the silent failures, and the quota regression.</p><div class=\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\"><span>June 9, 2026<!-- --> · <!-- -->12<!-- --> min</span><span class=\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\">Read <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-right size-3.5\" aria-hidden=\"true\"><path d=\"M7 7h10v10\"></path><path d=\"M7 17 17 7\"></path></svg></span></div></a><a class=\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\" href=\"/blog/anthropic-self-hosted-sandbox-7-production-patterns-2026\"><span class=\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\">AI Development</span><h4 class=\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\">Anthropic Self-Hosted Sandbox: 7 Production Patterns 2026</h4><p class=\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\">Seven production patterns for Anthropic&#x27;s self-hosted sandbox from Code with Claude London — Docker isolation, MCP tunnels, HITL gates, evals, rollback.</p><div class=\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\"><span>May 25, 2026<!-- --> · <!-- -->19<!-- --> min</span><span class=\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\">Read <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-right size-3.5\" aria-hidden=\"true\"><path d=\"M7 7h10v10\"></path><path d=\"M7 17 17 7\"></path></svg></span></div></a><a class=\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\" href=\"/blog/code-with-claude-sandboxes-mcp-tunnels-launch\"><span class=\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\">AI Development</span><h4 class=\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\">Code with Claude London: Sandboxes + MCP Tunnels Launch</h4><p class=\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\">Anthropic launches self-hosted agent sandboxes (public beta) and MCP tunnels (research preview) at Code with Claude London. Enterprise agent guide.</p><div class=\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\"><span>May 19, 2026<!-- --> · <!-- -->13<!-- --> min</span><span class=\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\">Read <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-right size-3.5\" aria-hidden=\"true\"><path d=\"M7 7h10v10\"></path><path d=\"M7 17 17 7\"></path></svg></span></div></a></div></div></section><!--$--><!--/$--></main><footer class=\"border-white/10 border-t bg-[#0a0a0b] py-16 text-white/60\"><div class=\"mx-auto grid max-w-7xl gap-12 px-4 md:px-8 lg:grid-cols-[1.4fr_1fr_1fr_1fr_1fr]\"><div><a aria-label=\"Digital Applied\" class=\"inline-block\" href=\"/\"><img alt=\"Digital Applied\" loading=\"lazy\" width=\"160\" height=\"40\" decoding=\"async\" data-nimg=\"1\" style=\"color:transparent;height:24px;width:auto\" src=\"/logo-white.svg\"/></a><p class=\"mt-4 max-w-[320px] text-sm leading-relaxed\">An agentic growth partner for teams that would rather ship than schedule. Full-service digital marketing, delivered in days.</p><div class=\"mt-6\"><div class=\"flex gap-4 text-white/50\"><a aria-label=\"Follow us on X (Twitter)\" class=\"text-muted-foreground transition-colors hover:text-foreground\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://x.com/digitalapplied\"><svg class=\"h-5 w-5 text-white/50 hover:text-white transition-colors\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><title>X (Twitter)</title><path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"></path></svg></a><a aria-label=\"Follow us on Facebook\" class=\"text-muted-foreground transition-colors hover:text-foreground\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://www.facebook.com/digitalapplied\"><svg class=\"h-5 w-5 text-white/50 hover:text-white transition-colors\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><title>Facebook</title><path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\"></path></svg></a><a aria-label=\"Follow us on Instagram\" class=\"text-muted-foreground transition-colors hover:text-foreground\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://www.instagram.com/digital_applied\"><svg class=\"h-5 w-5 text-white/50 hover:text-white transition-colors\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><title>Instagram</title><path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zM5.838 12a6.162 6.162 0 1112.324 0 6.162 6.162 0 01-12.324 0zM12 16a4 4 0 110-8 4 4 0 010 8zm4.965-10.405a1.44 1.44 0 112.881.001 1.44 1.44 0 01-2.881-.001z\"></path></svg></a><a aria-label=\"Follow us on LinkedIn\" class=\"text-muted-foreground transition-colors hover:text-foreground\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://www.linkedin.com/company/digitalapplied\"><svg class=\"h-5 w-5 text-white/50 hover:text-white transition-colors\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><title>LinkedIn</title><path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"></path></svg></a></div></div></div><div><h5 class=\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\">Services</h5><ul class=\"space-y-1\"><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/services/agentic-seo\">SEO</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/services/paid-media\">PPC</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/services/content-engine\">Content</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/services/web-development\">Web Dev</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/services/crm-automation\">CRM</a></li></ul></div><div><h5 class=\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\">Company</h5><ul class=\"space-y-1\"><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/about\">About</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/#process\">Process</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/contact\">Contact</a></li></ul></div><div><h5 class=\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\">Resources</h5><ul class=\"space-y-1\"><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog\">Blog</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/ai-tools\">AI Tools</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/privacy-policy\">Privacy</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/terms-of-service\">Terms</a></li></ul></div><div><h5 class=\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\">Topics</h5><ul class=\"space-y-1\"><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/ai-development\">AI Development</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/seo\">SEO</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/marketing\">Marketing</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/ecommerce\">eCommerce</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/business\">Business</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/crm-automation\">CRM &amp; Automation</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/category/development\">Development</a></li><li><a class=\"block py-1 text-sm transition-colors hover:text-white\" href=\"/blog/tags\">All Topics →</a></li></ul></div></div><div class=\"mx-auto mt-12 flex max-w-7xl flex-col items-start justify-between gap-3 border-white/10 border-t px-4 pt-6 font-mono text-[11px] text-white/40 uppercase tracking-widest sm:flex-row sm:items-center md:px-8\"><span>© <!-- -->2026<!-- --> Digital Applied</span><span>All systems nominal</span></div></footer></div><script src=\"/_next/static/chunks/0fh1k_r~b~e_o.js\" id=\"_R_\" async=\"\"></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,\"1:\\\"$Sreact.fragment\\\"\\n2:I[636356,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"GoogleTagManager\\\"]\\n3:I[728231,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"TooltipProvider\\\"]\\n4:I[989144,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"default\\\"]\\n5:I[818602,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"default\\\"]\\n6:I[636768,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/13b9o4nx8cmv5.js\\\"],\\\"default\\\"]\\ne:I[153782,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"default\\\",1]\\n:HL[\\\"/_next/static/chunks/0x5hulsdcv16j.css\\\",\\\"style\\\"]\\n:HL[\\\"/_next/static/chunks/1375h7jyi~127.css\\\",\\\"style\\\"]\\n:HL[\\\"/_next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2\\\",\\\"font\\\",{\\\"crossOrigin\\\":\\\"\\\",\\\"type\\\":\\\"font/woff2\\\"}]\\n:HL[\\\"/_next/static/media/7ebf22b5a21034f8-s.p.10_7676vm7pyy.woff2\\\",\\\"font\\\",{\\\"crossOrigin\\\":\\\"\\\",\\\"type\\\":\\\"font/woff2\\\"}]\\n:HL[\\\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\\\",\\\"font\\\",{\\\"crossOrigin\\\":\\\"\\\",\\\"type\\\":\\\"font/woff2\\\"}]\\n:HL[\\\"/_next/static/media/e41d5df559864f9e-s.p.0gq7fw9.sy_5..woff2\\\",\\\"font\\\",{\\\"crossOrigin\\\":\\\"\\\",\\\"type\\\":\\\"font/woff2\\\"}]\\n7:Td63,\"])</script><script>self.__next_f.push([1,\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"LocalBusiness\\\",\\\"@id\\\":\\\"https://www.digitalapplied.com/#organization\\\",\\\"name\\\":\\\"Digital Applied\\\",\\\"legalName\\\":\\\"Digital Applied, s. r. o.\\\",\\\"url\\\":\\\"https://www.digitalapplied.com\\\",\\\"logo\\\":{\\\"@type\\\":\\\"ImageObject\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/logo-black.svg\\\",\\\"width\\\":\\\"512\\\",\\\"height\\\":\\\"512\\\"},\\\"image\\\":\\\"https://www.digitalapplied.com/opengraph-image\\\",\\\"description\\\":\\\"International digital marketing agency specializing in SEO, PPC, social media marketing, and AI-powered digital transformation for global clients\\\",\\\"foundingDate\\\":\\\"2019-05-01\\\",\\\"telephone\\\":\\\"+421-90-246-8050\\\",\\\"email\\\":\\\"info@digitalapplied.com\\\",\\\"address\\\":{\\\"@type\\\":\\\"PostalAddress\\\",\\\"streetAddress\\\":\\\"Priemyselná 668/7\\\",\\\"addressLocality\\\":\\\"Bratislava\\\",\\\"addressRegion\\\":\\\"Bratislava\\\",\\\"postalCode\\\":\\\"821 09\\\",\\\"addressCountry\\\":\\\"SK\\\"},\\\"geo\\\":{\\\"@type\\\":\\\"GeoCoordinates\\\",\\\"latitude\\\":48.142672,\\\"longitude\\\":17.168666},\\\"sameAs\\\":[\\\"https://x.com/digitalapplied\\\",\\\"https://www.facebook.com/digitalapplied\\\",\\\"https://www.instagram.com/digital_applied\\\",\\\"https://www.linkedin.com/company/digitalapplied\\\"],\\\"areaServed\\\":[{\\\"@type\\\":\\\"Country\\\",\\\"name\\\":\\\"United States\\\"},{\\\"@type\\\":\\\"Country\\\",\\\"name\\\":\\\"United Kingdom\\\"},{\\\"@type\\\":\\\"Country\\\",\\\"name\\\":\\\"Canada\\\"},{\\\"@type\\\":\\\"Country\\\",\\\"name\\\":\\\"Australia\\\"},{\\\"@type\\\":\\\"Place\\\",\\\"name\\\":\\\"European Union\\\"},{\\\"@type\\\":\\\"Place\\\",\\\"name\\\":\\\"Worldwide\\\"}],\\\"priceRange\\\":\\\"€€€-€€€€\\\",\\\"paymentAccepted\\\":[\\\"Credit Card\\\",\\\"Wire Transfer\\\",\\\"PayPal\\\"],\\\"currenciesAccepted\\\":\\\"EUR, USD, GBP\\\",\\\"openingHoursSpecification\\\":[{\\\"@type\\\":\\\"OpeningHoursSpecification\\\",\\\"dayOfWeek\\\":[\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\"],\\\"opens\\\":\\\"07:30\\\",\\\"closes\\\":\\\"17:00\\\"},{\\\"@type\\\":\\\"OpeningHoursSpecification\\\",\\\"dayOfWeek\\\":\\\"Saturday\\\",\\\"opens\\\":\\\"08:00\\\",\\\"closes\\\":\\\"11:00\\\"}],\\\"contactPoint\\\":{\\\"@type\\\":\\\"ContactPoint\\\",\\\"telephone\\\":\\\"+421-90-246-8050\\\",\\\"contactType\\\":\\\"customer service\\\",\\\"email\\\":\\\"info@digitalapplied.com\\\",\\\"availableLanguage\\\":[\\\"English\\\",\\\"Slovak\\\"],\\\"areaServed\\\":\\\"Worldwide\\\"},\\\"vatID\\\":\\\"SK2120914510\\\",\\\"taxID\\\":\\\"52125670\\\",\\\"identifier\\\":{\\\"@type\\\":\\\"PropertyValue\\\",\\\"propertyID\\\":\\\"Company ID\\\",\\\"value\\\":\\\"52125670\\\"},\\\"hasOfferCatalog\\\":{\\\"@type\\\":\\\"OfferCatalog\\\",\\\"name\\\":\\\"Digital Marketing Services\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"SEO Optimization\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/agentic-seo\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"PPC Advertising\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/paid-media\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"Social Media Marketing\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/social-media\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"Web Development\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/web-development\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"Content Marketing\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/content-engine\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"Analytics \\u0026 Insights\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/analytics\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"eCommerce Solutions\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/ecommerce\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"CRM \\u0026 Automation\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/crm-automation\\\"}},{\\\"@type\\\":\\\"Offer\\\",\\\"itemOffered\\\":{\\\"@type\\\":\\\"Service\\\",\\\"name\\\":\\\"AI \\u0026 Digital Transformation\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/services/ai-transformation\\\"}}]}}\"])</script><script>self.__next_f.push([1,\"0:{\\\"P\\\":null,\\\"c\\\":[\\\"\\\",\\\"blog\\\",\\\"mcp-dev-summit-2026-readout-protocol-roadmap-analysis\\\"],\\\"q\\\":\\\"\\\",\\\"i\\\":false,\\\"f\\\":[[[\\\"\\\",{\\\"children\\\":[\\\"(marketing)\\\",{\\\"children\\\":[\\\"blog\\\",{\\\"children\\\":[\\\"mcp-dev-summit-2026-readout-protocol-roadmap-analysis\\\",{\\\"children\\\":[\\\"__PAGE__\\\",{}]}]}]}]},\\\"$undefined\\\",\\\"$undefined\\\",16],[[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/0x5hulsdcv16j.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"link\\\",\\\"1\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/1375h7jyi~127.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-1\\\",{\\\"src\\\":\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-2\\\",{\\\"src\\\":\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-3\\\",{\\\"src\\\":\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]],[\\\"$\\\",\\\"html\\\",null,{\\\"className\\\":\\\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable instrument_serif_535d8616-module__GDyPrG__variable font-sans\\\",\\\"lang\\\":\\\"en\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L2\\\",null,{\\\"gtmId\\\":\\\"GTM-NGSFB45\\\"}],[\\\"$\\\",\\\"head\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"link\\\",null,{\\\"href\\\":\\\"/manifest.json\\\",\\\"rel\\\":\\\"manifest\\\"}],[\\\"$\\\",\\\"link\\\",null,{\\\"href\\\":\\\"/feed.xml\\\",\\\"rel\\\":\\\"alternate\\\",\\\"title\\\":\\\"Digital Applied Blog\\\",\\\"type\\\":\\\"application/rss+xml\\\"}],[\\\"$\\\",\\\"meta\\\",null,{\\\"content\\\":\\\"#18181b\\\",\\\"name\\\":\\\"theme-color\\\"}],[\\\"$\\\",\\\"meta\\\",null,{\\\"content\\\":\\\"DigitalApplied\\\",\\\"name\\\":\\\"apple-mobile-web-app-title\\\"}]]}],[\\\"$\\\",\\\"body\\\",null,{\\\"className\\\":\\\"antialiased\\\",\\\"suppressHydrationWarning\\\":true,\\\"children\\\":[\\\"$\\\",\\\"$L3\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$L4\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L5\\\",null,{}],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":[[\\\"$\\\",\\\"$L6\\\",null,{}],[]],\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"}]}]}]]}]]}],{\\\"children\\\":[[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-1\\\",{\\\"src\\\":\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]],[[\\\"$\\\",\\\"script\\\",null,{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"$7\\\"},\\\"type\\\":\\\"application/ld+json\\\"}],\\\"$L8\\\"]]}],{\\\"children\\\":[\\\"$L9\\\",{\\\"children\\\":[\\\"$La\\\",{\\\"children\\\":[\\\"$Lb\\\",{},null,false,null]},null,false,\\\"$@c\\\"]},null,false,null]},null,false,null]},null,false,null],\\\"$Ld\\\",false]],\\\"m\\\":\\\"$undefined\\\",\\\"G\\\":[\\\"$e\\\",[\\\"$Lf\\\",\\\"$L10\\\"]],\\\"S\\\":true,\\\"h\\\":null,\\\"s\\\":\\\"$undefined\\\",\\\"l\\\":\\\"$undefined\\\",\\\"p\\\":\\\"$undefined\\\",\\\"d\\\":\\\"$undefined\\\",\\\"b\\\":\\\"tXRPb33_59-_LLf5KV9fu\\\"}\\n\"])</script><script>self.__next_f.push([1,\"11:I[261824,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\"],\\\"LaunchBanner\\\"]\\n12:I[621915,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"HoverPrefetchLink\\\"]\\n13:I[103403,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\"],\\\"Image\\\"]\\n14:I[489752,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\"],\\\"MobileNav\\\"]\\n1f:I[953520,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"BlogProgressBar\\\"]\\n29:I[488518,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"ViewportBoundary\\\"]\\n2b:I[488518,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"MetadataBoundary\\\"]\\n2c:\\\"$Sreact.suspense\\\"\\n\"])</script><script>self.__next_f.push([1,\"8:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex min-h-screen flex-col\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L11\\\",null,{}],[\\\"$\\\",\\\"nav\\\",null,{\\\"className\\\":\\\"sticky top-0 z-40 w-full border-border/60 border-b bg-background/80 backdrop-blur-md supports-backdrop-filter:bg-background/70\\\",\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mx-auto max-w-7xl px-4 md:px-8\\\",\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex h-17 items-center justify-between\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"aria-label\\\":\\\"Digital Applied\\\",\\\"className\\\":\\\"flex items-center\\\",\\\"href\\\":\\\"/\\\",\\\"children\\\":[\\\"$\\\",\\\"$L13\\\",null,{\\\"alt\\\":\\\"Digital Applied\\\",\\\"className\\\":\\\"h-6 w-auto\\\",\\\"height\\\":280,\\\"priority\\\":true,\\\"src\\\":\\\"/logo-black.svg\\\",\\\"width\\\":1556}]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden items-center gap-1 md:flex\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",\\\"/services\\\",{\\\"className\\\":\\\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\\\",\\\"href\\\":\\\"/services\\\",\\\"children\\\":\\\"Services\\\"}],[\\\"$\\\",\\\"$L12\\\",\\\"/ai-tools\\\",{\\\"className\\\":\\\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\\\",\\\"href\\\":\\\"/ai-tools\\\",\\\"children\\\":\\\"AI Tools\\\"}],[\\\"$\\\",\\\"$L12\\\",\\\"/blog\\\",{\\\"className\\\":\\\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\\\",\\\"href\\\":\\\"/blog\\\",\\\"children\\\":\\\"Blog\\\"}],[\\\"$\\\",\\\"$L12\\\",\\\"/about\\\",{\\\"className\\\":\\\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\\\",\\\"href\\\":\\\"/about\\\",\\\"children\\\":\\\"About\\\"}],[\\\"$\\\",\\\"$L12\\\",\\\"/contact\\\",{\\\"className\\\":\\\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\\\",\\\"href\\\":\\\"/contact\\\",\\\"children\\\":\\\"Contact\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden items-center gap-2.5 md:flex\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"rounded-lg px-3.5 py-2 font-medium text-[13.5px] text-zinc-800 transition-colors hover:bg-muted\\\",\\\"href\\\":\\\"/auth/login\\\",\\\"children\\\":\\\"Log in\\\"}],[\\\"$\\\",\\\"$L12\\\",null,{\\\"href\\\":\\\"/get-started\\\",\\\"children\\\":\\\"Start engines\\\",\\\"data-slot\\\":\\\"button\\\",\\\"data-variant\\\":\\\"default\\\",\\\"data-size\\\":\\\"sm\\\",\\\"className\\\":\\\"group/button inline-flex shrink-0 items-center justify-center border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [\\u0026_svg]:pointer-events-none [\\u0026_svg]:shrink-0 [\\u0026_svg:not([class*='size-'])]:size-4 bg-primary text-primary-foreground hover:bg-primary/80 gap-1 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 h-9.5 rounded-lg px-4\\\",\\\"ref\\\":null}]]}],[\\\"$\\\",\\\"$L14\\\",null,{\\\"items\\\":[{\\\"href\\\":\\\"/services\\\",\\\"label\\\":\\\"Services\\\"},{\\\"href\\\":\\\"/ai-tools\\\",\\\"label\\\":\\\"AI Tools\\\"},{\\\"href\\\":\\\"/blog\\\",\\\"label\\\":\\\"Blog\\\"},{\\\"href\\\":\\\"/about\\\",\\\"label\\\":\\\"About\\\"},{\\\"href\\\":\\\"/contact\\\",\\\"label\\\":\\\"Contact\\\"}]}]]}]}]}],[\\\"$\\\",\\\"main\\\",null,{\\\"className\\\":\\\"grow\\\",\\\"children\\\":[\\\"$\\\",\\\"$L4\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L5\\\",null,{}],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":[[\\\"$\\\",\\\"$L6\\\",null,{}],[]],\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"}]}],[\\\"$\\\",\\\"footer\\\",null,{\\\"className\\\":\\\"border-white/10 border-t bg-[#0a0a0b] py-16 text-white/60\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mx-auto grid max-w-7xl gap-12 px-4 md:px-8 lg:grid-cols-[1.4fr_1fr_1fr_1fr_1fr]\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"aria-label\\\":\\\"Digital Applied\\\",\\\"className\\\":\\\"inline-block\\\",\\\"href\\\":\\\"/\\\",\\\"children\\\":[\\\"$\\\",\\\"$L13\\\",null,{\\\"alt\\\":\\\"Digital Applied\\\",\\\"height\\\":40,\\\"src\\\":\\\"/logo-white.svg\\\",\\\"style\\\":{\\\"height\\\":24,\\\"width\\\":\\\"auto\\\"},\\\"width\\\":160}]}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"mt-4 max-w-[320px] text-sm leading-relaxed\\\",\\\"children\\\":\\\"An agentic growth partner for teams that would rather ship than schedule. Full-service digital marketing, delivered in days.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-6\\\",\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex gap-4 text-white/50\\\",\\\"children\\\":[\\\"$L15\\\",\\\"$L16\\\",\\\"$L17\\\",\\\"$L18\\\"]}]}]]}],\\\"$L19\\\",\\\"$L1a\\\",\\\"$L1b\\\",\\\"$L1c\\\"]}],\\\"$L1d\\\"]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"9:[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$L4\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L5\\\",null,{}],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$undefined\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"}]]}]\\na:[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$L4\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L5\\\",null,{}],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":\\\"$undefined\\\",\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"}]]}]\\n1e:T6d4,\"])</script><script>self.__next_f.push([1,\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BlogPosting\\\",\\\"@id\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis#article\\\",\\\"headline\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\\\",\\\"description\\\":\\\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\\\",\\\"datePublished\\\":\\\"2026-06-12T00:00:00+01:00\\\",\\\"dateModified\\\":\\\"2026-06-12T00:00:00+01:00\\\",\\\"author\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"@id\\\":\\\"https://www.digitalapplied.com/authors/digital-applied-team#author\\\",\\\"name\\\":\\\"Digital Applied Team\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/authors/digital-applied-team\\\"},\\\"publisher\\\":{\\\"@id\\\":\\\"https://www.digitalapplied.com/#organization\\\"},\\\"image\\\":{\\\"@type\\\":\\\"ImageObject\\\",\\\"url\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis/article-image\\\"},\\\"mainEntityOfPage\\\":{\\\"@type\\\":\\\"WebPage\\\",\\\"@id\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis#webpage\\\"},\\\"isPartOf\\\":{\\\"@id\\\":\\\"https://www.digitalapplied.com/#website\\\"},\\\"articleSection\\\":\\\"AI Development\\\",\\\"keywords\\\":\\\"mcp dev summit 2026, mcp july 28 spec stateless, shadow mcp governance, mcp 110 million downloads, enterprise mcp gateway, aws mcp server, mcp tasks extension apps\\\",\\\"about\\\":[{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"model-context-protocol\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"mcp-dev-summit\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"mcp-spec-2026\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"shadow-mcp\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"enterprise-mcp-governance\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"aaif\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"mcp-tunnels\\\"},{\\\"@type\\\":\\\"Thing\\\",\\\"name\\\":\\\"stateless-mcp\\\"}]}\"])</script><script>self.__next_f.push([1,\"b:[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[[[\\\"$\\\",\\\"script\\\",\\\"blog-schema-BlogPosting-0\\\",{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"$1e\\\"},\\\"type\\\":\\\"application/ld+json\\\"}],[\\\"$\\\",\\\"script\\\",\\\"blog-schema-BreadcrumbList-1\\\",{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"{\\\\\\\"@context\\\\\\\":\\\\\\\"https://schema.org\\\\\\\",\\\\\\\"@type\\\\\\\":\\\\\\\"BreadcrumbList\\\\\\\",\\\\\\\"itemListElement\\\\\\\":[{\\\\\\\"@type\\\\\\\":\\\\\\\"ListItem\\\\\\\",\\\\\\\"position\\\\\\\":1,\\\\\\\"name\\\\\\\":\\\\\\\"Home\\\\\\\",\\\\\\\"item\\\\\\\":\\\\\\\"https://www.digitalapplied.com/\\\\\\\"},{\\\\\\\"@type\\\\\\\":\\\\\\\"ListItem\\\\\\\",\\\\\\\"position\\\\\\\":2,\\\\\\\"name\\\\\\\":\\\\\\\"Blog\\\\\\\",\\\\\\\"item\\\\\\\":\\\\\\\"https://www.digitalapplied.com/blog\\\\\\\"},{\\\\\\\"@type\\\\\\\":\\\\\\\"ListItem\\\\\\\",\\\\\\\"position\\\\\\\":3,\\\\\\\"name\\\\\\\":\\\\\\\"AI Development\\\\\\\",\\\\\\\"item\\\\\\\":\\\\\\\"https://www.digitalapplied.com/blog/category/ai-development\\\\\\\"},{\\\\\\\"@type\\\\\\\":\\\\\\\"ListItem\\\\\\\",\\\\\\\"position\\\\\\\":4,\\\\\\\"name\\\\\\\":\\\\\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\\\\\\\"}]}\\\"},\\\"type\\\":\\\"application/ld+json\\\"}]],[\\\"$\\\",\\\"$L1f\\\",null,{}],[\\\"$\\\",\\\"nav\\\",null,{\\\"aria-label\\\":\\\"Breadcrumb\\\",\\\"className\\\":\\\"border-white/5 border-b bg-[#0a0a0b] text-white/55\\\",\\\"children\\\":[\\\"$\\\",\\\"ol\\\",null,{\\\"className\\\":\\\"mx-auto flex max-w-[1320px] items-center gap-2 px-4 py-3.5 font-mono text-[11px] uppercase tracking-[0.1em] md:px-8\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"Home\\\",{\\\"className\\\":\\\"flex items-center gap-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"transition-colors hover:text-ignition-2\\\",\\\"href\\\":\\\"/\\\",\\\"children\\\":\\\"Home\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-white/25\\\",\\\"children\\\":\\\"/\\\"}]]}],[\\\"$\\\",\\\"li\\\",\\\"Blog\\\",{\\\"className\\\":\\\"flex items-center gap-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"transition-colors hover:text-ignition-2\\\",\\\"href\\\":\\\"/blog\\\",\\\"children\\\":\\\"Blog\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-white/25\\\",\\\"children\\\":\\\"/\\\"}]]}],[\\\"$\\\",\\\"li\\\",\\\"AI Development\\\",{\\\"className\\\":\\\"flex items-center gap-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"transition-colors hover:text-ignition-2\\\",\\\"href\\\":\\\"/blog/category/ai-development\\\",\\\"children\\\":\\\"AI Development\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-white/25\\\",\\\"children\\\":\\\"/\\\"}]]}],[\\\"$\\\",\\\"li\\\",\\\"MCP Dev Summit 2026 Readout\\\",{\\\"className\\\":\\\"flex items-center gap-2\\\",\\\"children\\\":[\\\"$L20\\\",false]}]]}]}],\\\"$L21\\\",\\\"$L22\\\",\\\"$L23\\\",\\\"$L24\\\",\\\"$L25\\\"],[\\\"$L26\\\"],\\\"$L27\\\"]}]\\n\"])</script><script>self.__next_f.push([1,\"28:[]\\nc:\\\"$W28\\\"\\nd:[\\\"$\\\",\\\"$1\\\",\\\"h\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$L29\\\",null,{\\\"children\\\":\\\"$L2a\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"hidden\\\":true,\\\"children\\\":[\\\"$\\\",\\\"$L2b\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$2c\\\",null,{\\\"name\\\":\\\"Next.Metadata\\\",\\\"children\\\":\\\"$L2d\\\"}]}]}],[\\\"$\\\",\\\"meta\\\",null,{\\\"name\\\":\\\"next-size-adjust\\\",\\\"content\\\":\\\"\\\"}]]}]\\nf:[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/0x5hulsdcv16j.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}]\\n10:[\\\"$\\\",\\\"link\\\",\\\"1\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/1375h7jyi~127.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}]\\n\"])</script><script>self.__next_f.push([1,\"2e:I[960562,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"\\\"]\\n32:I[485094,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"BlogToc\\\"]\\n5c:I[529530,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"default\\\"]\\n61:I[827892,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"BlogFaq\\\"]\\n66:I[488518,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"OutletBoundary\\\"]\\n15:[\\\"$\\\",\\\"$L2e\\\",null,{\\\"aria-label\\\":\\\"Follow us on X (Twitter)\\\",\\\"className\\\":\\\"text-muted-foreground transition-colors hover:text-foreground\\\",\\\"href\\\":\\\"https://x.com/digitalapplied\\\",\\\"rel\\\":\\\"noopener noreferrer\\\",\\\"target\\\":\\\"_blank\\\",\\\"children\\\":[\\\"$\\\",\\\"svg\\\",null,{\\\"className\\\":\\\"h-5 w-5 text-white/50 hover:text-white transition-colors\\\",\\\"fill\\\":\\\"currentColor\\\",\\\"viewBox\\\":\\\"0 0 24 24\\\",\\\"children\\\":[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"X (Twitter)\\\"}],[\\\"$\\\",\\\"path\\\",null,{\\\"d\\\":\\\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\\\"}]]}]}]\\n16:[\\\"$\\\",\\\"$L2e\\\",null,{\\\"aria-label\\\":\\\"Follow us on Facebook\\\",\\\"className\\\":\\\"text-muted-foreground transition-colors hover:text-foreground\\\",\\\"href\\\":\\\"https://www.facebook.com/digitalapplied\\\",\\\"rel\\\":\\\"noopener noreferrer\\\",\\\"target\\\":\\\"_blank\\\",\\\"children\\\":[\\\"$\\\",\\\"svg\\\",null,{\\\"className\\\":\\\"h-5 w-5 text-white/50 hover:text-white transition-colors\\\",\\\"fill\\\":\\\"currentColor\\\",\\\"viewBox\\\":\\\"0 0 24 24\\\",\\\"children\\\":[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"Facebook\\\"}],[\\\"$\\\",\\\"path\\\",null,{\\\"d\\\":\\\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\\\"}]]}]}]\\n\"])</script><script>self.__next_f.push([1,\"17:[\\\"$\\\",\\\"$L2e\\\",null,{\\\"aria-label\\\":\\\"Follow us on Instagram\\\",\\\"className\\\":\\\"text-muted-foreground transition-colors hover:text-foreground\\\",\\\"href\\\":\\\"https://www.instagram.com/digital_applied\\\",\\\"rel\\\":\\\"noopener noreferrer\\\",\\\"target\\\":\\\"_blank\\\",\\\"children\\\":[\\\"$\\\",\\\"svg\\\",null,{\\\"className\\\":\\\"h-5 w-5 text-white/50 hover:text-white transition-colors\\\",\\\"fill\\\":\\\"currentColor\\\",\\\"viewBox\\\":\\\"0 0 24 24\\\",\\\"children\\\":[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"Instagram\\\"}],[\\\"$\\\",\\\"path\\\",null,{\\\"d\\\":\\\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zM5.838 12a6.162 6.162 0 1112.324 0 6.162 6.162 0 01-12.324 0zM12 16a4 4 0 110-8 4 4 0 010 8zm4.965-10.405a1.44 1.44 0 112.881.001 1.44 1.44 0 01-2.881-.001z\\\"}]]}]}]\\n\"])</script><script>self.__next_f.push([1,\"18:[\\\"$\\\",\\\"$L2e\\\",null,{\\\"aria-label\\\":\\\"Follow us on LinkedIn\\\",\\\"className\\\":\\\"text-muted-foreground transition-colors hover:text-foreground\\\",\\\"href\\\":\\\"https://www.linkedin.com/company/digitalapplied\\\",\\\"rel\\\":\\\"noopener noreferrer\\\",\\\"target\\\":\\\"_blank\\\",\\\"children\\\":[\\\"$\\\",\\\"svg\\\",null,{\\\"className\\\":\\\"h-5 w-5 text-white/50 hover:text-white transition-colors\\\",\\\"fill\\\":\\\"currentColor\\\",\\\"viewBox\\\":\\\"0 0 24 24\\\",\\\"children\\\":[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"LinkedIn\\\"}],[\\\"$\\\",\\\"path\\\",null,{\\\"d\\\":\\\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\\\"}]]}]}]\\n19:[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\\\",\\\"children\\\":\\\"Services\\\"}],[\\\"$\\\",\\\"ul\\\",null,{\\\"className\\\":\\\"space-y-1\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"/services/agentic-seo\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/services/agentic-seo\\\",\\\"children\\\":\\\"SEO\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/services/paid-media\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/services/paid-media\\\",\\\"children\\\":\\\"PPC\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/services/content-engine\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/services/content-engine\\\",\\\"children\\\":\\\"Content\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/services/web-development\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/services/web-development\\\",\\\"children\\\":\\\"Web Dev\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/services/crm-automation\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/services/crm-automation\\\",\\\"children\\\":\\\"CRM\\\"}]}]]}]]}]\\n1a:[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\\\",\\\"children\\\":\\\"Company\\\"}],[\\\"$\\\",\\\"ul\\\",null,{\\\"className\\\":\\\"space-y-1\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"/about\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/about\\\",\\\"children\\\":\\\"About\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/#process\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/#process\\\",\\\"children\\\":\\\"Process\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/contact\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/contact\\\",\\\"children\\\":\\\"Contact\\\"}]}]]}]]}]\\n1b:[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\\\",\\\"children\\\":\\\"Resources\\\"}],[\\\"$\\\",\\\"ul\\\",null,{\\\"className\\\":\\\"space-y-1\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"/blog\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog\\\",\\\"children\\\":\\\"Blog\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/ai-tools\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/ai-tools\\\",\\\"children\\\":\\\"AI Tools\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/privacy-policy\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/privacy-policy\\\",\\\"children\\\":\\\"Privacy\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/terms-of-service\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/terms-of-service\\\",\\\"children\\\":\\\"Terms\\\"}]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"1c:[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"mb-4 font-medium font-mono text-[13px] text-white uppercase tracking-[0.08em]\\\",\\\"children\\\":\\\"Topics\\\"}],[\\\"$\\\",\\\"ul\\\",null,{\\\"className\\\":\\\"space-y-1\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"/blog/category/ai-development\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/ai-development\\\",\\\"children\\\":\\\"AI Development\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/category/seo\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/seo\\\",\\\"children\\\":\\\"SEO\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/category/marketing\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/marketing\\\",\\\"children\\\":\\\"Marketing\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/category/ecommerce\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/ecommerce\\\",\\\"children\\\":\\\"eCommerce\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/category/business\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/business\\\",\\\"children\\\":\\\"Business\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/category/crm-automation\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/crm-automation\\\",\\\"children\\\":\\\"CRM \\u0026 Automation\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/category/development\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/category/development\\\",\\\"children\\\":\\\"Development\\\"}]}],[\\\"$\\\",\\\"li\\\",\\\"/blog/tags\\\",{\\\"children\\\":[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"block py-1 text-sm transition-colors hover:text-white\\\",\\\"href\\\":\\\"/blog/tags\\\",\\\"children\\\":\\\"All Topics →\\\"}]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"1d:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mx-auto mt-12 flex max-w-7xl flex-col items-start justify-between gap-3 border-white/10 border-t px-4 pt-6 font-mono text-[11px] text-white/40 uppercase tracking-widest sm:flex-row sm:items-center md:px-8\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"children\\\":[\\\"© \\\",2026,\\\" Digital Applied\\\"]}],[\\\"$\\\",\\\"span\\\",null,{\\\"children\\\":\\\"All systems nominal\\\"}]]}]\\n20:[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-white\\\",\\\"children\\\":\\\"MCP Dev Summit 2026 Readout\\\"}]\\n\"])</script><script>self.__next_f.push([1,\"21:[\\\"$\\\",\\\"section\\\",null,{\\\"className\\\":\\\"relative isolate overflow-hidden bg-[#0a0a0b] pt-14 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"mask-[radial-gradient(ellipse_at_50%_30%,black_20%,transparent_75%)] pointer-events-none absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.035)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.035)_1px,transparent_1px)] bg-size-[56px_56px] [-webkit-mask-image:radial-gradient(ellipse_at_50%_30%,black_20%,transparent_75%)]\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"pointer-events-none absolute top-[-5%] left-[-5%] size-[620px] blur-2xl [background:radial-gradient(circle,rgba(255,107,26,0.18),rgba(255,107,26,0.03)_40%,transparent_70%)]\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"pointer-events-none absolute top-[20%] right-[-5%] size-[520px] blur-2xl [background:radial-gradient(circle,rgba(77,107,254,0.16),rgba(77,107,254,0.02)_40%,transparent_70%)]\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative z-2 mx-auto max-w-[1320px] px-4 md:px-8\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-9 flex flex-wrap items-center gap-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"rounded-sm border border-ignition/30 bg-ignition/10 px-3 py-1.5 font-mono text-[11px] text-ignition uppercase tracking-[0.14em]\\\",\\\"children\\\":\\\"AI Development\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"rounded-sm bg-ignition-2 px-3 py-1.5 font-medium font-mono text-[#0a0a0b] text-[11px] uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mr-1.5 inline-block size-[5px] animate-[ignition-pulse_1.2s_infinite] rounded-full bg-[#0a0a0b] align-[1px]\\\"}],\\\"New Release\\\"]}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"rounded-sm border border-white/15 px-3 py-1.5 font-mono text-[11px] text-white/65 uppercase tracking-[0.14em]\\\",\\\"children\\\":[14,\\\" min read\\\"]}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"rounded-sm border border-white/15 px-3 py-1.5 font-mono text-[11px] text-white/65 uppercase tracking-[0.14em]\\\",\\\"children\\\":[\\\"Published \\\",\\\"June 12, 2026\\\"]}]]}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 mb-[18px] max-w-[900px] text-[17px] text-white/72 leading-normal tracking-[-0.005em]\\\",\\\"children\\\":[\\\"110M monthly SDK downloads ·\\\",\\\" \\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"stateless\\\"}],\\\" \\\",\\\"July 28 spec · Shadow MCP as the new\\\",\\\" \\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-medium font-mono text-[15px] text-white\\\",\\\"children\\\":\\\"Shadow IT\\\"}]]}],[\\\"$\\\",\\\"h1\\\",null,{\\\"className\\\":\\\"m-0 mb-6 max-w-[1100px] font-normal text-[clamp(40px,5.4vw,76px)] text-white leading-none tracking-[-0.035em]\\\",\\\"children\\\":[\\\"MCP Dev Summit\\\",\\\" \\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-light font-sans text-white tabular-nums\\\",\\\"children\\\":\\\"2026\\\"}],\\\" \\\",\\\"Readout: The Protocol\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"Grows Up\\\"}]]}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 mb-11 max-w-[760px] text-[18px] text-white/72 leading-[1.6]\\\",\\\"children\\\":\\\"The April 2026 MCP Dev Summit was the moment the Model Context Protocol stopped being a clever adoption metric and became enterprise infrastructure. The story isn't the download curve — it's the incoming July 28 spec that deletes sessions entirely, and the governance question of what to do about the MCP servers your IT team never approved.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-12 flex flex-wrap items-center gap-5\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex size-11 items-center justify-center rounded-full bg-[linear-gradient(135deg,var(--color-ignition),var(--color-ignition-2))] font-medium font-mono text-[#0a0a0b] text-[14px]\\\",\\\"children\\\":\\\"DA\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"font-medium text-[14px] text-white leading-[1.2]\\\",\\\"children\\\":\\\"Digital Applied Team\\\"}],\\\"$L2f\\\"]}]]}],\\\"$L30\\\"]}],\\\"$L31\\\"]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"33:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-300\"])</script><script>self.__next_f.push([1,\"22:[\\\"$\\\",\\\"section\\\",null,{\\\"className\\\":\\\"relative bg-white dark:bg-zinc-950\\\",\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mx-auto grid max-w-[1320px] grid-cols-1 gap-10 px-6 py-16 md:px-8 lg:grid-cols-[240px_minmax(0,1fr)] lg:gap-14 xl:grid-cols-[260px_minmax(0,1fr)_280px]\\\",\\\"children\\\":[[\\\"$\\\",\\\"aside\\\",null,{\\\"className\\\":\\\"sticky top-[84px] hidden self-start lg:block\\\",\\\"children\\\":[\\\"$\\\",\\\"$L32\\\",null,{\\\"items\\\":[{\\\"id\\\":\\\"takeaways\\\",\\\"label\\\":\\\"Key takeaways\\\",\\\"number\\\":\\\"00\\\"},{\\\"id\\\":\\\"summit\\\",\\\"label\\\":\\\"What the summit signalled\\\",\\\"number\\\":\\\"01\\\"},{\\\"id\\\":\\\"stateless\\\",\\\"label\\\":\\\"The stateless spec shift\\\",\\\"number\\\":\\\"02\\\"},{\\\"id\\\":\\\"spec-matrix\\\",\\\"label\\\":\\\"July 28 spec action matrix\\\",\\\"number\\\":\\\"03\\\"},{\\\"id\\\":\\\"shadow-mcp\\\",\\\"label\\\":\\\"Shadow MCP is the new Shadow IT\\\",\\\"number\\\":\\\"04\\\"},{\\\"id\\\":\\\"governance\\\",\\\"label\\\":\\\"The enterprise control plane\\\",\\\"number\\\":\\\"05\\\"},{\\\"id\\\":\\\"vendors\\\",\\\"label\\\":\\\"Hyperscaler governance compared\\\",\\\"number\\\":\\\"06\\\"},{\\\"id\\\":\\\"sandboxes\\\",\\\"label\\\":\\\"Sandboxes and tunnels\\\",\\\"number\\\":\\\"07\\\"},{\\\"id\\\":\\\"playbook\\\",\\\"label\\\":\\\"A governance playbook\\\",\\\"number\\\":\\\"08\\\"},{\\\"id\\\":\\\"conclusion\\\",\\\"label\\\":\\\"Conclusion\\\",\\\"number\\\":\\\"09\\\"}]}]}],[\\\"$\\\",\\\"article\\\",null,{\\\"className\\\":\\\"prose-none min-w-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$33\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"lede\\\",\\\"children\\\":\\\"The MCP Dev Summit 2026 was the moment the Model Context Protocol crossed from adoption story to infrastructure question. The North America edition ran April 2–3, 2026 at the New York Marriott Marquis and drew roughly 1,200 attendees — about double the prior summit. The headline number, 110 million monthly SDK downloads, was the easy takeaway. The harder, more durable one was governance.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"For two years the standard MCP pitch was a download chart. That era ended on stage in New York. The keynotes, the 23 security-focused sessions, and the incoming spec all pointed the same direction: MCP is now load-bearing inside large organisations, and the open problems are operational — sessions, sprawl, identity, and audit trails — not whether the protocol works.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"This readout treats the summit as an inflection rather than a news dump. It unpacks the incoming July 28 spec through a governance lens, translates the spec into a team-action matrix, makes the case that Shadow MCP is the new Shadow IT, and compares what each hyperscaler now brings to enterprise MCP. For the underlying download and server counts this builds on, see our\\\",\\\" \\\",\\\"$L34\\\",\\\" \\\",\\\"and the running\\\",\\\" \\\",\\\"$L35\\\",\\\" \\\",\\\"tracker.\\\"]}]]}],\\\"$L36\\\",\\\"$L37\\\",\\\"$L38\\\",\\\"$L39\\\",\\\"$L3a\\\",\\\"$L3b\\\",\\\"$L3c\\\",\\\"$L3d\\\",\\\"$L3e\\\",\\\"$L3f\\\",\\\"$L40\\\",\\\"$L41\\\",\\\"$L42\\\",\\\"$L43\\\",\\\"$L44\\\",\\\"$L45\\\",\\\"$L46\\\",\\\"$L47\\\",\\\"$L48\\\",\\\"$L49\\\",\\\"$L4a\\\",\\\"$L4b\\\",\\\"$L4c\\\",\\\"$L4d\\\",\\\"$L4e\\\",\\\"$L4f\\\",\\\"$L50\\\",\\\"$L51\\\",\\\"$L52\\\",\\\"$L53\\\",\\\"$L54\\\",\\\"$L55\\\",\\\"$L56\\\",\\\"$L57\\\",\\\"$L58\\\",\\\"$L59\\\",\\\"$L5a\\\"]}],\\\"$L5b\\\"]}]}]\\n\"])</script><script>self.__next_f.push([1,\"23:[\\\"$\\\",\\\"section\\\",null,{\\\"className\\\":\\\"relative isolate overflow-hidden bg-[#0a0a0b] py-20 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"pointer-events-none absolute inset-0 [-webkit-mask-image:radial-gradient(ellipse_at_center,black_30%,transparent_75%)] [background-image:linear-gradient(rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.03)_1px,transparent_1px)] [background-size:56px_56px] [mask-image:radial-gradient(ellipse_at_center,black_30%,transparent_75%)]\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"pointer-events-none absolute top-1/2 left-1/2 size-[900px] -translate-x-1/2 -translate-y-1/2 blur-[30px] [background:radial-gradient(circle,rgba(255,107,26,0.18),rgba(255,107,26,0.04)_30%,transparent_65%)]\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative z-[2] mx-auto grid max-w-[1320px] items-center gap-14 px-4 md:px-8 lg:grid-cols-[1.3fr_1fr]\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-4.5 inline-flex items-center gap-2.5 font-mono text-[11px] text-ignition uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"h-px w-5 bg-ignition\\\"}],\\\"Govern MCP like infrastructure\\\"]}],[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mb-4.5 font-light text-[clamp(30px,3.8vw,50px)] leading-[1.04] tracking-[-0.03em]\\\",\\\"children\\\":[\\\"Turn an unmanaged MCP sprawl into a governed control plane your CISO will\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"bg-clip-text font-normal font-serif text-transparent italic\\\",\\\"style\\\":{\\\"backgroundImage\\\":\\\"linear-gradient(180deg, #fff 40%, var(--color-ignition-2) 80%, var(--color-ignition) 100%)\\\"},\\\"children\\\":\\\"sign off on\\\"}],\\\".\\\"]}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 mb-7 max-w-[520px] text-[16px] text-white/72 leading-[1.6]\\\",\\\"children\\\":\\\"Our team helps organisations govern, scale, and secure their MCP deployments — Shadow MCP discovery, gateway-plus-registry control planes, stateless migration, and identity hardening — delivered in days, not quarters.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-6 flex flex-wrap gap-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"group relative inline-flex h-[52px] items-center justify-center gap-2 overflow-hidden rounded-lg bg-[#0a0a0b] px-7 font-medium text-[15px] text-white shadow-[0_0_0_1px_#0a0a0b,0_10px_30px_-10px_rgba(255,107,26,0.4)] transition-transform hover:-translate-y-0.5\\\",\\\"href\\\":\\\"/get-started\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"relative z-[1]\\\",\\\"children\\\":\\\"Get started\\\"}],[\\\"$\\\",\\\"$L5c\\\",null,{\\\"ref\\\":\\\"$undefined\\\",\\\"iconNode\\\":[[\\\"path\\\",{\\\"d\\\":\\\"M7 7h10v10\\\",\\\"key\\\":\\\"1tivn9\\\"}],[\\\"path\\\",{\\\"d\\\":\\\"M7 17 17 7\\\",\\\"key\\\":\\\"1vkiza\\\"}]],\\\"className\\\":\\\"lucide-arrow-up-right relative z-[1] size-4 transition-transform group-hover:translate-x-0.5\\\"}]]}],[\\\"$\\\",\\\"$L12\\\",null,{\\\"className\\\":\\\"inline-flex h-[52px] items-center justify-center gap-2 rounded-lg border border-white/15 bg-white/5 px-7 font-medium text-[15px] text-white transition-colors hover:border-white/30 hover:bg-white/10\\\",\\\"href\\\":\\\"/services/ai-transformation\\\",\\\"children\\\":\\\"Explore AI \\u0026 digital transformation\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-wrap gap-x-7 gap-y-2 font-mono text-[11px] text-white/55 uppercase tracking-[0.1em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",\\\"0\\\",{\\\"className\\\":\\\"inline-flex items-center gap-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-ignition\\\"}],\\\"Free consultation\\\"]}],[\\\"$\\\",\\\"span\\\",\\\"1\\\",{\\\"className\\\":\\\"inline-flex items-center gap-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-ignition\\\"}],\\\"Expert guidance\\\"]}],[\\\"$\\\",\\\"span\\\",\\\"2\\\",{\\\"className\\\":\\\"inline-flex items-center gap-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-ignition\\\"}],\\\"Tailored solutions\\\"]}]]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative overflow-hidden rounded-2xl border border-white/10 bg-white/[0.04] p-7\\\",\\\"children\\\":[\\\"$L5d\\\",\\\"$L5e\\\",\\\"$L5f\\\",\\\"$L60\\\"]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"24:[\\\"$\\\",\\\"$L61\\\",null,{\\\"eyebrow\\\":\\\"FAQ · MCP Dev Summit 2026\\\",\\\"id\\\":\\\"faq\\\",\\\"items\\\":[{\\\"question\\\":\\\"What was the MCP Dev Summit 2026 and why does it matter?\\\",\\\"answer\\\":\\\"MCP Dev Summit North America 2026 ran April 2–3, 2026 at the New York Marriott Marquis and drew roughly 1,200 attendees, about double the prior summit. Across 17 keynotes and more than 95 sessions, security was the single most represented theme with 23 dedicated sessions. The significance is the reframing it confirmed: the Model Context Protocol stopped being judged on adoption — the headline was 110 million monthly SDK downloads — and started being judged on enterprise terms like governance, identity, audit, and scalability. The summit marked the protocol's transition from a fast-growing developer standard into load-bearing infrastructure inside large organisations.\\\"},{\\\"question\\\":\\\"What does the July 28, 2026 MCP spec change?\\\",\\\"answer\\\":\\\"The incoming July 28, 2026 release — whose release candidate was locked May 21, 2026 — makes the protocol fully stateless by removing the initialize/initialized handshake and the Mcp-Session-Id header. The operational consequence is that any request can route to any server instance with no sticky sessions or shared session store, so a server can sit behind a standard round-robin load balancer. The release is also additive: it introduces MCP Apps and a Tasks Extension, adds full JSON Schema 2020-12 support for tool schemas, and adds routing and caching headers. Three features — Roots, Sampling, and Logging — are formally deprecated, but the deprecations are annotation-only and removal requires a separate proposal after at least 12 months.\\\"},{\\\"question\\\":\\\"Why is the stateless change such a big deal?\\\",\\\"answer\\\":\\\"A stateful protocol forces sticky sessions: every request in a conversation has to land on the same server instance, which requires shared session stores, custom routing, and a fragile failover story. Removing sessions deletes all of that and turns an MCP server into an ordinary horizontally scalable HTTP service. You can place it behind a vanilla AWS Application Load Balancer or a Cloudflare load balancer with zero custom routing logic. That is the difference between MCP being technically possible at large scale and being genuinely practical to operate at the scale of companies running tens of thousands of agent executions a week. Most summit coverage summarised this as 'sessions are gone' and missed that it is the change that actually unlocks production-scale deployment.\\\"},{\\\"question\\\":\\\"What is Shadow MCP?\\\",\\\"answer\\\":\\\"Shadow MCP is the MCP-era version of Shadow IT: MCP servers spreading through an organisation faster than IT can track them, then becoming a compliance liability. The mechanism is identical to classic Shadow IT, but the spread is faster because a server is often just a dependency a developer adds to an IDE plugin with no approval step. Security analyses report that organisations typically discover several times more MCP deployments than IT expected — commonly framed as a 3–10x gap. These servers evade conventional asset inventories because they bind to localhost, listen on random high ports, or hide behind reverse proxies. The practical takeaway is that MCP sprawl audits should be a recurring, quarterly hygiene task rather than a one-time cleanup.\\\"},{\\\"question\\\":\\\"How are enterprises being told to govern MCP?\\\",\\\"answer\\\":\\\"The dominant consensus from the summit is a centralised control plane built from two parts: a gateway and a registry. The gateway terminates every agent-to-server call and enforces identity, policy, PII redaction, and audit logging — and is the natural place to detect Shadow MCP through hostname scanning, URI patterns, and JSON-RPC body inspection. The registry is the single source of truth for which servers exist, who owns them, and who may use them, so anything not in the registry is unsanctioned by definition. Organisations including Amazon, Uber, AWS, Docker, Kong, Solo.io, Bloomberg, and Cloudflare described variants of this same pattern, which makes the procurement question for engineering leads a matter of which governance stack to use, not whether to govern at all.\\\"},{\\\"question\\\":\\\"How many MCP downloads and servers are there?\\\",\\\"answer\\\":\\\"MCP co-creator David Soria Parra cited 110 million monthly SDK downloads in his April 2026 summit keynote, a level the protocol reached in roughly 16 months — a milestone React took about three years to hit. That figure is vendor-stated; an earlier December 2025 Anthropic announcement put monthly downloads at 97 million, so the right way to cite either number is with its date attached. On the server side, more than 10,000 public MCP servers were tracked around the summit period. For the deeper data behind these counts, see our MCP adoption statistics analysis and the running MCP server ecosystem tracker, which catalogue the underlying figures rather than the event analysis.\\\"},{\\\"question\\\":\\\"What are MCP tunnels and self-hosted sandboxes?\\\",\\\"answer\\\":\\\"Both launched at Code with Claude London on May 19, 2026. Self-hosted sandboxes (public beta) provide isolated execution environments through launch partners Cloudflare, Daytona, Modal, and Vercel, plus a bring-your-own-sandbox option, so agent code runs inside the customer's own infrastructure. MCP tunnels (research preview) establish an outbound-only, end-to-end encrypted connection that lets an agent reach a private MCP server without inbound firewall rules, public endpoints, or IP allowlisting. Both exist to solve the same bottleneck: the real blocker on production agents is usually the security and compliance review, not the model. Running agents inside the customer's perimeter with proper audit logs and identity integration is what lets a CISO actually sign off, and Anthropic is rolling tunnels out to regulated industries first.\\\"},{\\\"question\\\":\\\"What should my team do before the July 28 spec lands?\\\",\\\"answer\\\":\\\"Work the priorities in order. First, run a Shadow MCP discovery sweep — assume IT undercounts deployments by several times, scan for localhost-bound servers, high-port listeners, and IDE-plugin dependencies, and make it a quarterly task. Second, plan the stateless migration: if any server holds per-conversation state, the July 28 stateless core is a breaking change, so move state out of sessions and re-test behind a round-robin load balancer before the release. Third, stand up a gateway plus registry to make discovery a closed loop. Fourth, close the authentication gap by aligning with the spec's OAuth 2.0 and OpenID Connect hardening and replacing static secrets with short-lived, scoped credentials. The sequence matters: you cannot govern what you cannot see, and the stateless migration is both breaking and date-bound.\\\"}],\\\"title\\\":\\\"$L62\\\"}]\\n\"])</script><script>self.__next_f.push([1,\"25:[\\\"$\\\",\\\"section\\\",null,{\\\"className\\\":\\\"bg-zinc-100 py-24 dark:bg-zinc-900\\\",\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mx-auto max-w-[1320px] px-4 md:px-8\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-10\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-3.5 inline-flex items-center gap-2.5 font-mono text-[11px] text-zinc-500 uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"h-px w-5 bg-ignition\\\"}],\\\"Related dispatches\\\"]}],[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 font-normal text-[clamp(30px,3.6vw,44px)] text-zinc-950 leading-[1.05] tracking-[-0.025em] dark:text-white\\\",\\\"children\\\":[\\\"Continue exploring\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif italic\\\",\\\"children\\\":\\\"the MCP ecosystem.\\\"}]]}],\\\"$undefined\\\"]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"grid gap-4 md:grid-cols-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"$L12\\\",\\\"mcp-server-ecosystem-tracker-50-servers-cataloged-2026\\\",{\\\"className\\\":\\\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\\\",\\\"href\\\":\\\"/blog/mcp-server-ecosystem-tracker-50-servers-cataloged-2026\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"AI Development\\\"}],[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\\\",\\\"children\\\":\\\"MCP Server Ecosystem Tracker: 56 Servers Cataloged 2026\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\\\",\\\"children\\\":\\\"Issue #1 of the MCP server tracker — 56 production-ready servers cataloged across 10 categories with auth model, transport, maintainer, and status.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"children\\\":[\\\"May 25, 2026\\\",\\\" · \\\",15,\\\" min\\\"]}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":[\\\"Read \\\",[\\\"$\\\",\\\"$L5c\\\",null,{\\\"ref\\\":\\\"$undefined\\\",\\\"iconNode\\\":\\\"$23:props:children:2:props:children:0:props:children:3:props:children:0:props:children:1:props:iconNode\\\",\\\"className\\\":\\\"lucide-arrow-up-right size-3.5\\\"}]]}]]}]]}],[\\\"$\\\",\\\"$L12\\\",\\\"gemini-cli-to-antigravity-cli-migration-june-18-2026-guide\\\",{\\\"className\\\":\\\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\\\",\\\"href\\\":\\\"/blog/gemini-cli-to-antigravity-cli-migration-june-18-2026-guide\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"AI Development\\\"}],[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\\\",\\\"children\\\":\\\"Gemini CLI Dies June 18: The Antigravity Migration Guide\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\\\",\\\"children\\\":\\\"Gemini CLI stops serving Pro, Ultra, and free users on June 18, 2026. The 45-minute migration to Antigravity CLI, the silent failures, and the quota regression.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"children\\\":[\\\"June 9, 2026\\\",\\\" · \\\",12,\\\" min\\\"]}],\\\"$L63\\\"]}]]}],\\\"$L64\\\",\\\"$L65\\\"]}]]}]}]\\n\"])</script><script>self.__next_f.push([1,\"26:[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/10xegheq_2_g2.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]\\n27:[\\\"$\\\",\\\"$L66\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$2c\\\",null,{\\\"name\\\":\\\"Next.MetadataOutlet\\\",\\\"children\\\":\\\"$@67\\\"}]}]\\n\"])</script><script>self.__next_f.push([1,\"8a:I[338137,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"BlogShareButtons\\\"]\\n8b:I[372967,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\",\\\"/_next/static/chunks/0bok.jphy_~lu.js\\\",\\\"/_next/static/chunks/039fygmp~-jt3.js\\\",\\\"/_next/static/chunks/10xegheq_2_g2.js\\\"],\\\"BlogNewsletterForm\\\"]\\n2f:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-0.5 font-mono text-[10.5px] text-white/55 uppercase tracking-[0.08em]\\\",\\\"children\\\":\\\"Senior strategists · Published Jun 12, 2026\\\"}]\\n30:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-wrap gap-x-6 gap-y-2 border-white/10 border-l pl-6 font-mono text-[11px] text-white/50 uppercase tracking-widest max-sm:gap-x-4 max-sm:border-l-0 max-sm:pl-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",\\\"Published\\\",{\\\"children\\\":[\\\"Published\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mt-1 block text-[12px] text-white tracking-[0.04em]\\\",\\\"children\\\":\\\"Jun 12, 2026\\\"}]]}],[\\\"$\\\",\\\"div\\\",\\\"Read time\\\",{\\\"children\\\":[\\\"Read time\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mt-1 block text-[12px] text-white tracking-[0.04em]\\\",\\\"children\\\":\\\"14 min\\\"}]]}],[\\\"$\\\",\\\"div\\\",\\\"Sources\\\",{\\\"children\\\":[\\\"Sources\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mt-1 block text-[12px] text-white tracking-[0.04em]\\\",\\\"children\\\":\\\"8 primary\\\"}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"31:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-14 grid grid-cols-2 gap-px overflow-hidden rounded-2xl border border-white/10 bg-white/10 md:grid-cols-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",\\\"Monthly SDK downloads\\\",{\\\"className\\\":\\\"relative bg-[#0a0a0b] px-5 py-6\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Monthly SDK downloads\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\\\",\\\"children\\\":[\\\"110\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"ml-0.5 font-mono text-[16px] text-ignition\\\",\\\"children\\\":\\\"M\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\\\",\\\"children\\\":\\\"April 2026 keynote\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 inline-flex items-center gap-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"children\\\":\\\"▼\\\"}],\\\"16 months to reach\\\"]}],null]}],[\\\"$\\\",\\\"div\\\",\\\"Public MCP servers tracked\\\",{\\\"className\\\":\\\"relative bg-[#0a0a0b] px-5 py-6\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Public MCP servers tracked\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\\\",\\\"children\\\":[\\\"10\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"ml-0.5 font-mono text-[16px] text-ignition\\\",\\\"children\\\":\\\"K+\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\\\",\\\"children\\\":\\\"around the summit\\\"}],null,null]}],[\\\"$\\\",\\\"div\\\",\\\"Shadow MCP multiple\\\",{\\\"className\\\":\\\"relative bg-[#0a0a0b] px-5 py-6\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Shadow MCP multiple\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\\\",\\\"children\\\":[\\\"3–10\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"ml-0.5 font-mono text-[16px] text-ignition\\\",\\\"children\\\":\\\"×\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\\\",\\\"children\\\":\\\"vs. IT expectation\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 inline-flex items-center gap-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"children\\\":\\\"▼\\\"}],\\\"discovery gap\\\"]}],null]}],[\\\"$\\\",\\\"div\\\",\\\"Spec release window\\\",{\\\"className\\\":\\\"relative bg-[#0a0a0b] px-5 py-6\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-white/50 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Spec release window\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[40px] text-white leading-none tracking-[-0.03em]\\\",\\\"children\\\":\\\"Jul 28\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 text-[11.5px] text-white/55 leading-[1.4]\\\",\\\"children\\\":\\\"stateless core\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-3 inline-flex items-center gap-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"children\\\":\\\"▼\\\"}],\\\"RC locked May 21\\\"]}],null]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"34:[\\\"$\\\",\\\"$L2e\\\",null,{\\\"className\\\":\\\"link\\\",\\\"href\\\":\\\"/blog/mcp-adoption-statistics-2026-model-context-protocol\\\",\\\"children\\\":\\\"MCP adoption statistics\\\"}]\\n35:[\\\"$\\\",\\\"$L2e\\\",null,{\\\"className\\\":\\\"link\\\",\\\"href\\\":\\\"/blog/mcp-server-ecosystem-tracker-50-servers-cataloged-2026\\\",\\\"children\\\":\\\"MCP server ecosystem\\\"}]\\n\"])</script><script>self.__next_f.push([1,\"36:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"my-12 scroll-mt-[90px] border-zinc-950 border-t-2 pt-7 dark:border-white\\\",\\\"id\\\":\\\"takeaways\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-6 flex items-center gap-2.5 font-mono text-[11px] text-zinc-950 uppercase tracking-[0.14em] dark:text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-ignition shadow-[0_0_8px_var(--color-ignition)]\\\"}],\\\"Key takeaways\\\"]}],[\\\"$\\\",\\\"ol\\\",null,{\\\"className\\\":\\\"m-0 list-none p-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"The summit reframed MCP from adoption metric to infrastructure.\\\",{\\\"className\\\":\\\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\\\",\\\"children\\\":\\\"01\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\\\",\\\"children\\\":\\\"The summit reframed MCP from adoption metric to infrastructure.\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"The North America edition (April 2–3, 2026) drew ~1,200 attendees and devoted 23 of its sessions to security. The story stopped being downloads and became governance, identity, and audit.\\\"}]]}]]}],[\\\"$\\\",\\\"li\\\",\\\"110M monthly downloads is the April 2026 keynote figure.\\\",{\\\"className\\\":\\\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\\\",\\\"children\\\":\\\"02\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\\\",\\\"children\\\":\\\"110M monthly downloads is the April 2026 keynote figure.\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"MCP co-creator David Soria Parra cited 110M monthly SDK downloads — reached in 16 months, a milestone React took three years to hit. The December 2025 baseline was 97M; both are vendor-stated, so timestamp whichever you cite.\\\"}]]}]]}],[\\\"$\\\",\\\"li\\\",\\\"The July 28 spec makes the protocol stateless.\\\",{\\\"className\\\":\\\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\\\",\\\"children\\\":\\\"03\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\\\",\\\"children\\\":\\\"The July 28 spec makes the protocol stateless.\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"The incoming release removes the initialize handshake and the session header so any request can route to any server instance. That unlocks vanilla round-robin load balancers — the change that makes MCP feasible at scale, not just possible.\\\"}]]}]]}],[\\\"$\\\",\\\"li\\\",\\\"Shadow MCP is the new Shadow IT.\\\",{\\\"className\\\":\\\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\\\",\\\"children\\\":\\\"04\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\\\",\\\"children\\\":\\\"Shadow MCP is the new Shadow IT.\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"Organisations typically discover several times more MCP deployments than IT expected. Servers bind to localhost, listen on random high ports, or hide behind reverse proxies — and surface in IDE plugins as production dependencies with no approval.\\\"}]]}]]}],\\\"$L68\\\"]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"37:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"summit\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"01\\\",\\\" — \\\",\\\"The Inflection\\\"]}],[\\\"What the summit\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"actually\\\"}],\\\" \\\",\\\"signalled.\\\"]]}]\\n69:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-300\"])</script><script>self.__next_f.push([1,\"38:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$69\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"MCP Dev Summit North America 2026 was held April 2–3 at the New York Marriott Marquis, drawing approximately 1,200 attendees — roughly double the prior summit. The programme spanned 17 keynotes and more than 95 sessions across four tracks, with security the single most represented theme at 23 dedicated sessions. That ratio is the tell: a protocol still proving itself spends its stage time on capability demos, while a protocol entering production spends it on threat models and identity.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"David Soria Parra, MCP's co-creator at Anthropic, opened Day 1 with the figure that travelled furthest — 110 million monthly SDK downloads, a level MCP reached in 16 months. For context, React took roughly three years to hit the same milestone. That number is vendor-stated and timestamped to the April keynote; an earlier December 2025 Anthropic announcement put the figure at 97 million. Both are real points on a steep curve, which is exactly why the date matters more than the headline.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"The institutional signals were just as loud as the metrics. The Agentic AI Foundation — the body the protocol was donated to in December 2025 — reported reaching 170 member organisations in under four months, well past the 100-member milestone cited from the stage. Jim Zemlin stepped down as interim Executive Director, with Mazin Gilbert appointed to lead the foundation. The x402 Foundation launched at the summit, folding a payment protocol into the agent ecosystem. None of this is the behaviour of an experiment; it is the scaffolding of an institution.\\\"}]]}]\\n\"])</script><script>self.__next_f.push([1,\"39:[\\\"$\\\",\\\"blockquote\\\",null,{\\\"className\\\":\\\"my-7 border-ignition border-l-[3px] bg-zinc-50 px-6 py-5 font-serif text-[19px] text-zinc-950 italic leading-normal tracking-[-0.005em] dark:bg-zinc-900 dark:text-white\\\",\\\"children\\\":[\\\"\\\\\\\"MCP is the Linux of agents. We're going to keep going.\\\\\\\"\\\",[\\\"$\\\",\\\"cite\\\",null,{\\\"className\\\":\\\"mt-3 block font-medium font-mono text-[11px] text-zinc-500 uppercase not-italic tracking-widest\\\",\\\"children\\\":\\\"— Jim Zemlin, Linux Foundation CEO, MCP Dev Summit North America 2026\\\"}]]}]\\n6a:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-3003a:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$6a\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Our reading: the \\\\\\\"Linux of agents\\\\\\\" framing is more than a soundbite. It signals a deliberate move toward a neutral, foundation- governed standard with a predictable lifecycle — and the spec changes below back that up. The summit's most underrated message was not that MCP is popular. It was that MCP is now being run like infrastructure, with a deprecation policy, an authorization roadmap, and an enterprise governance track to match.\\\"}]}]\\n3b:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"stateless\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"02\\\",\\\" — \\\",\\\"Architecture\\\"]}],[\\\"The spec shift everyone\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"underreported\\\"}],\\\".\\\"]]}]\\n6b:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:siz\"])</script><script>self.__next_f.push([1,\"e-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-3003c:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$6b\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"The current stable specification is dated 2025-11-25, with stdio and Streamable HTTP transports over JSON-RPC 2.0. The incoming July 28, 2026 release — whose release candidate was locked May 21, 2026 by lead maintainers David Soria Parra and Den Delimarsky, with a validation window running to July 28 — is the most consequential revision since the protocol's creation. Most coverage summarised it as \\\\\\\"sessions are gone.\\\\\\\" That undersells what changes.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"Concretely, the July 28 spec removes the \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"initialize\\\"}],\\\"/\\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"initialized\\\"}],\\\" handshake and the\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"Mcp-Session-Id\\\"}],\\\" header, making the protocol fully stateless. The operational consequence is the part that matters: any MCP request can now route to any server instance with no sticky sessions and no shared session store. You can place a server behind a vanilla AWS Application Load Balancer or a Cloudflare load balancer with zero custom routing logic. That is the difference between MCP being technically possible at scale and being genuinely feasible to operate at the scale of an Uber or a Pinterest.\\\"]}]]}]\\n3d:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\\\",\\\"children\\\":\\\"Why stateless is the real headline\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"text-[15.5px] text-white leading-[1.6]\\\",\\\"children\\\":[\\\"A stateful protocol forces sticky sessions: every request in a conversation has to land on the same server instance, which means shared session stores, custom routing, and a fragile failover story. Deleting sessions removes all of that. The incoming spec turns an MCP server into an ordinary\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-serif text-white italic\\\",\\\"children\\\":\\\"horizontally scalable\\\"}],\\\" \\\",\\\"HTTP service — the unglamorous change that quietly unlocks production-scale deployment.\\\"]}]]}]\\n6c:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-300\"])</script><script>self.__next_f.push([1,\"3e:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$6c\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"The release is additive as well as subtractive. It introduces two official extensions — MCP Apps (server-rendered HTML UIs in sandboxed iframes with JSON-RPC channels) and a Tasks Extension (a stateless lifecycle via \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"tasks/get\\\"}],\\\",\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"tasks/update\\\"}],\\\", and \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"tasks/cancel\\\"}],\\\" after a tool handles a request). Tool \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"inputSchema\\\"}],\\\" and\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"outputSchema\\\"}],\\\" gain full JSON Schema 2020-12 support, so\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"oneOf\\\"}],\\\", \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"anyOf\\\"}],\\\", \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"allOf\\\"}],\\\", conditionals, and \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"$$ref\\\"}],\\\" with \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"$$defs\\\"}],\\\" all become valid. New \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"Mcp-Method\\\"}],\\\" and \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"Mcp-Name\\\"}],\\\" \\\",\\\"headers let a load balancer route without inspecting the request body, and \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"ttlMs\\\"}],\\\" / \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"cacheScope\\\"}],\\\" fields enable client-side caching of \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"tools/list\\\"}],\\\" results.\\\"]}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Three features are formally deprecated: Roots (replaced by tool parameters, resource URIs, or server config), Sampling (replaced by direct LLM provider API calls), and Logging (replaced by stderr for stdio transports and OpenTelemetry for structured observability). Crucially, these deprecations are annotation-only — removal requires a separate proposal after at least 12 months. That formal deprecation-to-removal window is itself the news: it is the first concrete evidence that the foundation is treating MCP as long-lived infrastructure rather than a perpetually experimental protocol.\\\"}]]}]\\n\"])</script><script>self.__next_f.push([1,\"3f:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"spec-matrix\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"03\\\",\\\" — \\\",\\\"Team Action\\\"]}],[\\\"The July 28 spec as a\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"team-action\\\"}],\\\" \\\",\\\"matrix.\\\"]]}]\\n6d:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30040:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$6d\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Coverage of the release candidate tends to list its SEPs without answering the question engineering leads actually have: who on my team has to do what, and by when. The table below maps each significant change to its impact class, the role affected, and the required action. Every cell traces to the official MCP release notes; the timeline column reflects the announced July 28 window.\\\"}]}]\\n\"])</script><script>self.__next_f.push([1,\"41:[\\\"$\\\",\\\"figure\\\",null,{\\\"className\\\":\\\"my-8 overflow-hidden rounded-2xl border border-zinc-200 dark:border-zinc-800\\\",\\\"children\\\":[\\\"$\\\",\\\"table\\\",null,{\\\"className\\\":\\\"w-full border-collapse text-left text-[13.5px]\\\",\\\"children\\\":[[\\\"$\\\",\\\"caption\\\",null,{\\\"className\\\":\\\"sr-only\\\",\\\"children\\\":\\\"July 28, 2026 MCP spec changes mapped to impact level, the developer role affected, the required action, and timeline.\\\"}],[\\\"$\\\",\\\"thead\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"bg-zinc-950 text-white dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Change\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Impact\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Who acts\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Required action\\\"}]]}]}],[\\\"$\\\",\\\"tbody\\\",null,{\\\"className\\\":\\\"divide-y divide-zinc-200 dark:divide-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"tr\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"bg-zinc-50 px-4 py-3 text-left align-top font-medium text-zinc-950 dark:bg-zinc-900/40 dark:text-white\\\",\\\"colSpan\\\":4,\\\"scope\\\":\\\"colgroup\\\",\\\"children\\\":\\\"Breaking — stateless core\\\"}]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Sessions removed\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Breaking\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Both\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Drop the handshake and session header; move any session state to request payloads or external stores. Re-test behind a round-robin load balancer.\\\"}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Error code change\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Breaking\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Client devs\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":[\\\"Handle missing-resource errors as JSON-RPC standard\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"-32602\\\"}],\\\" instead of the MCP-custom\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"-32002\\\"}],\\\".\\\"]}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"bg-zinc-50 px-4 py-3 text-left align-top font-medium text-zinc-950 dark:bg-zinc-900/40 dark:text-white\\\",\\\"colSpan\\\":4,\\\"scope\\\":\\\"colgroup\\\",\\\"children\\\":\\\"Additive — new capability\\\"}]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"MCP Apps + Tasks\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Additive\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Server devs\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Adopt server-rendered iframe UIs and the stateless task lifecycle where long-running tools need progress and cancellation. No action if unused.\\\"}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"JSON Schema 2020-12\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Additive\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Server devs\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":[\\\"Tighten tool input/output schemas with \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"oneOf\\\"}],\\\"/\\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"anyOf\\\"}],\\\"/\\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"$$ref\\\"}],\\\" once Tier 1 SDKs ship support.\\\"]}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Routing + caching headers\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Additive\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Both\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":[\\\"Use \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"Mcp-Method\\\"}],\\\"/\\\",\\\"$L6e\\\",\\\" for body-free routing; cache \\\",\\\"$L6f\\\",\\\" via\\\",\\\" \\\",\\\"$L70\\\",\\\"/\\\",\\\"$L71\\\",\\\"; propagate W3C Trace Context.\\\"]}]]}],\\\"$L72\\\",\\\"$L73\\\",\\\"$L74\\\"]}]]}]}]\\n\"])</script><script>self.__next_f.push([1,\"42:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\\\",\\\"children\\\":\\\"Read this as a roadmap, not a release note\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"text-[15.5px] text-white leading-[1.6]\\\",\\\"children\\\":[\\\"The single most important row is the first one. If a server holds any per-conversation state today, the stateless core is a\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-serif text-white italic\\\",\\\"children\\\":\\\"breaking\\\"}],\\\" change you need on the roadmap now — not in late July. Everything additive can wait for SDK support; the stateless migration is the work that determines whether your MCP fleet scales cleanly.\\\"]}]]}]\\n43:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"shadow-mcp\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"04\\\",\\\" — \\\",\\\"Governance Risk\\\"]}],[\\\"Shadow MCP is the new\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"Shadow IT\\\"}],\\\".\\\"]]}]\\n75:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30044:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$75\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"The most important governance idea to come out of the summit period is also the least technical: Shadow MCP. The analogy to Shadow IT is exact because the mechanism is identical. A low-friction tooling layer spreads faster than IT can track it, and then quietly becomes a compliance liability. With MCP, the spread is faster still, because a server is often just a dependency a developer adds to an IDE plugin.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Security researchers and vendors analysing the problem report a consistent pattern: organisations typically discover several times more MCP deployments than IT expected — commonly framed as a 3–10x gap. The reason these servers evade traditional visibility is structural. They bind to localhost, listen on random high ports, or sit behind reverse proxies. They appear inside IDE plugins as routine production dependencies with no formal approval step. None of that trips a conventional asset inventory.\\\"}]]}]\\n45:[\\\"$\\\",\\\"blockquote\\\",null,{\\\"className\\\":\\\"my-7 border-ignition border-l-[3px] bg-zinc-50 px-6 py-5 font-serif text-[19px] text-zinc-950 italic leading-normal tracking-[-0.005em] dark:bg-zinc-900 dark:text-white\\\",\\\"children\\\":[\\\"\\\\\\\"Behind corporate firewalls, we're quietly wiring MCPs to Salesforce, Jira, internal wikis, Sno\"])</script><script>self.__next_f.push([1,\"wflake daily.\\\\\\\"\\\",[\\\"$\\\",\\\"cite\\\",null,{\\\"className\\\":\\\"mt-3 block font-medium font-mono text-[11px] text-zinc-500 uppercase not-italic tracking-widest\\\",\\\"children\\\":\\\"— David Soria Parra, MCP co-creator / Anthropic, MCP Dev Summit North America 2026\\\"}]]}]\\n76:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30046:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$76\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"That quote is the whole problem in one sentence. Every one of those connections is a credentialed bridge between an autonomous agent and a system of record, created without a change ticket. The security picture around it is genuinely uncomfortable. Independent analyses describe a meaningful share of public MCP servers relying on static secrets for authentication, and a non-trivial fraction being lookalikes that impersonate legitimate products. We treat the specific percentages in those reports as secondary, vendor-sourced estimates rather than audited fact — but the direction is not in dispute: the authentication posture of the public ecosystem is weak, and the impersonation surface is real.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Aggregator coverage of the summit also points to dozens of CVEs filed against MCP implementations in early 2026 and a slice of public servers affected by tool poisoning. Because those figures trace to a single secondary source rather than primary CVE databases, we cite them only as a qualitative signal — there were enough vulnerabilities disclosed to make security the summit's dominant track, and the tool-poisoning class is real, regardless of the precise count.\\\"}]]}]\\n\"])</script><script>self.__next_f.push([1,\"47:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"my-8 flex flex-col gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",\\\"0\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 rounded-2xl border border-zinc-200 bg-white p-6 md:flex-row md:gap-8 md:p-7 dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-start gap-4 md:w-[220px] md:shrink-0 md:flex-col md:gap-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col gap-1.5\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Discovery gap\\\"}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[18px] text-zinc-950 leading-[1.3] tracking-[-0.01em] dark:text-white\\\",\\\"children\\\":\\\"More deployments than IT expects\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[48px] text-zinc-900 leading-none tracking-[-0.03em] md:order-first dark:text-zinc-100\\\",\\\"children\\\":[\\\"3–10\\\",[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono font-normal text-[14px] text-ignition\\\",\\\"children\\\":\\\"×\\\"}]]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[13.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"The recurring finding across Shadow MCP analyses: organisations consistently uncover several times more MCP servers than their IT teams approved, creating immediate compliance gaps.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"w-full self-start border-zinc-100 border-t pt-2 text-left md:self-end md:text-right dark:border-zinc-800\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[10px] text-ignition uppercase tracking-widest\\\",\\\"children\\\":\\\"Quarterly audit, not one-time cleanup\\\"}]}]]}]]}],[\\\"$\\\",\\\"div\\\",\\\"1\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 rounded-2xl border border-zinc-200 bg-white p-6 md:flex-row md:gap-8 md:p-7 dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-start gap-4 md:w-[220px] md:shrink-0 md:flex-col md:gap-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col gap-1.5\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Why it hides\\\"}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[18px] text-zinc-950 leading-[1.3] tracking-[-0.01em] dark:text-white\\\",\\\"children\\\":\\\"Evasion mechanisms\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[48px] text-zinc-900 leading-none tracking-[-0.03em] md:order-first dark:text-zinc-100\\\",\\\"children\\\":[\\\"3\\\",\\\"$undefined\\\"]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[13.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"MCP servers bind to localhost, listen on random high ports, or sit behind reverse proxies — and surface inside IDE plugins as production dependencies. Conventional asset inventories miss all three.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"w-full self-start border-zinc-100 border-t pt-2 text-left md:self-end md:text-right dark:border-zinc-800\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[10px] text-ignition uppercase tracking-widest\\\",\\\"children\\\":\\\"localhost · high ports · reverse proxy\\\"}]}]]}]]}],[\\\"$\\\",\\\"div\\\",\\\"2\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 rounded-2xl border border-zinc-200 bg-white p-6 md:flex-row md:gap-8 md:p-7 dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-start gap-4 md:w-[220px] md:shrink-0 md:flex-col md:gap-3\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col gap-1.5\\\",\\\"children\\\":[\\\"$L77\\\",\\\"$L78\\\"]}],\\\"$L79\\\"]}],\\\"$L7a\\\",\\\"$L7b\\\"]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"7c:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30048:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$7c\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Here is the operational implication worth coining: MCP sprawl audits are now a recurring IT hygiene task, not a one-time cleanup. The same way endpoint and SaaS inventories became quarterly rituals once Shadow IT matured, MCP discovery belongs on a standing cadence. That governance work is now formal enough that a session titled \\\\\\\"From Shadow MCP to Sanctioned MCP\\\\\\\" appeared on the schedule at the Mumbai edition of the summit — shadow governance is a named track, not a hallway conversation.\\\"}]}]\\n49:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"governance\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"05\\\",\\\" — \\\",\\\"Consensus Pattern\\\"]}],[\\\"The enterprise\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"control plane\\\"}],\\\" \\\",\\\"everyone converged on.\\\"]]}]\\n7d:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-300\"])</script><script>self.__next_f.push([1,\"4a:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$7d\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"If the summit had a single architectural consensus, it was this: the enterprise MCP control plane is a centralised gateway plus a registry. Organisations converging on the pattern span the full spectrum — Amazon, Uber, AWS, Docker, Kong, Solo.io, Bloomberg, and Cloudflare all described variants of the same shape. A gateway terminates and governs every agent-to-server call; a registry is the single source of truth for which servers exist and who may use them. This is the same logical role an\\\",\\\" \\\",[\\\"$\\\",\\\"$L2e\\\",null,{\\\"className\\\":\\\"link\\\",\\\"href\\\":\\\"/blog/llm-gateway-architecture-2026-engineering-reference\\\",\\\"children\\\":\\\"LLM gateway architecture\\\"}],\\\" \\\",\\\"plays for model traffic, applied to tool traffic.\\\"]}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Uber gave the most concrete production picture. The company disclosed an MCP Gateway and Registry exposing thousands of Thrift, Protobuf, and HTTP endpoints, fronted by a Go-based GenAI Gateway that handles PII redaction. The scale figures it shared — more than 5,000 engineers, over 10,000 internal services, 1,500+ monthly active agents, and 60,000+ agent executions weekly, with its Minions Agent making around 1,800 code changes a week and used by 95% of engineering — are vendor-stated and not independently audited. Even discounted for that, they describe MCP operating as core production infrastructure, not a pilot.\\\"}]]}]\\n\"])</script><script>self.__next_f.push([1,\"4b:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"my-8 flex flex-col gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",\\\"0\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-white/10 bg-[#0a0a0b] text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"style\\\":{\\\"position\\\":\\\"absolute\\\",\\\"inset\\\":-1,\\\"borderRadius\\\":\\\"16px\\\",\\\"padding\\\":1,\\\"background\\\":\\\"linear-gradient(135deg,#ff6b1a,transparent 60%)\\\",\\\"WebkitMask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"WebkitMaskComposite\\\":\\\"xor\\\",\\\"mask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"maskComposite\\\":\\\"exclude\\\",\\\"pointerEvents\\\":\\\"none\\\"}}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] uppercase tracking-[0.14em] text-ignition-2\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current\\\"}],\\\"Layer 1\\\"]}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.2] tracking-[-0.02em] text-white\\\",\\\"children\\\":[\\\"The\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"gateway\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-2.5 py-1.5 font-mono text-[12px] tracking-[-0.01em] bg-ignition/10 text-ignition-2\\\",\\\"children\\\":\\\"Single ingress for agent → server calls\\\"}]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[13.5px] leading-[1.6] text-white/72\\\",\\\"children\\\":\\\"Terminates every MCP call, enforces identity and policy, redacts PII, and emits the audit trail. The natural place to detect Shadow MCP via hostname scanning, URI patterns, and JSON-RPC body inspection.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-sm bg-ignition/10 px-2 py-1 font-mono text-[10px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Identity · policy · audit\\\"}]}]]}]]}],[\\\"$\\\",\\\"div\\\",\\\"1\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[\\\"$undefined\\\",[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] uppercase tracking-[0.14em] text-zinc-500\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current\\\"}],\\\"Layer 2\\\"]}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.2] tracking-[-0.02em] text-zinc-950 dark:text-white\\\",\\\"children\\\":[\\\"The\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"registry\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-2.5 py-1.5 font-mono text-[12px] tracking-[-0.01em] bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300\\\",\\\"children\\\":\\\"Source of truth for sanctioned servers\\\"}]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[13.5px] leading-[1.6] text-zinc-600 dark:text-zinc-400\\\",\\\"children\\\":\\\"Catalogues which MCP servers exist, who owns them, and who may use them. Turns Shadow MCP discovery into a closed loop: anything not in the registry is, by definition, unsanctioned.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-sm bg-ignition/10 px-2 py-1 font-mono text-[10px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Catalogue · ownership · approval\\\"}]}]]}]]}],\\\"$L7e\\\"]}]\\n\"])</script><script>self.__next_f.push([1,\"7f:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-3004c:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$7f\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Cloudflare published a full enterprise MCP reference architecture in mid-April, combining remote MCP servers, Access for SSO and MFA, MCP Server Portals, AI Gateway, and Cloudflare Gateway for shadow-MCP detection. Its claimed Code Mode token reduction — from roughly 9,400 tokens to about 600 — is vendor-stated, but the underlying technique matters more than the exact figure: the same progressive, code-execution approach to tool discovery is how Claude Code defers tool definitions that exceed a context threshold, with Anthropic reporting substantial token savings. Token efficiency, in other words, is becoming a property of the gateway layer, not just the model.\\\"}]}]\\n4d:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"vendors\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"06\\\",\\\" — \\\",\\\"Procurement\\\"]}],[\\\"What each hyperscaler\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"actually\\\"}],\\\" \\\",\\\"ships.\\\"]]}]\\n80:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-3004e:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$80\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"For an engineering lead making a procurement decision, the useful art\"])</script><script>self.__next_f.push([1,\"efact is a side-by-side of what each vendor now brings to enterprise MCP. The table below compares the major offerings on maturity, core capability, auth model, and audit posture. Every cell traces to the vendor's own announcement or independent analyst coverage from the April–June 2026 window.\\\"}]}]\\n\"])</script><script>self.__next_f.push([1,\"4f:[\\\"$\\\",\\\"figure\\\",null,{\\\"className\\\":\\\"my-8 overflow-hidden rounded-2xl border border-zinc-200 dark:border-zinc-800\\\",\\\"children\\\":[\\\"$\\\",\\\"table\\\",null,{\\\"className\\\":\\\"w-full border-collapse text-left text-[13.5px]\\\",\\\"children\\\":[[\\\"$\\\",\\\"caption\\\",null,{\\\"className\\\":\\\"sr-only\\\",\\\"children\\\":\\\"Enterprise MCP governance offerings compared across launch maturity, core capability, auth model, and audit trail.\\\"}],[\\\"$\\\",\\\"thead\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"bg-zinc-950 text-white dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Offering\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Maturity\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Core capability\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Auth model\\\"}],[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-[12px] uppercase tracking-[0.08em]\\\",\\\"scope\\\":\\\"col\\\",\\\"children\\\":\\\"Audit trail\\\"}]]}]}],[\\\"$\\\",\\\"tbody\\\",null,{\\\"className\\\":\\\"divide-y divide-zinc-200 text-zinc-700 dark:divide-zinc-800 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"AWS MCP Server\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"GA — May 6, 2026\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":[\\\"One \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"call_aws\\\"}],\\\" tool across 15,000+ AWS API operations, plus doc-search and sandboxed script execution.\\\"]}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Existing IAM credentials; MCP Proxy bridges to OAuth 2.1; cross-account and cross-role access.\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":[\\\"CloudWatch metrics (\\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"AWS-MCP\\\"}],\\\" namespace) + CloudTrail for compliance.\\\"]}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Cloudflare Enterprise MCP\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Reference arch — Apr 14, 2026\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Remote MCP, Server Portals, AI Gateway, and Code Mode token efficiency at the edge.\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Access for SSO/MFA; Cloudflare Gateway for shadow-MCP detection.\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Gateway logging; hostname, URI, and JSON-RPC body inspection.\\\"}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Claude MCP Tunnels\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Research preview — May 19, 2026\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Outbound-only encrypted reach to private MCP servers with no inbound firewall rules or public endpoints.\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"End-to-end encrypted; regulated-industry rollout first.\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Runs inside the customer perimeter; integrates with existing controls.\\\"}]]}],[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Claude self-hosted sandboxes\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Public beta — May 19, 2026\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Isolated execution via Cloudflare, Daytona, Modal, or Vercel — plus a bring-your-own option.\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Per-partner isolation; zero-trust secrets injection (Cloudflare) and VPC peering (Vercel).\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Inherits the sandbox provider's controls and logging.\\\"}]]}]]}]]}]}]\\n\"])</script><script>self.__next_f.push([1,\"50:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\\\",\\\"children\\\":\\\"The procurement read\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"text-[15.5px] text-white leading-[1.6]\\\",\\\"children\\\":[\\\"AWS MCP Server is the only fully GA option here and is free — you pay only for the AWS resources you create — which makes it the low-risk starting point for teams already on AWS. Cloudflare is the most complete \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-serif text-white italic\\\",\\\"children\\\":\\\"governance\\\"}],\\\" \\\",\\\"story for shadow-MCP detection. Anthropic’s tunnels and sandboxes are the right fit when the constraint is reaching servers inside a locked-down perimeter — but both are pre-GA, so treat them as pilots, not dependencies.\\\"]}]]}]\\n51:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"sandboxes\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"07\\\",\\\" — \\\",\\\"Perimeter\\\"]}],[\\\"Sandboxes and tunnels:\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"running\\\"}],\\\" \\\",\\\"inside the perimeter.\\\"]]}]\\n81:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-300\"])</script><script>self.__next_f.push([1,\"52:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$81\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"The governance theme had a concrete product moment a few weeks after the summit. At Code with Claude London on May 19, 2026, Anthropic launched self-hosted sandboxes in public beta and MCP tunnels in research preview. Four sandbox launch partners shipped on day one — Cloudflare (microVMs with zero-trust secrets injection), Daytona (composable, long-running, stateful computers), Modal (sub-second startup for AI workloads), and Vercel (VM security plus VPC peering, millisecond startup) — with a bring-your-own-sandbox option alongside. We cover the launch in depth in our companion piece on\\\",\\\" \\\",[\\\"$\\\",\\\"$L2e\\\",null,{\\\"className\\\":\\\"link\\\",\\\"href\\\":\\\"/blog/code-with-claude-sandboxes-mcp-tunnels-launch\\\",\\\"children\\\":\\\"self-hosted sandboxes and MCP tunnels\\\"}],\\\".\\\"]}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"MCP tunnels are the more architecturally interesting of the two. A tunnel establishes an outbound-only, end-to-end encrypted connection so an agent can reach a private MCP server without inbound firewall rules, public endpoints, or IP allowlisting. Supported in Managed Agents and the Messages API and still in research preview, Anthropic is rolling access out to regulated industries first. The reason that ordering matters is the reason the whole governance theme exists: the bottleneck on production agents is rarely the model. It is the security review.\\\"}]]}]\\n\"])</script><script>self.__next_f.push([1,\"53:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative my-7 overflow-hidden rounded-xl bg-[#0a0a0b] px-7 py-5.5 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"absolute top-0 bottom-0 left-0 w-[3px] bg-ignition\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-2 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\\\",\\\"children\\\":\\\"The real bottleneck\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"text-[15.5px] text-white leading-[1.6]\\\",\\\"children\\\":[\\\"The compliance and security review — not the model — is what keeps most agents out of production. Self-hosted sandboxes and MCP tunnels exist to let agents run\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-serif text-white italic\\\",\\\"children\\\":\\\"inside\\\"}],\\\" the customer’s perimeter, with audit logs and identity integration a CISO can sign off on, rather than behind a sandbox the security team takes weeks to clear. That is the layer the summit was really about.\\\"]}]]}]\\n82:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30054:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$82\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"The day-one customer references underline how production-minded the launch was: Amplitude built a Design Agent on Cloudflare, Clay ran its Sculptor GTM engineering agent on Daytona, DoorDash evaluated Modal for agentic commerce, and Rogo ran AI for institutional finance on Vercel. These are not demos. They are early-adopter teams putting agents against real systems, which is exactly the threshold the stateless spec and the gateway pattern are built to support at scale.\\\"}]}]\\n55:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"playbook\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"08\\\",\\\" — \\\",\\\"Playbook\\\"]}],[\\\"A governance playbook for the\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"next two quarters\\\"}],\\\".\\\"]]}]\\n83:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:d\"])</script><script>self.__next_f.push([1,\"ark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30056:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$83\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"The summit's lessons collapse into a small number of decisions most engineering organisations can act on now, ahead of the July 28 release. The matrix below is our reading of the priority order — what to do first, and why.\\\"}]}]\\n\"])</script><script>self.__next_f.push([1,\"57:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"my-8 flex flex-col gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",\\\"0\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-white/10 bg-[#0a0a0b] text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"style\\\":{\\\"position\\\":\\\"absolute\\\",\\\"inset\\\":-1,\\\"borderRadius\\\":\\\"16px\\\",\\\"padding\\\":1,\\\"background\\\":\\\"linear-gradient(135deg,#ff6b1a,transparent 60%)\\\",\\\"WebkitMask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"WebkitMaskComposite\\\":\\\"xor\\\",\\\"mask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"maskComposite\\\":\\\"exclude\\\",\\\"pointerEvents\\\":\\\"none\\\"}}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\\\"}],\\\"Audit\\\"]}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-white\\\",\\\"children\\\":[\\\"Run a Shadow MCP\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"discovery\\\"}],\\\" \\\",\\\"sweep\\\"]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[14px] leading-[1.6] text-white/72\\\",\\\"children\\\":\\\"Assume IT undercounts MCP deployments by several times. Scan for localhost-bound servers, high-port listeners, and IDE-plugin dependencies. Make this a quarterly hygiene task, not a one-off.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-ignition/10 text-ignition-2\\\",\\\"children\\\":\\\"Do this first\\\"}]}]]}]]}],[\\\"$\\\",\\\"div\\\",\\\"1\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[\\\"$undefined\\\",[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\\\"}],\\\"Architecture\\\"]}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Plan the stateless migration\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[14px] leading-[1.6] text-zinc-600 dark:text-zinc-400\\\",\\\"children\\\":\\\"If any server holds per-conversation state, the July 28 stateless core is a breaking change. Move state out of sessions now and re-test behind a round-robin load balancer before the release lands.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white\\\",\\\"children\\\":\\\"Roadmap before late July\\\"}]}]]}]]}],[\\\"$\\\",\\\"div\\\",\\\"2\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[\\\"$undefined\\\",[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\\\",\\\"children\\\":[\\\"$L84\\\",\\\"Control plane\\\"]}],\\\"$L85\\\"]}],\\\"$L86\\\",\\\"$L87\\\"]}],\\\"$L88\\\"]}]\\n\"])</script><script>self.__next_f.push([1,\"89:T539,max-w-[720px] [\\u0026_*:where(p,h3,ul)]:text-pretty [\\u0026_a.link:hover]:bg-ignition/10 [\\u0026_a.link:hover]:text-ignition [\\u0026_a.link]:border-ignition [\\u0026_a.link]:border-b [\\u0026_a.link]:pb-px [\\u0026_a.link]:font-medium [\\u0026_a.link]:text-zinc-950 [\\u0026_a.link]:transition-colors [\\u0026_a.link]:dark:text-white [\\u0026_code]:rounded-[4px] [\\u0026_code]:bg-zinc-100 [\\u0026_code]:px-1.5 [\\u0026_code]:py-0.5 [\\u0026_code]:font-mono [\\u0026_code]:text-[0.88em] [\\u0026_code]:text-zinc-950 [\\u0026_code]:dark:bg-zinc-800 [\\u0026_code]:dark:text-white [\\u0026_h3]:mt-9 [\\u0026_h3]:mb-3.5 [\\u0026_h3]:font-medium [\\u0026_h3]:text-[22px] [\\u0026_h3]:text-zinc-950 [\\u0026_h3]:leading-tight [\\u0026_h3]:tracking-[-0.015em] [\\u0026_h3]:dark:text-white [\\u0026_p.lede]:mb-7 [\\u0026_p.lede]:font-normal [\\u0026_p.lede]:text-[19px] [\\u0026_p.lede]:text-zinc-950 [\\u0026_p.lede]:leading-[1.6] [\\u0026_p.lede]:dark:text-white [\\u0026_p]:mb-5 [\\u0026_p]:text-[17px] [\\u0026_p]:text-zinc-800 [\\u0026_p]:leading-[1.7] [\\u0026_p]:dark:text-zinc-200 [\\u0026_strong]:font-semibold [\\u0026_strong]:text-zinc-950 [\\u0026_strong]:dark:text-white [\\u0026_ul]:mb-6 [\\u0026_ul]:ml-0 [\\u0026_ul]:list-none [\\u0026_ul]:p-0 [\\u0026_ul_li]:relative [\\u0026_ul_li]:mb-2.5 [\\u0026_ul_li]:pl-[22px] [\\u0026_ul_li]:text-[16px] [\\u0026_ul_li]:text-zinc-700 [\\u0026_ul_li]:leading-[1.6] [\\u0026_ul_li]:before:absolute [\\u0026_ul_li]:before:top-[11px] [\\u0026_ul_li]:before:left-0.5 [\\u0026_ul_li]:before:size-1.5 [\\u0026_ul_li]:before:rounded-full [\\u0026_ul_li]:before:bg-ignition [\\u0026_ul_li]:before:content-[''] [\\u0026_ul_li]:dark:text-zinc-30058:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"$89\\\",\\\"children\\\":[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"For most organisations the sequence matters more than any single item. You cannot govern what you cannot see, so discovery comes first; the stateless migration is the highest-leverage engineering work because it is both breaking and date-bound; and the gateway plus registry is the durable investment that turns discovery into a closed loop. If your team is standing up that control plane from scratch — or weighing AWS, Cloudflare, and Anthropic's offerings against your own constraints — our\\\",\\\" \\\",[\\\"$\\\",\\\"$L2e\\\",null,{\\\"className\\\":\\\"link\\\",\\\"href\\\":\\\"/services/ai-transformation\\\",\\\"children\\\":\\\"AI transformation engagements\\\"}],\\\" \\\",\\\"start with exactly this kind of architecture and governance work, and our\\\",\\\" \\\",[\\\"$\\\",\\\"$L2e\\\",null,{\\\"className\\\":\\\"link\\\",\\\"href\\\":\\\"/services/web-development\\\",\\\"children\\\":\\\"custom development team\\\"}],\\\" \\\",\\\"builds the gateway and registry layer to fit your stack.\\\"]}]}]\\n59:[\\\"$\\\",\\\"h2\\\",null,{\\\"className\\\":\\\"m-0 mt-14 mb-5 scroll-mt-[90px] font-normal text-[clamp(26px,3vw,36px)] text-zinc-950 leading-[1.15] tracking-[-0.025em] dark:text-white\\\",\\\"id\\\":\\\"conclusion\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-medium font-mono text-[11px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":[\\\"09\\\",\\\" — \\\",\\\"Conclusion\\\"]}],[\\\"The moment the protocol\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"grew up\\\"}],\\\".\\\"]]}]\\n\"])</script><script>self.__next_f.push([1,\"5a:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative my-10 overflow-hidden rounded-2xl bg-[#0a0a0b] p-8 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"className\\\":\\\"pointer-events-none absolute right-[-20%] bottom-[-30%] size-[400px] [background:radial-gradient(circle,rgba(255,107,26,0.12),transparent_60%)]\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative mb-3.5 flex items-center gap-2.5 font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-ignition shadow-[0_0_6px_var(--color-ignition)]\\\"}],\\\"The shape of MCP, mid-2026\\\"]}],[\\\"$\\\",\\\"h3\\\",null,{\\\"className\\\":\\\"relative m-0 mb-4 font-medium text-[22px] text-white leading-[1.2] tracking-[-0.015em]\\\",\\\"children\\\":\\\"MCP's open question stopped being 'does this work' and became 'can a CISO sign off on it'.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative space-y-3 text-[15.5px] text-white/80 leading-[1.65]\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":[\\\"The 2026 Dev Summit will be remembered less for the 110 million downloads and more for the shift it confirmed. MCP is now infrastructure, and infrastructure is judged on different terms — scalability, identity, audit, and a predictable lifecycle. The incoming July 28 spec answers the first of those by\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-serif text-ignition-2 italic\\\",\\\"children\\\":\\\"deleting\\\"}],\\\" \\\",\\\"sessions, and the 12-month deprecation window answers the last by committing to a stable lifecycle.\\\"]}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"The governance story is the one to internalise. Shadow MCP is real, it spreads exactly the way Shadow IT did, and the same antidote applies — visibility first, then a control plane that turns discovery into a closed loop. The consensus on a centralised gateway plus registry, and the arrival of perimeter-friendly tools like self-hosted sandboxes and MCP tunnels, mean the building blocks now exist. The work is operational, not speculative.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"children\\\":\\\"Our advice for engineering leads is unglamorous and effective: run a discovery sweep this quarter, put the stateless migration on the roadmap before late July, stand up a gateway and registry, and close the authentication gap. The protocol grew up at this summit. The organisations that treat it as infrastructure — rather than a clever developer toy — are the ones that will ship agents their security teams actually approve.\\\"}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"5b:[\\\"$\\\",\\\"aside\\\",null,{\\\"className\\\":\\\"sticky top-[84px] hidden flex-col gap-5 self-start xl:flex\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"rounded-2xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Share dispatch\\\"}],[\\\"$\\\",\\\"$L8a\\\",null,{\\\"shareTitle\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\\\",\\\"shareUrl\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"relative overflow-hidden rounded-2xl bg-[#0a0a0b] p-5 text-white\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"style\\\":{\\\"position\\\":\\\"absolute\\\",\\\"inset\\\":-1,\\\"borderRadius\\\":\\\"14px\\\",\\\"padding\\\":1,\\\"background\\\":\\\"linear-gradient(135deg,#ff6b1a,transparent 60%)\\\",\\\"WebkitMask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"WebkitMaskComposite\\\":\\\"xor\\\",\\\"mask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"maskComposite\\\":\\\"exclude\\\",\\\"pointerEvents\\\":\\\"none\\\"}}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-ignition-2 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"AI Insights\\\"}],[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mb-2.5 font-medium text-[15px] text-white leading-[1.3] tracking-[-0.01em]\\\",\\\"children\\\":\\\"Deep dives on AI marketing and development.\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 mb-3.5 text-[12.5px] text-white/65 leading-normal\\\",\\\"children\\\":\\\"Agentic development, frontier AI models, and data-driven strategies. No recycled AI takes.\\\"}],[\\\"$\\\",\\\"$L8b\\\",null,{\\\"source\\\":\\\"$undefined\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"rounded-2xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Spec timeline\\\"}],[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mb-2.5 font-medium text-[15px] text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"July 28, 2026\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mb-1 font-mono text-[12px] text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"RC locked May 21 · stateless core\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[12px] text-zinc-500 leading-normal\\\",\\\"children\\\":\\\"The July 28 spec is an announced release, not a shipped one. Confirm final wording against the official MCP specification before you re-architect a server around it.\\\"}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"5d:[\\\"$\\\",\\\"div\\\",null,{\\\"aria-hidden\\\":\\\"true\\\",\\\"style\\\":{\\\"position\\\":\\\"absolute\\\",\\\"inset\\\":-1,\\\"borderRadius\\\":\\\"18px\\\",\\\"padding\\\":1,\\\"background\\\":\\\"linear-gradient(135deg,#ff6b1a,transparent 60%)\\\",\\\"WebkitMask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"WebkitMaskComposite\\\":\\\"xor\\\",\\\"mask\\\":\\\"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\\\",\\\"maskComposite\\\":\\\"exclude\\\",\\\"pointerEvents\\\":\\\"none\\\"}}]\\n5e:[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-3.5 block font-mono text-[11px] text-ignition-2 uppercase tracking-[0.14em]\\\",\\\"children\\\":\\\"What we work on\\\"}]\\n5f:[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mb-3.5 font-medium text-[19px] text-white tracking-[-0.01em]\\\",\\\"children\\\":\\\"Enterprise MCP engagements\\\"}]\\n\"])</script><script>self.__next_f.push([1,\"60:[\\\"$\\\",\\\"ul\\\",null,{\\\"className\\\":\\\"m-0 list-none p-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"li\\\",\\\"0\\\",{\\\"className\\\":\\\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[13px] text-ignition\\\",\\\"children\\\":\\\"→\\\"}],\\\"Shadow MCP discovery sweeps and quarterly hygiene cadence\\\"]}],[\\\"$\\\",\\\"li\\\",\\\"1\\\",{\\\"className\\\":\\\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[13px] text-ignition\\\",\\\"children\\\":\\\"→\\\"}],\\\"Gateway plus registry control-plane architecture\\\"]}],[\\\"$\\\",\\\"li\\\",\\\"2\\\",{\\\"className\\\":\\\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[13px] text-ignition\\\",\\\"children\\\":\\\"→\\\"}],\\\"Stateless migration ahead of the July 28 spec\\\"]}],[\\\"$\\\",\\\"li\\\",\\\"3\\\",{\\\"className\\\":\\\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[13px] text-ignition\\\",\\\"children\\\":\\\"→\\\"}],\\\"OAuth / OpenID Connect identity hardening\\\"]}],[\\\"$\\\",\\\"li\\\",\\\"4\\\",{\\\"className\\\":\\\"flex items-center gap-2.5 border-white/10 border-b py-2.5 text-[13.5px] text-white/72 last:border-b-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[13px] text-ignition\\\",\\\"children\\\":\\\"→\\\"}],\\\"Vendor evaluation — AWS, Cloudflare, Anthropic governance\\\"]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"62:[\\\"The questions engineering leads\\\",\\\" \\\",[\\\"$\\\",\\\"em\\\",null,{\\\"className\\\":\\\"font-normal font-serif italic\\\",\\\"children\\\":\\\"keep asking.\\\"}]]\\n63:[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":[\\\"Read \\\",[\\\"$\\\",\\\"$L5c\\\",null,{\\\"ref\\\":\\\"$undefined\\\",\\\"iconNode\\\":\\\"$23:props:children:2:props:children:0:props:children:3:props:children:0:props:children:1:props:iconNode\\\",\\\"className\\\":\\\"lucide-arrow-up-right size-3.5\\\"}]]}]\\n\"])</script><script>self.__next_f.push([1,\"64:[\\\"$\\\",\\\"$L12\\\",\\\"anthropic-self-hosted-sandbox-7-production-patterns-2026\\\",{\\\"className\\\":\\\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\\\",\\\"href\\\":\\\"/blog/anthropic-self-hosted-sandbox-7-production-patterns-2026\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"AI Development\\\"}],[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\\\",\\\"children\\\":\\\"Anthropic Self-Hosted Sandbox: 7 Production Patterns 2026\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\\\",\\\"children\\\":\\\"Seven production patterns for Anthropic's self-hosted sandbox from Code with Claude London — Docker isolation, MCP tunnels, HITL gates, evals, rollback.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"children\\\":[\\\"May 25, 2026\\\",\\\" · \\\",19,\\\" min\\\"]}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":[\\\"Read \\\",[\\\"$\\\",\\\"$L5c\\\",null,{\\\"ref\\\":\\\"$undefined\\\",\\\"iconNode\\\":\\\"$23:props:children:2:props:children:0:props:children:3:props:children:0:props:children:1:props:iconNode\\\",\\\"className\\\":\\\"lucide-arrow-up-right size-3.5\\\"}]]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"65:[\\\"$\\\",\\\"$L12\\\",\\\"code-with-claude-sandboxes-mcp-tunnels-launch\\\",{\\\"className\\\":\\\"group flex min-h-[260px] flex-col gap-3.5 rounded-2xl border border-zinc-200 bg-white p-7 transition-all hover:-translate-y-1 hover:border-zinc-400 hover:shadow-[0_20px_40px_-20px_rgba(0,0,0,0.1)] dark:border-zinc-800 dark:bg-zinc-950\\\",\\\"href\\\":\\\"/blog/code-with-claude-sandboxes-mcp-tunnels-launch\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"self-start rounded-sm border border-ignition/20 bg-ignition/5 px-2 py-1 font-mono text-[10.5px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"AI Development\\\"}],[\\\"$\\\",\\\"h4\\\",null,{\\\"className\\\":\\\"m-0 mt-1 font-medium text-[19px] text-zinc-950 leading-[1.22] tracking-[-0.015em] transition-colors group-hover:text-ignition dark:text-white\\\",\\\"children\\\":\\\"Code with Claude London: Sandboxes + MCP Tunnels Launch\\\"}],[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 flex-1 text-[14px] text-zinc-500 leading-[1.55]\\\",\\\"children\\\":\\\"Anthropic launches self-hosted agent sandboxes (public beta) and MCP tunnels (research preview) at Code with Claude London. Enterprise agent guide.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"mt-auto flex items-center justify-between border-zinc-200 border-t pt-3.5 font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.08em] dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"children\\\":[\\\"May 19, 2026\\\",\\\" · \\\",13,\\\" min\\\"]}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-flex items-center gap-1 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":[\\\"Read \\\",[\\\"$\\\",\\\"$L5c\\\",null,{\\\"ref\\\":\\\"$undefined\\\",\\\"iconNode\\\":\\\"$23:props:children:2:props:children:0:props:children:3:props:children:0:props:children:1:props:iconNode\\\",\\\"className\\\":\\\"lucide-arrow-up-right size-3.5\\\"}]]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"68:[\\\"$\\\",\\\"li\\\",\\\"A centralised gateway plus registry is the emerging consensus.\\\",{\\\"className\\\":\\\"grid grid-cols-[40px_1fr] gap-4 border-zinc-200 border-b py-5 last:border-b-0 dark:border-zinc-800\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"pt-1 font-mono text-[12px] text-ignition tracking-[0.08em]\\\",\\\"children\\\":\\\"05\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"mb-1.5 block font-semibold text-[15.5px] text-zinc-950 leading-[1.4] tracking-[-0.005em] dark:text-white\\\",\\\"children\\\":\\\"A centralised gateway plus registry is the emerging consensus.\\\"}],[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"text-[14.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"Amazon, Uber, AWS, Docker, Kong, Solo.io, Bloomberg, and Cloudflare are converging on the same control-plane pattern. The procurement question for engineering leads is now which governance stack, not whether to govern.\\\"}]]}]]}]\\n6e:[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"Mcp-Name\\\"}]\\n6f:[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"tools/list\\\"}]\\n70:[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"ttlMs\\\"}]\\n71:[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"cacheScope\\\"}]\\n72:[\\\"$\\\",\\\"tr\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"th\\\",null,{\\\"className\\\":\\\"bg-zinc-50 px-4 py-3 text-left align-top font-medium text-zinc-950 dark:bg-zinc-900/40 dark:text-white\\\",\\\"colSpan\\\":4,\\\"scope\\\":\\\"colgroup\\\",\\\"children\\\":\\\"Hardening + deprecation\\\"}]}]\\n73:[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Auth alignment (OAuth/OIDC)\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Hardening\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Client devs\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":[\\\"Validate \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"iss\\\"}],\\\" per RFC 9207, declare OpenID Connect\\\",\\\" \\\",[\\\"$\\\",\\\"code\\\",null,{\\\"children\\\":\\\"application_type\\\"}],\\\" at Dynamic Client Registration, bind credentials to the issuing server.\\\"]}]]}]\\n74:[\\\"$\\\",\\\"tr\\\",null,{\\\"className\\\":\\\"align-top text-zinc-700 dark:text-zinc-300\\\",\\\"children\\\":[[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3 font-medium text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Roots / Sampling / Logging\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Deprecation\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Both\\\"}],[\\\"$\\\",\\\"td\\\",null,{\\\"className\\\":\\\"px-4 py-3\\\",\\\"children\\\":\\\"Migrate off the three deprecated features; annotation-only now, with at least a 12-month window before any removal.\\\"}]]}]\\n77:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"font-mono text-[10.5px] text-zinc-500 uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Live demo\\\"}]\\n78:[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[18px] text-zinc-950 leading-[1.3] tracking-[-0.01em] dark:text-white\\\",\\\"children\\\":\\\"Rebinding on local servers\\\"}]\\n79:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-baseline gap-1 font-light text-[48px] text-zinc-900 leading-none tracking-[-0.03em] md:order-first dark:text-zinc-100\\\",\\\"children\\\":[\\\"DNS\\\",\\\"$undefined\\\"]}]\\n7a:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}]\\n7b:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[13.5px] text-zinc-600 leading-[1.6] dark:text-zinc-400\\\",\\\"children\\\":\\\"Jonathan Leitschuh demonstrated DNS rebinding vulnerabilities affecting local MCP servers at the summit, with origin-header validation emphasised as the critical safeguard for any localhost-bound server.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"w-full self-start border-zinc-100 border-t pt-2 text-left md:self-end md:text-right dark:border-zinc-800\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"font-mono text-[10px] text-ignition uppercase tracking-widest\\\",\\\"children\\\":\\\"Origin validation is mandatory\\\"}]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"7e:[\\\"$\\\",\\\"div\\\",\\\"2\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[\\\"$undefined\\\",[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] uppercase tracking-[0.14em] text-zinc-500\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current\\\"}],\\\"Layer 3\\\"]}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.2] tracking-[-0.02em] text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Token efficiency\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-2.5 py-1.5 font-mono text-[12px] tracking-[-0.01em] bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300\\\",\\\"children\\\":\\\"Code-execution patterns at the edge\\\"}]}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[13.5px] leading-[1.6] text-zinc-600 dark:text-zinc-400\\\",\\\"children\\\":\\\"Cloudflare reported its Code Mode cutting token usage sharply — roughly 9,400 tokens for four servers and 52 tools down to about 600 — by letting the model write code against tool APIs rather than loading every definition into context.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-sm bg-ignition/10 px-2 py-1 font-mono text-[10px] text-ignition uppercase tracking-[0.12em]\\\",\\\"children\\\":\\\"Vendor-stated · ~94% reduction\\\"}]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"84:[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\\\"}]\\n85:[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Stand up a gateway plus registry\\\"}]\\n86:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}]\\n87:[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[14px] leading-[1.6] text-zinc-600 dark:text-zinc-400\\\",\\\"children\\\":\\\"Adopt the consensus pattern: one gateway for identity, policy, PII redaction, and audit; one registry as the source of truth. Anything not in the registry is unsanctioned by definition.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white\\\",\\\"children\\\":\\\"The durable investment\\\"}]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"88:[\\\"$\\\",\\\"div\\\",\\\"3\\\",{\\\"className\\\":\\\"relative flex flex-col gap-5 overflow-hidden rounded-2xl p-6 md:flex-row md:gap-8 md:p-7 border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\\\",\\\"children\\\":[\\\"$undefined\\\",[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-col gap-3 md:w-[220px] md:shrink-0\\\",\\\"children\\\":[[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex items-center gap-2 font-mono text-[10.5px] text-ignition uppercase tracking-[0.14em]\\\",\\\"children\\\":[[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"size-1.5 rounded-full bg-current shadow-[0_0_6px_currentColor]\\\"}],\\\"Identity\\\"]}],[\\\"$\\\",\\\"h5\\\",null,{\\\"className\\\":\\\"m-0 font-medium text-[22px] leading-[1.15] tracking-[-0.02em] text-zinc-950 dark:text-white\\\",\\\"children\\\":\\\"Kill static secrets\\\"}]]}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"hidden w-px self-stretch bg-zinc-200/60 md:block dark:bg-zinc-800/60\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"flex flex-1 flex-col justify-between gap-4\\\",\\\"children\\\":[[\\\"$\\\",\\\"p\\\",null,{\\\"className\\\":\\\"m-0 text-[14px] leading-[1.6] text-zinc-600 dark:text-zinc-400\\\",\\\"children\\\":\\\"The weakest part of the public ecosystem is authentication. Align with the spec's OAuth 2.0 / OpenID Connect hardening, validate issuers, and replace static secrets with short-lived, scoped credentials.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"className\\\":\\\"self-start pt-1 md:self-end\\\",\\\"children\\\":[\\\"$\\\",\\\"span\\\",null,{\\\"className\\\":\\\"inline-block rounded-md px-3 py-1.5 font-medium font-mono text-[11.5px] tracking-[-0.01em] bg-zinc-100 text-zinc-950 dark:bg-zinc-800 dark:text-white\\\",\\\"children\\\":\\\"Close the auth gap\\\"}]}]]}]]}]\\n\"])</script><script>self.__next_f.push([1,\"2a:[[\\\"$\\\",\\\"meta\\\",\\\"0\\\",{\\\"charSet\\\":\\\"utf-8\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"viewport\\\",\\\"content\\\":\\\"width=device-width, initial-scale=1, maximum-scale=5\\\"}]]\\n\"])</script><script>self.__next_f.push([1,\"2d:[[\\\"$\\\",\\\"title\\\",\\\"0\\\",{\\\"children\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"description\\\",\\\"content\\\":\\\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"2\\\",{\\\"name\\\":\\\"author\\\",\\\"content\\\":\\\"Digital Applied\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"3\\\",{\\\"name\\\":\\\"keywords\\\",\\\"content\\\":\\\"mcp dev summit 2026,mcp july 28 spec stateless,shadow mcp governance,mcp 110 million downloads,enterprise mcp gateway,aws mcp server,mcp tasks extension apps\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"4\\\",{\\\"name\\\":\\\"creator\\\",\\\"content\\\":\\\"Digital Applied\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"5\\\",{\\\"name\\\":\\\"publisher\\\",\\\"content\\\":\\\"Digital Applied\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"6\\\",{\\\"name\\\":\\\"robots\\\",\\\"content\\\":\\\"index, follow\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"7\\\",{\\\"name\\\":\\\"googlebot\\\",\\\"content\\\":\\\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\\\"}],[\\\"$\\\",\\\"link\\\",\\\"8\\\",{\\\"rel\\\":\\\"canonical\\\",\\\"href\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"9\\\",{\\\"property\\\":\\\"og:title\\\",\\\"content\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"10\\\",{\\\"property\\\":\\\"og:description\\\",\\\"content\\\":\\\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"11\\\",{\\\"property\\\":\\\"og:url\\\",\\\"content\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"12\\\",{\\\"property\\\":\\\"og:image\\\",\\\"content\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis/article-image\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"13\\\",{\\\"property\\\":\\\"og:image:type\\\",\\\"content\\\":\\\"image/png\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"14\\\",{\\\"property\\\":\\\"og:image:width\\\",\\\"content\\\":\\\"1200\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"15\\\",{\\\"property\\\":\\\"og:image:height\\\",\\\"content\\\":\\\"630\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"16\\\",{\\\"property\\\":\\\"og:image:alt\\\",\\\"content\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up - Digital Applied Blog\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"17\\\",{\\\"property\\\":\\\"og:type\\\",\\\"content\\\":\\\"article\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"18\\\",{\\\"property\\\":\\\"article:published_time\\\",\\\"content\\\":\\\"2026-06-12\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"19\\\",{\\\"property\\\":\\\"article:modified_time\\\",\\\"content\\\":\\\"2026-06-12\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"20\\\",{\\\"property\\\":\\\"article:author\\\",\\\"content\\\":\\\"Digital Applied Team\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"21\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"model-context-protocol\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"22\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"mcp-dev-summit\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"23\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"mcp-spec-2026\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"24\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"shadow-mcp\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"25\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"enterprise-mcp-governance\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"26\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"aaif\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"27\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"mcp-tunnels\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"28\\\",{\\\"property\\\":\\\"article:tag\\\",\\\"content\\\":\\\"stateless-mcp\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"29\\\",{\\\"name\\\":\\\"twitter:card\\\",\\\"content\\\":\\\"summary_large_image\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"30\\\",{\\\"name\\\":\\\"twitter:title\\\",\\\"content\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"31\\\",{\\\"name\\\":\\\"twitter:description\\\",\\\"content\\\":\\\"MCP hit 110M monthly SDK downloads in 16 months. The 2026 Dev Summit and July 28 stateless spec mark its shift to enterprise infrastructure.\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"32\\\",{\\\"name\\\":\\\"twitter:image\\\",\\\"content\\\":\\\"https://www.digitalapplied.com/blog/mcp-dev-summit-2026-readout-protocol-roadmap-analysis/article-image\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"33\\\",{\\\"name\\\":\\\"twitter:image:alt\\\",\\\"content\\\":\\\"MCP Dev Summit 2026 Readout: The Protocol Grows Up - Digital Applied Blog\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"34\\\",{\\\"name\\\":\\\"twitter:image:type\\\",\\\"content\\\":\\\"image/png\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"35\\\",{\\\"name\\\":\\\"twitter:image:width\\\",\\\"content\\\":\\\"1200\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"36\\\",{\\\"name\\\":\\\"twitter:image:height\\\",\\\"content\\\":\\\"630\\\"}],[\\\"$\\\",\\\"link\\\",\\\"37\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico?favicon.0hms~afauq~g0.ico\\\",\\\"sizes\\\":\\\"48x48\\\",\\\"type\\\":\\\"image/x-icon\\\"}],[\\\"$\\\",\\\"link\\\",\\\"38\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/icon.svg?icon.074~muy3rpvs~.svg\\\",\\\"sizes\\\":\\\"any\\\",\\\"type\\\":\\\"image/svg+xml\\\"}],[\\\"$\\\",\\\"link\\\",\\\"39\\\",{\\\"rel\\\":\\\"apple-touch-icon\\\",\\\"href\\\":\\\"/apple-icon.png?apple-icon.0z2i6746e9zp1.png\\\",\\\"sizes\\\":\\\"180x180\\\",\\\"type\\\":\\\"image/png\\\"}],\\\"$L8c\\\"]\\n\"])</script><script>self.__next_f.push([1,\"67:null\\n\"])</script><script>self.__next_f.push([1,\"8d:I[692313,[\\\"/_next/static/chunks/0vfhqx7irdtsp.js\\\",\\\"/_next/static/chunks/0yze7hvbcp5.x.js\\\",\\\"/_next/static/chunks/0zod1seoish6v.js\\\",\\\"/_next/static/chunks/0h9.k2fyk8cqu.js\\\"],\\\"IconMark\\\"]\\n8c:[\\\"$\\\",\\\"$L8d\\\",\\\"40\\\",{}]\\n\"])</script></body></html>","snapshot_chars":302372,"live_check":"changed"},{"url":"https://workos.com/blog/mcp-2026-spec-agent-authentication","committed_hash":"sha256:ab27d9d73f409398001523d37cc9b98ed2cee6cf544a9e264b315b3dc44cbb9a","committed_hash_short":"sha256:ab27d9d7…c44cbb9a","mime_type":"text/html","committed_at":"2026-07-28T00:00:21.327269+00:00","content_snapshot":"<!DOCTYPE html><!-- Last Published: Sat Jul 18 2026 16:35:15 GMT+0000 (Coordinated Universal Time) --><!--$-->\n<html data-wf-domain=\"webflow.workos.com\" data-wf-page=\"65f4ad67e93f3e3fe0aa0369\" data-wf-site=\"621f54116cab10f6e9215d8b\" lang=\"en\" data-wf-collection=\"65f4ad67e93f3e3fe0aa0396\" data-wf-item-slug=\"mcp-2026-spec-agent-authentication\"><!--$--><head><meta charset=\"utf-8\"/><!--$--><link href=\"https://cdn.prod.website-files.com\" rel=\"preconnect\" crossorigin=\"anonymous\"/><!--/$--><title>The biggest MCP spec update ships July 28: What changes for AI agent authentication — WorkOS</title><meta content=\"The MCP 2026-07-28 release candidate rewrites the protocol&#x27;s foundation. Here&#x27;s what&#x27;s changing, what&#x27;s breaking, and what your team needs to do before the final spec lands.\" name=\"description\"/><meta content=\"The biggest MCP spec update ships July 28: What changes for AI agent authentication — WorkOS\" property=\"og:title\"/><meta content=\"The MCP 2026-07-28 release candidate rewrites the protocol&#x27;s foundation. Here&#x27;s what&#x27;s changing, what&#x27;s breaking, and what your team needs to do before the final spec lands.\" property=\"og:description\"/><meta content=\"The biggest MCP spec update ships July 28: What changes for AI agent authentication — WorkOS\" name=\"twitter:title\"/><meta content=\"The MCP 2026-07-28 release candidate rewrites the protocol&#x27;s foundation. Here&#x27;s what&#x27;s changing, what&#x27;s breaking, and what your team needs to do before the final spec lands.\" name=\"twitter:description\"/><meta property=\"og:type\" content=\"website\"/><meta content=\"summary_large_image\" name=\"twitter:card\"/><meta content=\"width=device-width, initial-scale=1\" name=\"viewport\"/><!--$--><link href=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/css/workos-new.shared.3a25a40ec.min.css\" rel=\"stylesheet\" type=\"text/css\" integrity=\"sha384-OiWkDsGgZgjA1OTR93LFse4itIrYo2tmlOzt8IFRabV4fgV3KIHOxPtPQDe8rJEz\" crossorigin=\"anonymous\"/><!--/$--><!--$--><link href=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/css/workos-new.65f4ad67e93f3e3fe0aa0369.67d852171.opt.min.css\" rel=\"stylesheet\" type=\"text/css\" integrity=\"sha384-Z9hSFxjjEfejjs8RPnrfmn03kT2j9bzUKELnWJ0368cPKp4wAoz5fFXNIubgcVUt\" crossorigin=\"anonymous\"/><!--/$--><script type=\"text/javascript\">!function(o,c){var n=c.documentElement,t=\" w-mod-\";n.className+=t+\"js\",(\"ontouchstart\"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+\"touch\")}(window,document);</script><!--$--><link href=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6a44e9f137f7ee438717c16d_favicon%202.ico\" rel=\"shortcut icon\" type=\"image/x-icon\"/><!--/$--><!--$--><link href=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6a44e9f14b26717fdcabf00f_favicon%202.ico\" rel=\"icon\" type=\"image/png\" sizes=\"48x48\"/><!--/$--><!--$--><link href=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/621f549024eb2947f6f2f7f7_Favicon%20256x256.png\" rel=\"apple-touch-icon\"/><!--/$--><!--$--><link href=\"https://workos.com/blog/mcp-2026-spec-agent-authentication\" rel=\"canonical\"/><!--/$--><!--$--><link href=\"rss.xml\" rel=\"alternate\" title=\"RSS Feed\" type=\"application/rss+xml\"/><!--/$--><!-- Google Consent Mode v2 — region-keyed defaults -->\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag() {\n    dataLayer.push(arguments);\n  }\n\n  // Default for everyone (permissive)\n  gtag('consent', 'default', {\n    ad_storage: 'granted',\n    ad_user_data: 'granted',\n    ad_personalization: 'granted',\n    analytics_storage: 'granted',\n  });\n\n  // Override for EEA + UK + Switzerland (Google evaluates region client-side)\n  gtag('consent', 'default', {\n    ad_storage: 'denied',\n    ad_user_data: 'denied',\n    ad_personalization: 'denied',\n    analytics_storage: 'denied',\n    region: ['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB', 'IS', 'LI', 'NO', 'CH'],\n    wait_for_update: 500,\n  });\n</script>\n\n<!-- Restore stored consent (returning visitors) — runs synchronously BEFORE GTM -->\n<script>\n  (function () {\n    try {\n      var stored = localStorage.getItem('workos_consent_v1');\n      if (stored) {\n        var parsed = JSON.parse(stored);\n        function gtag() {\n          window.dataLayer.push(arguments);\n        }\n        gtag('consent', 'update', parsed);\n      }\n    } catch (e) {}\n  })();\n</script>\n\n<!-- Google Tag Manager -->\n<script>\n  (function (w, d, s, l, i) {\n    w[l] = w[l] || [];\n    w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });\n    var f = d.getElementsByTagName(s)[0],\n      j = d.createElement(s),\n      dl = l != 'dataLayer' ? '&l=' + l : '';\n    j.async = true;\n    j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;\n    f.parentNode.insertBefore(j, f);\n  })(window, document, 'script', 'dataLayer', 'GTM-NTN3Q3DV');\n</script>\n<!-- End Google Tag Manager -->\n\n<link rel=\"describedby\" type=\"text/markdown\" href=\"https://workos.com/llms.txt\" title=\"LLM-friendly index\" /><meta name=\"image\" content=\"https://images.workoscdn.com/images/f936caf9-087e-4e90-a067-4185d87d20f6.png?auto=format&amp;fit=clip&amp;q=80\" />\n<meta itemprop=\"image\" content=\"https://images.workoscdn.com/images/f936caf9-087e-4e90-a067-4185d87d20f6.png?auto=format&amp;fit=clip&amp;q=80\" />\n<meta name=\"twitter:image\" content=\"https://images.workoscdn.com/images/f936caf9-087e-4e90-a067-4185d87d20f6.png?auto=format&amp;fit=clip&amp;q=80\" />\n<meta property=\"og:image\" content=\"https://images.workoscdn.com/images/f936caf9-087e-4e90-a067-4185d87d20f6.png?auto=format&amp;fit=clip&amp;q=80\" />\n<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"TechArticle\",\n  \"headline\": \"The biggest MCP spec update ships July 28: What changes for AI agent authentication\",\n  \"description\": \"The MCP 2026-07-28 release candidate rewrites the protocol&#39;s foundation. Here&#39;s what&#39;s changing, what&#39;s breaking, and what your team needs to do before the final spec lands.\",\n  \"author\": {\n    \"@type\": \"Organization\",\n    \"name\": \"WorkOS\"\n  },\n  \"url\": \"https://workos.com/blog/mcp-2026-spec-agent-authentication\",\n  \"datePublished\": \"Jun 18, 2026\"\n}\n</script></head><!--/$--><body data-scroll-time=\"0.5\"><div class=\"page-wrapper\"><div class=\"w-embed\"><style>\n  @font-face {\n    font-family: Untitled Fallback;\n    src: local('Arial');\n    ascent-override: 110%;\n    descent-override:35%;\n    line-gap-override: 0%;\n    size-adjust: 108%;\n  }\n  body{\n  font-family: 'Untitled Sans', 'Untitled Fallback', Arial, sans-serif;\n}\n\n* {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n:root{\n\t--light-1: #29363D;\n  --light-2: #656B8A;\n  --light-3: #8F96BD;\n  --dark-2: #C5CAE8;\n  --dark-3: #878CA6;\n}\na {\n\tcolor: inherit;\n\ttext-decoration: inherit;\n\tfont-size: inherit;\n  text-underline-offset: 2px;\n}\n\ninput, textarea {\n\t-webkit-appearance: none;\n  outline: none !important;\n}\n\n.w-richtext>:first-child {\n\tmargin-top: 0;\n}\n\n.w-richtext>:last-child {\n\tmargin-bottom: 0;\n}\n\n.button{\n  user-select: none;\n  -webkit-user-select: none;\n\tbox-shadow: 0px 24px 22px rgba(23, 6, 100, 0.0372022), 0px 8.5846px 8.03036px rgba(23, 6, 100, 0.0532451), 0px 4.77692px 3.89859px rgba(23, 6, 100, 0.0667549), 0px 2.63479px 1.91116px rgba(23, 6, 100, 0.0827978), 0px 1.15891px 0.755676px rgba(23, 6, 100, 0.12);\n}\n\n.nav-dropdown-menu-inner, .pricing-tooltip, .email-dropdown-inner{\n\tbox-shadow: 0px 51px 80px rgba(22, 26, 41, 0.0154121), 0px 15.375px 24.1177px rgba(22, 26, 41, 0.0270905), 0px 6.38599px 10.0172px rgba(22, 26, 41, 0.0409122), 0px 0.5px 3.62304px rgba(22, 26, 41, 0.07);\n}\n\n.nav-dropdown-link:last-child{\n\tmargin-bottom: 0px;\n}\n\n.text-link:hover .text-link-icon--chevron{\n\tleft: 2px;\n}\n.local-nav-cta:hover .text-link-icon{\n\tleft: 2px;\n}\n.post-back-link:hover .post-back-link-arrow{\n\tleft: -2px;\n}\n\n.code-card{\nbox-shadow: 0px 100px 80px rgba(3, 3, 6, 0.07), 0px 41.7776px 33.4221px rgba(3, 3, 6, 0.0503198), 0px 22.3363px 17.869px rgba(3, 3, 6, 0.0417275), 0px 12.5216px 10.0172px rgba(3, 3, 6, 0.035), 0px 6.6501px 5.32008px rgba(3, 3, 6, 0.0282725), 0px 2.76726px 2.21381px rgba(3, 3, 6, 0.0196802);\n}\n\n.tile, .cs-cards-slide, .bottom-cta, .tile-shadow, .al-circle{\n\tbox-shadow: 0px 51px 78px rgba(17, 7, 53, 0.05), 0px 21.3066px 35.4944px rgba(17, 7, 53, 0.0359427), 0px 11.3915px 18.9418px rgba(17, 7, 53, 0.0298054), 0px 6.38599px 9.8801px rgba(17, 7, 53, 0.025), 0px 3.39155px 4.58665px rgba(17, 7, 53, 0.0201946), 0px 1.4113px 1.55262px rgba(17, 7, 53, 0.0140573), inset 0px 1px 0px rgba(41, 56, 78, 0.05);\n}\n.tile-shadow-dark{\nbox-shadow: 0px 100px 80px rgba(3, 3, 6, 0.07), 0px 41.7776px 33.4221px rgba(3, 3, 6, 0.0503198), 0px 22.3363px 17.869px rgba(3, 3, 6, 0.0417275), 0px 12.5216px 10.0172px rgba(3, 3, 6, 0.035), 0px 6.6501px 5.32008px rgba(3, 3, 6, 0.0282725), 0px 2.76726px 2.21381px rgba(3, 3, 6, 0.0196802);\n}\n.fake-ui-button, .mfa-input-button{\n\tbox-shadow: -5px 0px 29px 1px rgba(219, 74, 255, 0.26), 5px 0px 29px 1px rgba(23, 255, 199, 0.32);\n}\n\n.code-tooltip{\n\tbackground: #030628;\n\tborder: 1px solid rgba(255, 255, 255, 0.2);\n\tborder-radius: 4px;\n  cursor: help;\n}\n\n.home-ds-feature-line-border{\n\twidth: calc(50% + 54px);\n}\n\n.isometric-shadow{\n\tbox-shadow: 0px 91px 183px rgba(38, 33, 84, 0.0196802), 0px 38.0176px 76.453px rgba(38, 33, 84, 0.0282725), 0px 20.326px 40.8754px rgba(38, 33, 84, 0.035), 0px 11.3946px 22.9144px rgba(38, 33, 84, 0.0417275), 0px 6.05159px 12.1697px rgba(38, 33, 84, 0.0503198), 0px 2.5182px 5.06408px rgba(38, 33, 84, 0.07);\n}\n\n.chip-shadow{\nbox-shadow: 0px 0px 74px rgba(6, 255, 255, 0.32), 0px 33px 54px rgba(0, 0, 0, 0.17), 0px 13.7866px 22.5599px rgba(0, 0, 0, 0.122205), 0px 7.37098px 12.0616px rgba(0, 0, 0, 0.101338), 0px 4.13211px 6.76164px rgba(0, 0, 0, 0.085), 0px 2.19453px 3.59106px rgba(0, 0, 0, 0.0686618), 0px 0.913195px 1.49432px rgba(0, 0, 0, 0.0477948);\n}\n.cs-nav-slide.swiper-slide-active .cs-nav-slide-line{\n\theight: 4px;\n}\n.cs-nav-slide.swiper-slide-active .cs-nav-logo{\n\tfilter: grayscale(0);\n  -webkit-filter: grayscale(0);\n  opacity: 100;\n  transform: scale(1);\n}\n.cs-slider-nav-overlay{\n\tpointer-events: none;\n}\n.pricing-toggle-circle{\n\tbox-shadow: 0px 9px 25px rgba(27, 39, 81, 0.0674749), 0px 3.75998px 10.4444px rgba(27, 39, 81, 0.0969343), 0px 2.01027px 5.58408px rgba(27, 39, 81, 0.12), 0px 1.12694px 3.13039px rgba(27, 39, 81, 0.143066), 0px 0.249053px 0.691814px rgba(27, 39, 81, 0.04), inset 0px 1px 2px 1px rgba(255, 255, 255, 0.1);\n}\n.body-dark #logo-text, .body-dark #logo-icon{\n\tfill: #fff;\n}\n.body-dark #dropdown-arrow{\n\tcolor: var(--dark-2);\n}\n.body-dark .nav-link{\n\tcolor: #fff;\n}\n.body-dark .nav-link:hover{\n\tcolor: var(--dark-2);\n}\n.body-dark .nav-cta{\n\tcolor: #23F0C3;\n  border-color: #2B335A;\n}\n.body-dark .nav-cta:hover{\n  border-color: #23F0C3;\n}\n.body-dark .footer{\n\tbackground: #030520;\n  color: var(--dark-3);\n}\n.body-dark .footer-link{\n  color: var(--dark-2);\n}\n.body-dark .post-rt a{\n  color: #23F0C3;\n}\n.subscribe-wrap a, .subscribe-wrap .subscribe-email-dropdown-toggle {\n\tcolor: #6363F1;\n}\n.body-dark .subscribe-wrap a, .body-dark .subscribe-wrap .subscribe-email-dropdown-toggle {\n\tcolor: #23F0C3;\n}\n.body-dark .nav-dropdown-menu-inner{\n\tbackground-color: #181B39;\n  border: 1px solid #2B335A;\n}\n.body-dark .nav-dropdown-menu-arrow-inner{\n\tbackground-color: #181B39;\n}\n.body-dark .nav-dropdown-menu-arrow{\n\tbackground-image: linear-gradient(135deg,#2B335A,rgba(43, 51, 90, 1) 39%,rgba(43, 51, 90, 0) 40%);\n}\n.body-dark .nav-dropdown-link-icon{\n\tcolor: #23F0C3;\n}\n.body-dark .nav-dropdown-menu{\n\tcolor: #fff;\n}\n.body-dark .nav-dropdown-link:hover{\n\tbackground: #24274C;\n}\n.body-dark .text-color-light-2{\n\tcolor: var(--dark-2);\n}\n.body-dark .nav-link.nav-link--dropdown.w--open{\n\tcolor: #C5CAE8;\n}\n.body-dark .mobile-nav-menu-inner{\n\tbackground: #181B39;\n  border: 1px solid #2B335A;\n}\n.body-dark .mobile-nav-cta-wrap{\n\tbackground: #24274C;\n  \n}\n.body-dark .button--mobile-nav{\n\tbackground: #23F0C3;\n  color: #030628;\n}\n.body-dark .mobile-nav-button{\n\tborder-color: #2B335A;\n  color: var(--dark-2);\n}\n.body-dark .mobile-nav-menu-close{\n  color: var(--dark-2);\n}\n.body-dark .mobile-nav-menu-divider{\n\tbackground: #2B335A;\n}\n.body-dark .nav-context-menu{\n\tbackground-color: #181B39;\n}\n.body-dark .context-menu-item:hover{\n\tbackground-color: #24274C;\n  color: #fff;\n}\n\n.cs-cards-slide.swiper-slide{\n  user-select: none;\n  -webkit-user-select: none;\n}\nhr {\n\tbackground-image: url('https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/623b019ae77ec09f6fa640c6_hr-purple.svg');\n  background-position: center;\n  background-repeat: no-repeat;\n\theight: 10px;\n  border:none;\n  margin: 36px 0;\n}\n.text-gradient-light {\n-webkit-box-decoration-break: clone;\n}\n\n.terms-paragraph a{\n\ttext-decoration: underline;\n}\np a{\n\tcolor: #6363F1;\n}\n.code-tabs-menu::-webkit-scrollbar, .blog-filters-wrap::-webkit-scrollbar, .jobs-tabs-menu::-webkit-scrollbar {\n    display: none;\n}\n.video-cta-thumbnail:hover{\n\tbox-shadow: -5px 0px 29px 1px rgba(219, 74, 255, 0.26), 5px 0px 29px 1px rgba(23, 255, 199, 0.32);\n}\n.absolute-link{\n\tpointer-events: none;\n}\n@media only screen and (max-width: 1090px) and (min-width: 992px){\n\t.button, .text-link, .secondary-button{\n  \tfont-size: 14px !important;\n  }\n}\n.post-rt em, .post-rt i{\n\tfont-family: \"Georgia\";\n}\nblockquote em{\n\tfont-family: 'Untitled sans',sans-serif !important;\n\tfont-style: normal;\n}\n.bottom-cta:hover{\n\tbox-shadow: 0px 61px 48px rgba(17, 7, 53, 0.1), 0px 21.3066px 35.4944px rgba(17, 7, 53, 0.0759), 0px 11.3915px 18.9418px rgba(17, 7, 53, 0.0498), 0px 6.38599px 9.8801px rgba(17, 7, 53, 0.035), 0px 3.39155px 4.58665px rgba(17, 7, 53, 0.0201946), 0px 1.4113px 1.55262px rgba(17, 7, 53, 0.0140573), inset 0px 1px 0px rgba(41, 56, 78, 0.05);\n}\n.tippy-box[data-theme~='workos'] {\n  background-color: #fff;\n  color: #29363D;\n  border: 1px solid #DDDDE3;\n  border-radius: 8px;\n  padding: 10px;\n}\ntextarea { resize: vertical; }\n.nav-context-menu.show-menu{\n\tdisplay: block;\n}\n.multiple-authors-wrap .blog-author:nth-child(1){\n\tz-index: 8;\n}\n.multiple-authors-wrap .blog-author:nth-child(2){\n\tz-index: 7;\n}\n.multiple-authors-wrap .blog-author:nth-child(3){\n\tz-index: 6;\n}\n.multiple-authors-wrap .blog-author:nth-child(4){\n\tz-index: 5;\n}\n.multiple-authors-wrap .blog-author:nth-child(5){\n\tz-index: 4;\n}\n.multiple-authors-wrap .blog-author:nth-child(6){\n\tz-index: 3;\n}\n.multiple-authors-wrap .blog-author:nth-child(7){\n\tz-index: 2;\n}\n.multiple-authors-wrap .blog-author:nth-child(8){\n\tz-index: 1;\n}\n.nav-link--dropdown.w--open{\n\tpointer-events: none;\n}\n</style></div><div class=\"w-embed\"><link\n  href=\"https://unpkg.com/prism-theme-night-owl@1.4.0/build/light-no-italics.css\"\n  rel=\"stylesheet\"\n/>\n<style>\n.video-container {\n    overflow: hidden;\n    position: relative;\n    width:100%;\n}\n\n.video-container::after {\n    padding-top: 56.25%;\n    display: block;\n    content: '';\n}\n\n.video-container iframe {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n}\n\n.code-toolbar pre code {\n  font-size: 14px;\n  font-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;\n}\n\n.code-toolbar pre {\n\tborder-radius: 8px;\n}\n\n.code-toolbar {\n  position: relative;\n}\n\n.code-toolbar > .toolbar {\n  position: absolute;\n  top: .3em;\n  right: .2em;\n  border-radius: .5em;\n}\n\n.code-toolbar > .toolbar a {\n  color: #bbb;\n  font-size: .8em;\n  cursor: pointer;\n  padding: 0 .5em;\n}\n\n.code-toolbar > .toolbar a:hover, \n.code-toolbar > .toolbar a:focus,\n.code-toolbar > .toolbar a.zeroclipboard-is-hover {\n  color: inherit;\n}\n  \n.code-toolbar ::selection {\n  background-color: #6363F1 !important;\n  color: #FFF;\n}\n\n.toolbar {\ndisplay: none;\n}\n\n.code-toolbar:hover .toolbar {\ndisplay:block;\n}\n.copy-to-clipboard-button span{\n\tdisplay: none;\n}\n\n.code-toolbar:hover .copy-to-clipboard-button[data-copy-state=\"copy\"] {\ndisplay:block;\nbackground-color:transparent;\nbackground-repeat: no-repeat;\nmargin:12px;\nwidth:16px;\nheight:16px;\nbackground-image: url(\"data:image/svg+xml,%3Csvg width='16px' height='16px'  viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6665 2.6665H11.9998C12.3534 2.6665 12.6926 2.80697 12.9426 3.05702C13.1927 3.30707 13.3331 3.64621 13.3331 3.99983V13.3332C13.3331 13.6868 13.1927 14.026 12.9426 14.276C12.6926 14.5261 12.3534 14.6665 11.9998 14.6665H3.99984C3.64622 14.6665 3.30708 14.5261 3.05703 14.276C2.80698 14.026 2.6665 13.6868 2.6665 13.3332V3.99983C2.6665 3.64621 2.80698 3.30707 3.05703 3.05702C3.30708 2.80697 3.64622 2.6665 3.99984 2.6665H5.33317' stroke='black' stroke-width='1.33' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M10.0002 1.3335H6.00016C5.63197 1.3335 5.3335 1.63198 5.3335 2.00017V3.3335C5.3335 3.70169 5.63197 4.00017 6.00016 4.00017H10.0002C10.3684 4.00017 10.6669 3.70169 10.6669 3.3335V2.00017C10.6669 1.63198 10.3684 1.3335 10.0002 1.3335Z' stroke='black' stroke-width='1.33' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n}\n\n.code-toolbar:hover .copy-to-clipboard-button[data-copy-state=\"copy-success\"] {\ndisplay:block;\nbackground-color:transparent;\nbackground-repeat: no-repeat;\nmargin:12px;\nwidth:16px;\nheight:16px;\nbackground-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.66675 8.00013L6.00008 11.3334L12.3334 5.00013L13.2476 4.08594' stroke='black' stroke-width='1.33' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n}\n\n.post-rt p code,\n.post-rt blockquote code,\n.post-rt li code,\n.post-rt h2 code,\n.post-rt h3 code,\n.post-rt h4 code{\n  background-color: #f5f7f9;\n\tfont-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;\n  font-size: 0.875em;\n  font-weight: 400;\n  color: #343a40;\n  border-radius: 6px;\n  padding: 3px 6px;\n}\n\nbody .gist .gist-data {\n    max-width: calc(100vw - 24px);\n    margin-bottom: 18px;\n    margin-top: 0px;\n}\n\n[data-tippy-content]{\n\ttop: 0;\n  left: 0;\n}\n.tippy-box[data-theme~='custom'] {\n  background-color: #f5f5ff;\n  color: #656b8a;\n  padding: 8px;\n  white-space: nowrap;\n}\n.tippy-box[data-theme~='custom'][data-placement^='top'] {\n   bottom: 6px;\n}\n.tippy-box[data-theme~='custom'][data-placement^='bottom'] {\n   bottom: -6px;\n}\n.tippy-box[data-theme~='custom'][data-placement^='top'] > .tippy-arrow::before {\n  border-top-color: #f5f5ff;\n}\n.tippy-box[data-theme~='custom'][data-placement^='bottom'] > .tippy-arrow::before {\n  border-bottom-color: #f5f5ff;\n}\n\n</style>\n<style>\n@media only screen and (min-width: 992px) {\n  .w-richtext-figure-type-image.w-richtext-align-fullwidth {\n    position: relative;\n    min-width: 746px !important;\n    left: 50%;\n    transform: translateX(-50%);\n  }\n\n  .w-richtext-figure-type-image.w-richtext-align-fullwidth figcaption {\n    width: 650px;\n    margin-left: auto;\n    margin-right: auto;\n  }\n}\n\n.w-richtext-figure-type-image div {\n  max-width: none !important;\n  display: block !important;\n}\n\n.article-container .section-heading {\n  text-wrap: balance;\n}\n.article-summary {\n  text-wrap: pretty;\n}\n.post-rt p,\n.post-rt li {\n  color: rgba(41, 54, 61, 0.92);\n}\n\n.post-rt h2 + h3 {\n  margin-top: 28px;\n}\n.post-rt li p {\n  margin-bottom: 0px;\n}\n.post-rt pre {\n  background-color: #fbfbfb !important;\n}\npre[class*=\"language-\"] {\n  margin-bottom: 32px;\n}\n\n.multiple-authors-wrap:hover .blog-author {\n  margin-right: 8px;\n}\n.toc-link.w--current .toc-link-dot {\n  opacity: 100%;\n}\n\n.article-content-section {\n  scroll-margin-top: 64px;\n}\n.toc-item {\n  display: flex;\n  align-items: start;\n}\n.toc-item.active > a {\n  color: var(--black);\n}\n\n.post-toc-wrap {\n  --toc-transition-duration: 0.25s;\n  --toc-easing: ease;\n  --toc-line-width: 18;\n  --toc-line-width-px: 18px;\n  --toc-line-height: 2px;\n  --toc-line-color: #d1d3da;\n  --toc-line-color-active: var(--black);\n  transition: transform var(--toc-transition-duration) var(--toc-easing);\n}\n.post-toc-inner {\n  height: var(--initial-toc-height);\n  transition: transform var(--toc-transition-duration) var(--toc-easing);\n}\n/* Collapsed state */\n.post-toc-inner.toc-collapsed {\n  transform: /*translateY(calc(50vh - 50% - 48px))*/ translateX(\n    calc(-1 * (100vw - 1200px - 64px) / 2)\n  );\n}\n@media (max-width: 1312px) and (min-width: 992px) {\n  .post-toc-inner.toc-collapsed {\n    transform: translateX(-40px);\n  }\n}\n.toc-a {\n  position: relative;\n  display: flex;\n  align-items: center;\n  /*will-change: transform;*/\n  transition: transform var(--toc-transition-duration) var(--toc-easing),\n    height var(--toc-transition-duration) var(--toc-easing);\n  transform-origin: left;\n  height: var(--expanded-link-height);\n}\n\n/* Line behind text that's always present but scaled to 0 by default */\n.toc-line {\n  position: absolute;\n  left: 0;\n  top: calc(50% - var(--toc-line-height) / 2);\n  opacity: 0;\n  width: var(--toc-line-width-px);\n  height: var(--toc-line-height);\n  background-color: var(--toc-line-color);\n  border-radius: var(--toc-line-height);\n  transform: scale(calc(var(--expanded-link-width) / var(--toc-line-width)), 5);\n  transform-origin: left center;\n  will-change: transform;\n  transition: transform var(--toc-transition-duration) var(--toc-easing),\n    opacity var(--toc-transition-duration) var(--toc-easing),\n    background-color var(--toc-transition-duration) var(--toc-easing);\n}\n\n.toc-text {\n  /*\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  max-width: 180px;\n  */\n  transform-origin: left center;\n  will-change: transform;\n  transition: transform var(--toc-transition-duration) var(--toc-easing),\n    opacity var(--toc-transition-duration) var(--toc-easing),\n    color var(--toc-transition-duration) var(--toc-easing);\n}\n.toc-text-inner {\n  display: inline;\n}\n.toc-label {\n  transform-origin: left center;\n  transition: transform var(--toc-transition-duration) var(--toc-easing),\n    opacity var(--toc-transition-duration) var(--toc-easing);\n}\n\n.toc-a::before {\n  content: \"\";\n  position: absolute;\n  left: -8px;\n  top: 3px;\n  bottom: 3px;\n  width: 1.5px;\n  border-radius: 2px;\n  background-color: currentColor;\n  transition: opacity var(--toc-transition-duration) var(--toc-easing);\n  opacity: 0;\n}\n.toc-item.active .toc-a::before {\n  opacity: 1;\n}\n\n/* Collapsed state styles */\n.toc-collapsed .toc-a {\n  height: 1px;\n}\n\n.toc-collapsed .toc-label {\n  opacity: 0;\n  transform: scale(0.4);\n}\n.toc-collapsed .toc-text {\n  transform: scale(\n    calc(var(--toc-line-width) / var(--expanded-link-width)),\n    0.2\n  );\n  opacity: 0;\n}\n\n.toc-collapsed .toc-line {\n  transform: scaleX(1);\n  opacity: 1;\n}\n\n/* Active link styles */\n.toc-collapsed .toc-item.active .toc-line {\n  background-color: var(--toc-line-color-active);\n  transform: scale(1.3, 1);\n}\n\n.toc-collapsed .toc-item.active .toc-a::before {\n  opacity: 0;\n}\n/* Hover state */\n.toc-collapsed:hover .toc-a {\n  height: var(--expanded-link-height);\n}\n\n.toc-collapsed:hover .toc-line {\n  transform: scale(calc(var(--expanded-link-width) / var(--toc-line-width)), 5);\n  opacity: 0;\n}\n.toc-collapsed:hover .toc-item.active .toc-line {\n  transform: scale(calc(var(--expanded-link-width) / var(--toc-line-width)), 5);\n  background-color: var(--toc-line-color);\n}\n.toc-collapsed:hover .toc-a .toc-text {\n  transform: scale(1, 1);\n  opacity: 1;\n}\n\n.toc-collapsed:hover .toc-item.active .toc-a {\n  color: var(--black);\n}\n.toc-collapsed:hover .toc-item.active .toc-a::before {\n  opacity: 1;\n}\n.toc-a:hover .toc-text {\n  color: var(--black);\n}\n.transitioning .toc-a {\n  cursor: default;\n}\n.article-note {\n  background-color: #f5f5f7;\n  padding: 20px 20px 20px 48px;\n  border-radius: 10px;\n  position: relative;\n  font-size: 16px;\n  margin-top: 32px !important;\n  margin-bottom: 32px !important;\n  line-height: 1.5 !important;\n}\n.article-note::before {\n  content: url(\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.9999 1.44043C4.09837 1.44043 0.935547 4.60325 0.935547 8.50478C0.935547 12.4063 4.09837 15.5692 7.9999 15.5692C11.9014 15.5692 15.0642 12.4063 15.0642 8.50478C15.0642 4.60325 11.9014 1.44043 7.9999 1.44043ZM1.94887 8.50478C1.94887 5.1629 4.65802 2.45376 7.9999 2.45376C11.3418 2.45376 14.0509 5.1629 14.0509 8.50478C14.0509 11.8466 11.3418 14.5559 7.9999 14.5559C4.65802 14.5559 1.94887 11.8466 1.94887 8.50478ZM8.79991 5.30507C8.79991 5.74689 8.44174 6.10507 7.99991 6.10507C7.55809 6.10507 7.19991 5.74689 7.19991 5.30507C7.19991 4.86323 7.55809 4.50507 7.99991 4.50507C8.44174 4.50507 8.79991 4.86323 8.79991 5.30507ZM6.40003 6.90507H6.93336H8.00003C8.29459 6.90507 8.53336 7.14384 8.53336 7.4384V11.1717H9.0667H9.60003V12.2384H9.0667H8.00003H6.93336H6.40003V11.1717H6.93336H7.4667V7.97173H6.93336H6.40003V6.90507Z' fill='currentColor'/%3E%3C/svg%3E\");\n  position: absolute;\n  left: 20px;\n  top: 22px;\n  opacity: 0.6;\n}\n.post-rt li ul, .post-rt li ol{\n\tmargin-bottom: 0px;\n}\n.summarize-menu-item{\n  opacity: 0;\n  transform: translateY(1px);\n  transition: opacity 150ms ease-out, transform 150ms ease-out;\n}\n\n.summarize-menu.w--open .summarize-menu-item.cc-2{\n\t  transition-delay: 0.025s;\n}\n.summarize-menu.w--open .summarize-menu-item.cc-1{\n\t  transition-delay: 0.05s;\n}\n.summarize-menu {\n\tvisibility: hidden;\n}\n.summarize-menu.w--open {\n\tvisibility: visible;\n}\n.summarize-menu.w--open .summarize-menu-item {\n  opacity: 1;\n  transform: translateY(0px);\n    transition: opacity 500ms ease, filter 500ms ease, transform 500ms ease;\n\n}\n@media only screen and (max-width: 1280px){\n\t.summarize-wrap{\n  \tdisplay: none;\n  }\n}\n</style></div><nav class=\"nav\"><div class=\"page-padding\"><div class=\"container\"><div class=\"nav-inner\"><a aria-label=\"WorkOS Home\" href=\"/\" class=\"nav-logo-link w-inline-block\"><div class=\"nav-logo-img w-embed\"><svg width=\"126\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M36.518 3.613h3.479l2.505 10.321c.464 1.948.556 3.108.556 3.108h.047s.162-1.136.626-3.108l2.388-10.32h3.943l2.527 10.32c.487 2.018.604 3.108.604 3.108h.07s.046-1.09.509-3.108l2.412-10.32h3.479l-4.406 16.93h-3.873l-2.666-10.252c-.557-2.226-.604-3.223-.604-3.223h-.047s-.047.997-.556 3.223l-2.505 10.251h-3.988l-4.5-16.93ZM59.082 14.393c0-3.874 2.505-6.378 6.286-6.378 3.757 0 6.261 2.504 6.261 6.377 0 3.896-2.505 6.425-6.261 6.425-3.78-.001-6.286-2.529-6.286-6.425Zm9.3 0c0-2.505-1.206-3.92-3.014-3.92-1.948 0-3.039 1.577-3.039 3.92 0 2.551 1.206 3.965 3.039 3.965 1.948 0 3.014-1.578 3.014-3.966ZM73.182 8.204h3.084v2.274h.07c.534-1.183 1.808-2.366 3.988-2.366.37 0 .603.047.765.092v3.084h-.092s-.278-.092-1.044-.092c-2.388 0-3.687 1.414-3.687 4.058v5.287h-3.084V8.204ZM82.527 3.613h3.084V9.04c0 3.2-.047 3.78-.047 3.78h.047l4.592-4.615h3.849l-5.378 5.334 6.239 7.004H91.27l-4.5-5.103-1.16 1.136v3.965h-3.084V3.613ZM94.957 12.14c0-5.218 3.248-8.696 8.118-8.696s8.117 3.478 8.117 8.696-3.247 8.696-8.117 8.696c-4.87 0-8.118-3.478-8.118-8.696Zm12.871 0c0-3.548-1.901-5.938-4.755-5.938s-4.753 2.39-4.753 5.938c0 3.548 1.9 5.938 4.753 5.938 2.852 0 4.755-2.39 4.755-5.938ZM112.372 14.908h3.526c0 1.995 1.369 3.108 3.456 3.108 1.762 0 2.969-.882 2.969-2.134 0-1.414-.927-1.786-3.874-2.365-2.69-.534-5.543-1.439-5.543-4.964 0-2.945 2.505-5.171 6.331-5.171 3.988 0 6.448 2.087 6.448 5.24h-3.526c0-1.53-1.182-2.482-2.922-2.482-1.762 0-2.852.858-2.852 2.11 0 1.322.765 1.831 3.131 2.318 3.501.743 6.377 1.136 6.377 5.032 0 3.087-2.69 5.174-6.656 5.174-4.035 0-6.865-2.342-6.865-5.866Z\" id=\"logo-text\" fill=\"#29363D\"/><path d=\"M0 12c0 .526.138 1.052.406 1.505l4.856 8.409c.498.858 1.255 1.56 2.196 1.874a3.94 3.94 0 0 0 4.69-1.763l1.172-2.031L8.695 12l4.883-8.465 1.173-2.03A4.78 4.78 0 0 1 16.126 0H8.594C7.274 0 6.055.702 5.4 1.846l-4.994 8.65A2.968 2.968 0 0 0 0 12Z\" id=\"logo-icon\" fill=\"#6363F1\"/><path d=\"M27.692 12c0-.526-.138-1.053-.406-1.505l-4.92-8.52a3.962 3.962 0 0 0-4.69-1.763c-.94.314-1.698 1.015-2.196 1.874l-1.108 1.91L18.997 12l-4.883 8.464-1.173 2.031c-.35.6-.821 1.108-1.375 1.505h7.532c1.32 0 2.539-.702 3.194-1.846l4.994-8.65c.268-.452.406-.978.406-1.504Z\" id=\"logo-icon\" fill=\"#6363F1\"/></svg></div></a><div class=\"nav-menu\"><div class=\"nav-menu-item\"><div data-hover=\"true\" data-delay=\"0\" class=\"nav-dropdown w-dropdown\"><div class=\"nav-link nav-link--dropdown w-dropdown-toggle\"><div>Products</div><div class=\"nav-dropdown-arrow w-embed\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 4.5L6 7.5L9 4.5\" id=\"dropdown-arrow\" stroke=\"currentColor\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div><nav class=\"nav-dropdown-menu nav-dropdown-menu--features cc-products w-dropdown-list\"><div class=\"nav-dropdown-menu-inner\"><div class=\"nav-dropdown-menu-arrow cc-products\"><div class=\"nav-dropdown-menu-arrow-inner\"></div></div><div class=\"nav-dropdown-products\"><a href=\"/user-management\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/656545520bd5f04e20a3a6a7_um.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">User Management</div><div class=\"text-color-light-2\">Complete auth &amp; user management platform</div></div></a><a href=\"/single-sign-on\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e1062ae62bc2260203e96f_icon-sso.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Enterprise SSO</div><div class=\"text-color-light-2\">Unified SSO integration for any identity provider</div></div></a><a href=\"/radar\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/673b4ed27842047837086d7a_icon-radar-nav.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Radar</div><div class=\"text-color-light-2\">Real-time protection against bots, fraud, and abuse<!--$--><br/><!--/$--></div></div></a><a href=\"https://authkit.com\" target=\"_blank\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/65654341bfdb733f6715f944_authkit.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">AuthKit</div><div class=\"text-color-light-2\">Customizable UI for all authentication types</div></div></a><a href=\"/directory-sync\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e10629cdacaa53e05c2a95_icon-directory-sync.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Directory Sync</div><div class=\"text-color-light-2\">User lifecycle management from corporate directories</div></div></a><a href=\"/rbac\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/68752d3fceb13184116f219f_icon-rbac.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Role-Based Access Control</div><div class=\"text-color-light-2\">Powerful and flexible permissions for your users</div></div></a><a href=\"/mcp\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/68c8802359b1c7df06378d44_icon-mcp-auth.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">MCP Auth</div><div class=\"text-color-light-2\">Secure auth for MCP servers</div></div></a><a href=\"/admin-portal\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e1062a21fa47cd37a717f5_icon-admin-portal.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Admin Portal</div><div class=\"text-color-light-2\">Self-serve onboarding for corporate IT admins</div></div></a><a href=\"/vault\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/67daf11719d8c412f176a3d4_icon-vault.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Vault</div><div class=\"text-color-light-2\">EKM for encrypting and optionally storing objects</div></div></a><a href=\"/multi-factor-authentication\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6a3017a8e767a6e6a2078ef1_icon-mfa.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Multi-Factor Authentication</div><div class=\"text-color-light-2\">Advanced auth methods</div></div></a><a href=\"/audit-logs\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e1062a39c3d330594d5a66_icon-audit-logs.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Audit Logs</div><div class=\"text-color-light-2\">Event logging, exporting, and streaming</div></div></a><a href=\"https://workos.com/pipes\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6a3018b0e0c172dcc18705c9_icon-pipes.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Pipes</div><div class=\"text-color-light-2\">Integrations for your apps &amp; agents</div></div></a></div></div></nav></div></div><div class=\"nav-menu-item\"><div data-hover=\"true\" data-delay=\"0\" class=\"nav-dropdown w-dropdown\"><div class=\"nav-link nav-link--dropdown w-dropdown-toggle\"><div>Developers</div><div class=\"nav-dropdown-arrow w-embed\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 4.5L6 7.5L9 4.5\" id=\"dropdown-arrow\" stroke=\"currentColor\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div><nav class=\"nav-dropdown-menu w-dropdown-list\"><div class=\"nav-dropdown-menu-inner\"><div class=\"nav-dropdown-menu-arrow\"><div class=\"nav-dropdown-menu-arrow-inner\"></div></div><div class=\"nav-links-wrap\"><a href=\"https://workos.com/docs\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M8.11872 6.88128L7.5 6.26256L6.26256 7.5L6.88128 8.11872L8.11872 6.88128ZM9.5 9.5L10.1187 10.1187L10.7374 9.5L10.1187 8.88128L9.5 9.5ZM6.88128 10.8813L6.26256 11.5L7.5 12.7374L8.11872 12.1187L6.88128 10.8813ZM11.5 11.125H10.625V12.875H11.5V11.125ZM13.5 12.875H14.375V11.125H13.5V12.875ZM20.125 7V21H21.875V7H20.125ZM20 21.125H10V22.875H20V21.125ZM17 6.875H20V5.125H17V6.875ZM9.875 21V18H8.125V21H9.875ZM10 21.125C9.93096 21.125 9.875 21.069 9.875 21H8.125C8.125 22.0355 8.96447 22.875 10 22.875V21.125ZM20.125 21C20.125 21.069 20.069 21.125 20 21.125V22.875C21.0355 22.875 21.875 22.0355 21.875 21H20.125ZM21.875 7C21.875 5.96447 21.0355 5.125 20 5.125V6.875C20.069 6.875 20.125 6.93096 20.125 7H21.875ZM5 2.875H16V1.125H5V2.875ZM16.125 3V17H17.875V3H16.125ZM16 17.125H5V18.875H16V17.125ZM4.875 17V3H3.125V17H4.875ZM5 17.125C4.93096 17.125 4.875 17.069 4.875 17H3.125C3.125 18.0355 3.96447 18.875 5 18.875V17.125ZM16.125 17C16.125 17.069 16.069 17.125 16 17.125V18.875C17.0355 18.875 17.875 18.0355 17.875 17H16.125ZM16 2.875C16.069 2.875 16.125 2.93096 16.125 3H17.875C17.875 1.96447 17.0355 1.125 16 1.125V2.875ZM5 1.125C3.96447 1.125 3.125 1.96447 3.125 3H4.875C4.875 2.93096 4.93096 2.875 5 2.875V1.125ZM6.88128 8.11872L8.88128 10.1187L10.1187 8.88128L8.11872 6.88128L6.88128 8.11872ZM8.88128 8.88128L6.88128 10.8813L8.11872 12.1187L10.1187 10.1187L8.88128 8.88128ZM11.5 12.875H13.5V11.125H11.5V12.875Z\" fill=\"currentColor\"/>\n</svg></div><div>Documentation</div></a><a href=\"/changelog\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6 5C13.1797 5 19 10.8203 19 18M6 11C9.86599 11 13 14.134 13 18M7 18C7 18.5523 6.55228 19 6 19C5.44772 19 5 18.5523 5 18C5 17.4477 5.44772 17 6 17C6.55228 17 7 17.4477 7 18Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Changelog</div></a><a href=\"https://status.workos.com\" target=\"_blank\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M3 12H21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 21C13.6569 21 15 16.9706 15 12C15 7.02944 13.6569 3 12 3C10.3431 3 9 7.02944 9 12C9 16.9706 10.3431 21 12 21Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>API Status</div><div class=\"nav-dropdown-link-external-icon w-embed\"><svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M8.5 16L16.5 8\" stroke=\"#8F96BD\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M10.5 8H16.5V14\" stroke=\"#8F96BD\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></a></div></div></nav></div></div><div class=\"nav-menu-item\"><div data-hover=\"true\" data-delay=\"0\" class=\"nav-dropdown w-dropdown\"><div class=\"nav-link nav-link--dropdown w-dropdown-toggle\"><div>Resources</div><div class=\"nav-dropdown-arrow w-embed\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 4.5L6 7.5L9 4.5\" id=\"dropdown-arrow\" stroke=\"currentColor\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div><nav class=\"nav-dropdown-menu w-dropdown-list\"><div class=\"nav-dropdown-menu-inner\"><div class=\"nav-dropdown-menu-arrow\"><div class=\"nav-dropdown-menu-arrow-inner\"></div></div><div class=\"nav-links-wrap\"><a href=\"/blog\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4 20H20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8 20.0001V21.0001C8.26522 21.0001 8.51957 20.8947 8.70711 20.7072L8 20.0001ZM4 20.0001H3C3 20.5524 3.44772 21.0001 4 21.0001V20.0001ZM4 16.0001L3.29289 15.293C3.10536 15.4805 3 15.7349 3 16.0001H4ZM15.2929 4.7072L16 5.41431L16 5.41431L15.2929 4.7072ZM16.7071 4.7072L16 5.41431L16 5.41431L16.7071 4.7072ZM19.2929 7.29299L20 6.58588V6.58588L19.2929 7.29299ZM19.2929 8.7072L18.5858 8.00009L19.2929 8.7072ZM8 19.0001H4V21.0001H8V19.0001ZM5 20.0001V16.0001H3V20.0001H5ZM4.70711 16.7072L16 5.41431L14.5858 4.00009L3.29289 15.293L4.70711 16.7072ZM16 5.41431L18.5858 8.00009L20 6.58588L17.4142 4.00009L16 5.41431ZM18.5858 8.00009L7.29289 19.293L8.70711 20.7072L20 9.41431L18.5858 8.00009ZM18.5858 8.00009V8.00009L20 9.41431C20.781 8.63326 20.781 7.36693 20 6.58588L18.5858 8.00009ZM16 5.41431H16L17.4142 4.00009C16.6332 3.21904 15.3668 3.21904 14.5858 4.00009L16 5.41431Z\" fill=\"currentColor\"/>\n<path d=\"M12 8L16 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Blog</div></a><a href=\"/guides\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.0513 20.8162C11.226 21.3402 11.7923 21.6233 12.3162 21.4487C12.8402 21.274 13.1233 20.7077 12.9487 20.1838L11.0513 20.8162ZM12.9487 20.1838L12.7464 19.577L10.8491 20.2094L11.0513 20.8162L12.9487 20.1838ZM8.47734 16.5H4V18.5H8.47734V16.5ZM4 16.5V6H2V16.5H4ZM4 6H9V4H4V6ZM11 8V19H13V8H11ZM9 6C10.1046 6 11 6.89543 11 8H13C13 5.79086 11.2091 4 9 4V6ZM4 6L4 6V4C2.89543 4 2 4.89543 2 6H4ZM4 16.5V16.5H2C2 17.6046 2.89543 18.5 4 18.5V16.5ZM12.7464 19.577C12.1339 17.7394 10.4143 16.5 8.47734 16.5V18.5C9.55342 18.5 10.5088 19.1886 10.8491 20.2094L12.7464 19.577Z\" fill=\"currentColor\"/>\n<path d=\"M12.9487 20.8162C12.774 21.3402 12.2077 21.6233 11.6838 21.4487C11.1598 21.274 10.8767 20.7077 11.0513 20.1838L12.9487 20.8162ZM11.0513 20.1838L11.2536 19.577L13.1509 20.2094L12.9487 20.8162L11.0513 20.1838ZM15.5227 16.5H20V18.5H15.5227V16.5ZM20 16.5V6H22V16.5H20ZM20 6H15V4H20V6ZM13 8V19H11V8H13ZM15 6C13.8954 6 13 6.89543 13 8H11C11 5.79086 12.7909 4 15 4V6ZM20 6L20 6V4C21.1046 4 22 4.89543 22 6H20ZM20 16.5V16.5H22C22 17.6046 21.1046 18.5 20 18.5V16.5ZM11.2536 19.577C11.8661 17.7394 13.5857 16.5 15.5227 16.5V18.5C14.4466 18.5 13.4912 19.1886 13.1509 20.2094L11.2536 19.577Z\" fill=\"currentColor\"/>\n</svg></div><div>Guides</div></a><a href=\"/podcast\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M21 13H22C22 12.4477 21.5523 12 21 12V13ZM21 12H17V14H21V12ZM15 14V19H17V14H15ZM17 21H20V19H17V21ZM22 19V13H20V19H22ZM20 21C21.1046 21 22 20.1046 22 19H20V21ZM15 19C15 20.1046 15.8954 21 17 21V19H15ZM17 12C15.8954 12 15 12.8954 15 14H17V12Z\" fill=\"currentColor\"/>\n<path d=\"M3 13V12C2.44772 12 2 12.4477 2 13H3ZM3 14H7V12H3V14ZM7 14V19H9V14H7ZM7 19H4V21H7V19ZM4 19V13H2V19H4ZM4 19L4 19H2C2 20.1046 2.89543 21 4 21V19ZM7 19V21C8.10457 21 9 20.1046 9 19H7ZM7 14H9C9 12.8954 8.10457 12 7 12V14Z\" fill=\"currentColor\"/>\n<path d=\"M3 13C3 8.02944 7.02944 4 12 4C16.9706 4 21 8.02944 21 13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Podcast</div></a><a href=\"/customers\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7 20C7 18.3431 9.23858 17 12 17C14.7614 17 17 18.3431 17 20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 14.2495C19.7659 14.7124 21 15.7697 21 16.9999\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6 14.2495C4.2341 14.7124 3 15.7697 3 16.9999\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 14C13.6569 14 15 12.6569 15 11C15 9.34315 13.6569 8 12 8C10.3431 8 9 9.34315 9 11C9 12.6569 10.3431 14 12 14Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 10.2361C18.6137 9.68679 19 8.8885 19 8C19 6.34315 17.6569 5 16 5C15.2316 5 14.5308 5.28885 14 5.76389\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6 10.2361C5.38625 9.68679 5 8.8885 5 8C5 6.34315 6.34315 5 8 5C8.76835 5 9.46924 5.28885 10 5.76389\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Customers</div></a><a href=\"/about\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"25\" height=\"26\" viewBox=\"0 0 25 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M2 13.0007C2 13.3515 2.08586 13.7023 2.25186 14.0039L5.26274 19.6106C5.57184 20.1829 6.04121 20.6507 6.62507 20.8599C7.77562 21.2722 8.96623 20.743 9.53291 19.6844L10.2599 18.3304L7.3921 13.0007L10.4201 7.35714L11.1471 6.00317C11.3646 5.59698 11.6566 5.26464 12 5H11.6852H7.32914C6.51059 5 5.75501 5.46773 5.3486 6.23088L2.25186 11.9976C2.08586 12.2991 2 12.6499 2 13.0007Z\" stroke=\"currentColor\" stroke-width=\"2\"/>\n<path d=\"M22 12.9976C22 12.6468 21.9141 12.2959 21.7481 11.9943L18.6972 6.31259C18.1305 5.25998 16.9399 4.73059 15.7894 5.13686C15.2055 5.34615 14.7361 5.81398 14.427 6.38646L13.7401 7.66068L16.6079 12.9976L13.5799 18.6424L12.8529 19.9966C12.6354 20.3967 12.3434 20.7353 12 21H12.3148H16.6709C17.4894 21 18.245 20.5322 18.6514 19.7689L21.7481 14.001C21.9141 13.6994 22 13.3485 22 12.9976Z\" stroke=\"currentColor\" stroke-width=\"2\"/>\n</svg></div><div>Company</div></a><a href=\"/careers\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M20 8H4C3.44772 8 3 8.44772 3 9V19C3 19.5523 3.44772 20 4 20H20C20.5523 20 21 19.5523 21 19V9C21 8.44772 20.5523 8 20 8Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Careers</div></a><a href=\"/security\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.2902 20.8968L12.6452 21.8317L12.6452 21.8317L12.2902 20.8968ZM11.7098 20.8968L11.3548 21.8317L11.3548 21.8317L11.7098 20.8968ZM5 4H19V2H5V4ZM19 4V10.1649H21V4H19ZM5 10.1649V4H3V10.1649H5ZM19 10.1649C19 16.8586 13.3228 19.435 11.9351 19.962L12.6452 21.8317C14.1289 21.2682 21 18.2341 21 10.1649H19ZM3 10.1649C3 18.2341 9.87108 21.2682 11.3548 21.8317L12.0649 19.962C10.6772 19.435 5 16.8586 5 10.1649H3ZM11.9351 19.962C11.95 19.9564 11.9725 19.951 12 19.951C12.0275 19.951 12.05 19.9564 12.0649 19.962L11.3548 21.8317C11.7737 21.9908 12.2263 21.9908 12.6452 21.8317L11.9351 19.962ZM19 4V4H21C21 2.89543 20.1046 2 19 2V4ZM5 2C3.89543 2 3 2.89543 3 4H5V4V2Z\" fill=\"currentColor\"/>\n<path d=\"M15.7071 9.70711C16.0976 9.31658 16.0976 8.68342 15.7071 8.29289C15.3166 7.90237 14.6834 7.90237 14.2929 8.29289L15.7071 9.70711ZM11 13L10.2929 13.7071C10.6834 14.0976 11.3166 14.0976 11.7071 13.7071L11 13ZM9.70711 10.2929C9.31658 9.90237 8.68342 9.90237 8.29289 10.2929C7.90237 10.6834 7.90237 11.3166 8.29289 11.7071L9.70711 10.2929ZM14.2929 8.29289L10.2929 12.2929L11.7071 13.7071L15.7071 9.70711L14.2929 8.29289ZM11.7071 12.2929L9.70711 10.2929L8.29289 11.7071L10.2929 13.7071L11.7071 12.2929Z\" fill=\"currentColor\"/>\n</svg></div><div>Security</div></a><a href=\"/support-plans\" class=\"nav-dropdown-link nav-dropdown-link--last w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.68497 19.605L8.2207 18.7606C7.96683 18.5996 7.65397 18.5613 7.36874 18.6563L7.68497 19.605ZM3.5 21L2.55132 20.6838C2.43154 21.0431 2.52506 21.4393 2.79289 21.7071C3.06073 21.9749 3.45689 22.0685 3.81623 21.9487L3.5 21ZM4.89499 16.815L5.84367 17.1313C5.93875 16.846 5.90045 16.5332 5.73938 16.2793L4.89499 16.815ZM12.5 22C18.0228 22 22.5 17.5228 22.5 12H20.5C20.5 16.4183 16.9183 20 12.5 20V22ZM7.14923 20.4494C8.69708 21.4315 10.5337 22 12.5 22V20C10.9242 20 9.45764 19.5454 8.2207 18.7606L7.14923 20.4494ZM7.36874 18.6563L3.18377 20.0513L3.81623 21.9487L8.0012 20.5537L7.36874 18.6563ZM4.44868 21.3162L5.84367 17.1313L3.94631 16.4988L2.55132 20.6838L4.44868 21.3162ZM2.5 12C2.5 13.9663 3.06855 15.8029 4.0506 17.3508L5.73938 16.2793C4.95458 15.0424 4.5 13.5758 4.5 12H2.5ZM12.5 2C6.97715 2 2.5 6.47715 2.5 12H4.5C4.5 7.58172 8.08172 4 12.5 4V2ZM22.5 12C22.5 6.47715 18.0228 2 12.5 2V4C16.9183 4 20.5 7.58172 20.5 12H22.5Z\" fill=\"currentColor\"/>\n</svg></div><div>Support Plans</div></a><a href=\"/pricing\" class=\"nav-dropdown-link nav-dropdown-link--mobile-only w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.9811 19.9661L11.274 20.6732H11.274L11.9811 19.9661ZM4.53411 12.5191L3.827 13.2263H3.827L4.53411 12.5191ZM13.0194 4.03386L13.7265 3.32676V3.32676L13.0194 4.03386ZM20.4664 11.4808L21.1735 10.7737V10.7737L20.4664 11.4808ZM20.4664 12.8951L19.7593 12.188L20.4664 12.8951ZM13.3953 19.9661L14.1024 20.6732L13.3953 19.9661ZM4.24532 11.7215L5.24122 11.812H5.24122L4.24532 11.7215ZM4.83458 5.23969L5.83047 5.33023L4.83458 5.23969ZM5.73993 4.33433L5.83047 5.33023H5.83047L5.73993 4.33433ZM12.2217 3.74508L12.3123 4.74097L12.2217 3.74508ZM12.6882 19.259L5.24122 11.812L3.827 13.2263L11.274 20.6732L12.6882 19.259ZM12.3123 4.74097L19.7593 12.188L21.1735 10.7737L13.7265 3.32676L12.3123 4.74097ZM19.7593 12.188L12.6882 19.259L14.1024 20.6732L21.1735 13.6022L19.7593 12.188ZM5.24122 11.812L5.83047 5.33023L3.83868 5.14916L3.24943 11.631L5.24122 11.812ZM5.83047 5.33023L12.3123 4.74097L12.1312 2.74919L5.6494 3.33844L5.83047 5.33023ZM5.83047 5.33023L5.83047 5.33023L5.6494 3.33844C4.6879 3.42585 3.92609 4.18765 3.83868 5.14916L5.83047 5.33023ZM19.7593 12.188L19.7593 12.188L21.1735 13.6022C21.9545 12.8211 21.9545 11.5548 21.1735 10.7737L19.7593 12.188ZM13.7265 3.32676C13.3068 2.90705 12.7223 2.69545 12.1312 2.74919L12.3123 4.74097H12.3123L13.7265 3.32676ZM5.24122 11.812H5.24122L3.24943 11.631C3.19569 12.2221 3.40729 12.8065 3.827 13.2263L5.24122 11.812ZM11.274 20.6732C12.055 21.4543 13.3214 21.4543 14.1024 20.6732L12.6882 19.259L12.6882 19.259L11.274 20.6732Z\" fill=\"currentColor\"/>\n<path d=\"M8.79875 8.29875C9.18928 7.90823 9.82244 7.90823 10.213 8.29875C10.6035 8.68928 10.6035 9.32244 10.213 9.71297C9.82244 10.1035 9.18928 10.1035 8.79875 9.71297C8.40823 9.32244 8.40823 8.68928 8.79875 8.29875Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Pricing</div></a></div></div></nav></div></div><div class=\"nav-menu-item\"><a role=\"button\" href=\"/pricing\" class=\"nav-link\">Pricing</a></div><a id=\"sign-in\" role=\"button\" href=\"https://workos.com/signin\" class=\"nav-cta w-inline-block\"><div>Sign in</div></a><a id=\"dashboard\" role=\"button\" href=\"https://dashboard.workos.com\" class=\"button cc-dashboard w-inline-block\"><div>Dashboard</div><div class=\"svg-embed w-embed\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6 12L10 8L6 4\" stroke=\"currentColor\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></a></div><div data-w-id=\"80f81b27-826c-538b-6c5f-1bc11ce6570d\" class=\"mobile-nav-button\"><div class=\"icon-embed w-embed\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4.16667 14.1665H15.8333\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M4.16667 10H15.8333\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M4.16667 5.8335H15.8333\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div><div role=\"menu\" class=\"nav-context-menu\"><div id=\"copy-logo\" role=\"menuitem\" class=\"context-menu-item\"><div class=\"icon-embed cc-context-menu w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.19995 14.4002C4.19995 15.3943 5.00584 16.2002 5.99995 16.2002H7.79995V15.0002H5.99995C5.66858 15.0002 5.39995 14.7316 5.39995 14.4002V6.0002C5.39995 5.66883 5.66858 5.4002 5.99995 5.4002H14.4C14.7313 5.4002 15 5.66883 15 6.0002V7.80015H9.59995C8.60585 7.80015 7.79995 8.60603 7.79995 9.60015V18.0001C7.79995 18.9942 8.60585 19.8001 9.59995 19.8001H18C18.994 19.8001 19.8 18.9942 19.8 18.0001V9.60015C19.8 8.60603 18.994 7.80015 18 7.80015H16.2V6.0002C16.2 5.00608 15.394 4.2002 14.4 4.2002H5.99995C5.00584 4.2002 4.19995 5.00608 4.19995 6.0002V14.4002ZM8.99995 9.60015C8.99995 9.26878 9.26858 9.00015 9.59995 9.00015H18C18.3313 9.00015 18.6 9.26878 18.6 9.60015V18.0001C18.6 18.3316 18.3313 18.6001 18 18.6001H9.59995C9.26858 18.6001 8.99995 18.3316 8.99995 18.0001V9.60015Z\" fill=\"currentColor\"/>\n</svg></div><div class=\"context-menu-item-text\">Copy logo as SVG</div></div><div id=\"copy-brandmark\" role=\"menuitem\" class=\"context-menu-item\"><div class=\"icon-embed cc-context-menu w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M15.8406 20C16.6806 20 17.4646 19.56 17.8966 18.8328L21.2574 13.2353C21.7134 12.4753 21.7134 11.5241 21.2574 10.7641L18.0486 5.42258C17.7366 4.90258 17.2886 4.46339 16.7286 4.23139C15.3526 3.6554 13.8719 4.19939 13.1679 5.37458L12.5119 6.46177C12.4319 6.58977 12.4319 6.74977 12.5119 6.86976L15.4646 11.7953C15.5366 11.9233 15.5366 12.0833 15.4646 12.2033L11.3919 18.976C11.1519 19.376 10.8319 19.72 10.4639 19.9912H15.8246L15.8406 20Z\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\"/>\n<path d=\"M8.15925 4.00022C7.31926 4.00022 6.53447 4.44021 6.10247 5.16741L2.74251 10.7649C2.28651 11.5249 2.28651 12.4761 2.74251 13.2361L5.95127 18.5777C6.26327 19.0977 6.71127 19.5369 7.27126 19.7689C8.64725 20.3448 10.128 19.8009 10.832 18.6257L11.488 17.5385C11.568 17.4105 11.568 17.2505 11.488 17.1305L8.53525 12.2049C8.46325 12.0769 8.46325 11.9169 8.53525 11.7969L12.608 5.02421C12.832 4.61621 13.152 4.27222 13.52 4.00022H8.15925Z\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\"/>\n</svg></div><div class=\"context-menu-item-text\">Copy brandmark as SVG</div></div><div class=\"context-menu-divider\"></div><a role=\"menuitem\" href=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6908e076c85d9ad71e6c6b6b_WorkOS%20Logos.zip\" target=\"_blank\" class=\"context-menu-item context-menu-item--last w-inline-block\"><div class=\"icon-embed cc-context-menu w-embed\"><svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.27344 11.4766C5.36133 11.5645 5.47852 11.5938 5.625 11.5938C5.74219 11.5938 5.85938 11.5645 5.94727 11.4766L10.166 7.25781C10.3418 7.08203 10.3418 6.75977 10.166 6.58398C9.99023 6.4082 9.66797 6.4082 9.49219 6.58398L6.09375 10.0117V1.28125C6.09375 1.04688 5.85938 0.8125 5.625 0.8125C5.36133 0.8125 5.15625 1.04688 5.15625 1.28125V10.0117L1.72852 6.58398C1.55273 6.4082 1.23047 6.4082 1.05469 6.58398C0.878906 6.75977 0.878906 7.08203 1.05469 7.25781L5.27344 11.4766ZM10.7812 13H0.46875C0.205078 13 0 13.2344 0 13.4688C0 13.7324 0.205078 13.9375 0.46875 13.9375H10.7812C11.0156 13.9375 11.25 13.7324 11.25 13.4688C11.25 13.2344 11.0156 13 10.7812 13Z\" fill=\"currentColor\"/>\n</svg></div><div>Download brand kit</div></a></div></div></div></div><div class=\"mobile-nav-menu\"><div class=\"mobile-nav-menu-inner tile-shadow\"><div data-w-id=\"80f81b27-826c-538b-6c5f-1bc11ce65711\" class=\"mobile-nav-menu-close\"><div class=\"icon-embed w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18 18L6 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 6L5.99994 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div><div class=\"mobile-nav-menu-section\"><div class=\"allcaps-label allcaps-label--mobile-nav\">Products</div><div class=\"nav-dropdown-products\"><a href=\"/user-management\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/656545520bd5f04e20a3a6a7_um.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">User Management</div><div class=\"text-color-light-2\">Complete auth &amp; user management platform</div></div></a><a href=\"/single-sign-on\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e1062ae62bc2260203e96f_icon-sso.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Enterprise SSO</div><div class=\"text-color-light-2\">Unified SSO integration for any identity provider</div></div></a><a href=\"/radar\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/673b4ed27842047837086d7a_icon-radar-nav.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Radar</div><div class=\"text-color-light-2\">Real-time protection against bots, fraud, and abuse<!--$--><br/><!--/$--></div></div></a><a href=\"https://authkit.com\" target=\"_blank\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/65654341bfdb733f6715f944_authkit.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">AuthKit</div><div class=\"text-color-light-2\">Customizable UI for all authentication types</div></div></a><a href=\"/directory-sync\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e10629cdacaa53e05c2a95_icon-directory-sync.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Directory Sync</div><div class=\"text-color-light-2\">User lifecycle management from corporate directories</div></div></a><a href=\"/rbac\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/68752d3fceb13184116f219f_icon-rbac.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Role-Based Access Control</div><div class=\"text-color-light-2\">Powerful and flexible permissions for your users</div></div></a><a href=\"/mcp\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/68c8802359b1c7df06378d44_icon-mcp-auth.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">MCP Auth</div><div class=\"text-color-light-2\">Secure auth for MCP servers</div></div></a><a href=\"/admin-portal\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e1062a21fa47cd37a717f5_icon-admin-portal.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Admin Portal</div><div class=\"text-color-light-2\">Self-serve onboarding for corporate IT admins</div></div></a><a href=\"/vault\" class=\"nav-dropdown-link nav-dropdown-link--features w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/67daf11719d8c412f176a3d4_icon-vault.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Vault</div><div class=\"text-color-light-2\">EKM for encrypting and optionally storing objects</div></div></a><a href=\"/multi-factor-authentication\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6a3017a8e767a6e6a2078ef1_icon-mfa.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Multi-Factor Authentication</div><div class=\"text-color-light-2\">Advanced auth methods</div></div></a><a href=\"/audit-logs\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/63e1062a39c3d330594d5a66_icon-audit-logs.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Audit Logs</div><div class=\"text-color-light-2\">Event logging, exporting, and streaming</div></div></a><a href=\"https://workos.com/pipes\" class=\"nav-dropdown-link nav-dropdown-link--features cc-last w-inline-block\"><img src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/6a3018b0e0c172dcc18705c9_icon-pipes.png\" loading=\"lazy\" width=\"40\" height=\"41\" alt=\"\" class=\"nav-product-icon\"/><div><div class=\"nav-dropdown-features-title\">Pipes</div><div class=\"text-color-light-2\">Integrations for your apps &amp; agents</div></div></a></div></div><div class=\"mobile-nav-menu-divider\"></div><div class=\"mobile-nav-menu-section\"><div class=\"allcaps-label allcaps-label--mobile-nav\">Developers</div><div class=\"nav-links-wrap\"><a href=\"https://workos.com/docs\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M8.11872 6.88128L7.5 6.26256L6.26256 7.5L6.88128 8.11872L8.11872 6.88128ZM9.5 9.5L10.1187 10.1187L10.7374 9.5L10.1187 8.88128L9.5 9.5ZM6.88128 10.8813L6.26256 11.5L7.5 12.7374L8.11872 12.1187L6.88128 10.8813ZM11.5 11.125H10.625V12.875H11.5V11.125ZM13.5 12.875H14.375V11.125H13.5V12.875ZM20.125 7V21H21.875V7H20.125ZM20 21.125H10V22.875H20V21.125ZM17 6.875H20V5.125H17V6.875ZM9.875 21V18H8.125V21H9.875ZM10 21.125C9.93096 21.125 9.875 21.069 9.875 21H8.125C8.125 22.0355 8.96447 22.875 10 22.875V21.125ZM20.125 21C20.125 21.069 20.069 21.125 20 21.125V22.875C21.0355 22.875 21.875 22.0355 21.875 21H20.125ZM21.875 7C21.875 5.96447 21.0355 5.125 20 5.125V6.875C20.069 6.875 20.125 6.93096 20.125 7H21.875ZM5 2.875H16V1.125H5V2.875ZM16.125 3V17H17.875V3H16.125ZM16 17.125H5V18.875H16V17.125ZM4.875 17V3H3.125V17H4.875ZM5 17.125C4.93096 17.125 4.875 17.069 4.875 17H3.125C3.125 18.0355 3.96447 18.875 5 18.875V17.125ZM16.125 17C16.125 17.069 16.069 17.125 16 17.125V18.875C17.0355 18.875 17.875 18.0355 17.875 17H16.125ZM16 2.875C16.069 2.875 16.125 2.93096 16.125 3H17.875C17.875 1.96447 17.0355 1.125 16 1.125V2.875ZM5 1.125C3.96447 1.125 3.125 1.96447 3.125 3H4.875C4.875 2.93096 4.93096 2.875 5 2.875V1.125ZM6.88128 8.11872L8.88128 10.1187L10.1187 8.88128L8.11872 6.88128L6.88128 8.11872ZM8.88128 8.88128L6.88128 10.8813L8.11872 12.1187L10.1187 10.1187L8.88128 8.88128ZM11.5 12.875H13.5V11.125H11.5V12.875Z\" fill=\"currentColor\"/>\n</svg></div><div>Documentation</div></a><a href=\"/changelog\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6 5C13.1797 5 19 10.8203 19 18M6 11C9.86599 11 13 14.134 13 18M7 18C7 18.5523 6.55228 19 6 19C5.44772 19 5 18.5523 5 18C5 17.4477 5.44772 17 6 17C6.55228 17 7 17.4477 7 18Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Changelog</div></a><a href=\"https://status.workos.com\" target=\"_blank\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M3 12H21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 21C13.6569 21 15 16.9706 15 12C15 7.02944 13.6569 3 12 3C10.3431 3 9 7.02944 9 12C9 16.9706 10.3431 21 12 21Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>API Status</div><div class=\"nav-dropdown-link-external-icon w-embed\"><svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M8.5 16L16.5 8\" stroke=\"#8F96BD\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M10.5 8H16.5V14\" stroke=\"#8F96BD\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></a></div></div><div class=\"mobile-nav-menu-divider\"></div><div class=\"mobile-nav-menu-section\"><div class=\"allcaps-label allcaps-label--mobile-nav\">Resources</div><div class=\"nav-links-wrap\"><a href=\"/blog\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4 20H20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8 20.0001V21.0001C8.26522 21.0001 8.51957 20.8947 8.70711 20.7072L8 20.0001ZM4 20.0001H3C3 20.5524 3.44772 21.0001 4 21.0001V20.0001ZM4 16.0001L3.29289 15.293C3.10536 15.4805 3 15.7349 3 16.0001H4ZM15.2929 4.7072L16 5.41431L16 5.41431L15.2929 4.7072ZM16.7071 4.7072L16 5.41431L16 5.41431L16.7071 4.7072ZM19.2929 7.29299L20 6.58588V6.58588L19.2929 7.29299ZM19.2929 8.7072L18.5858 8.00009L19.2929 8.7072ZM8 19.0001H4V21.0001H8V19.0001ZM5 20.0001V16.0001H3V20.0001H5ZM4.70711 16.7072L16 5.41431L14.5858 4.00009L3.29289 15.293L4.70711 16.7072ZM16 5.41431L18.5858 8.00009L20 6.58588L17.4142 4.00009L16 5.41431ZM18.5858 8.00009L7.29289 19.293L8.70711 20.7072L20 9.41431L18.5858 8.00009ZM18.5858 8.00009V8.00009L20 9.41431C20.781 8.63326 20.781 7.36693 20 6.58588L18.5858 8.00009ZM16 5.41431H16L17.4142 4.00009C16.6332 3.21904 15.3668 3.21904 14.5858 4.00009L16 5.41431Z\" fill=\"currentColor\"/>\n<path d=\"M12 8L16 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Blog</div></a><a href=\"/guides\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.0513 20.8162C11.226 21.3402 11.7923 21.6233 12.3162 21.4487C12.8402 21.274 13.1233 20.7077 12.9487 20.1838L11.0513 20.8162ZM12.9487 20.1838L12.7464 19.577L10.8491 20.2094L11.0513 20.8162L12.9487 20.1838ZM8.47734 16.5H4V18.5H8.47734V16.5ZM4 16.5V6H2V16.5H4ZM4 6H9V4H4V6ZM11 8V19H13V8H11ZM9 6C10.1046 6 11 6.89543 11 8H13C13 5.79086 11.2091 4 9 4V6ZM4 6L4 6V4C2.89543 4 2 4.89543 2 6H4ZM4 16.5V16.5H2C2 17.6046 2.89543 18.5 4 18.5V16.5ZM12.7464 19.577C12.1339 17.7394 10.4143 16.5 8.47734 16.5V18.5C9.55342 18.5 10.5088 19.1886 10.8491 20.2094L12.7464 19.577Z\" fill=\"currentColor\"/>\n<path d=\"M12.9487 20.8162C12.774 21.3402 12.2077 21.6233 11.6838 21.4487C11.1598 21.274 10.8767 20.7077 11.0513 20.1838L12.9487 20.8162ZM11.0513 20.1838L11.2536 19.577L13.1509 20.2094L12.9487 20.8162L11.0513 20.1838ZM15.5227 16.5H20V18.5H15.5227V16.5ZM20 16.5V6H22V16.5H20ZM20 6H15V4H20V6ZM13 8V19H11V8H13ZM15 6C13.8954 6 13 6.89543 13 8H11C11 5.79086 12.7909 4 15 4V6ZM20 6L20 6V4C21.1046 4 22 4.89543 22 6H20ZM20 16.5V16.5H22C22 17.6046 21.1046 18.5 20 18.5V16.5ZM11.2536 19.577C11.8661 17.7394 13.5857 16.5 15.5227 16.5V18.5C14.4466 18.5 13.4912 19.1886 13.1509 20.2094L11.2536 19.577Z\" fill=\"currentColor\"/>\n</svg></div><div>Guides</div></a><a href=\"/podcast\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M21 13H22C22 12.4477 21.5523 12 21 12V13ZM21 12H17V14H21V12ZM15 14V19H17V14H15ZM17 21H20V19H17V21ZM22 19V13H20V19H22ZM20 21C21.1046 21 22 20.1046 22 19H20V21ZM15 19C15 20.1046 15.8954 21 17 21V19H15ZM17 12C15.8954 12 15 12.8954 15 14H17V12Z\" fill=\"currentColor\"/>\n<path d=\"M3 13V12C2.44772 12 2 12.4477 2 13H3ZM3 14H7V12H3V14ZM7 14V19H9V14H7ZM7 19H4V21H7V19ZM4 19V13H2V19H4ZM4 19L4 19H2C2 20.1046 2.89543 21 4 21V19ZM7 19V21C8.10457 21 9 20.1046 9 19H7ZM7 14H9C9 12.8954 8.10457 12 7 12V14Z\" fill=\"currentColor\"/>\n<path d=\"M3 13C3 8.02944 7.02944 4 12 4C16.9706 4 21 8.02944 21 13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Podcast</div></a><a href=\"/customers\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7 20C7 18.3431 9.23858 17 12 17C14.7614 17 17 18.3431 17 20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 14.2495C19.7659 14.7124 21 15.7697 21 16.9999\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6 14.2495C4.2341 14.7124 3 15.7697 3 16.9999\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 14C13.6569 14 15 12.6569 15 11C15 9.34315 13.6569 8 12 8C10.3431 8 9 9.34315 9 11C9 12.6569 10.3431 14 12 14Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 10.2361C18.6137 9.68679 19 8.8885 19 8C19 6.34315 17.6569 5 16 5C15.2316 5 14.5308 5.28885 14 5.76389\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6 10.2361C5.38625 9.68679 5 8.8885 5 8C5 6.34315 6.34315 5 8 5C8.76835 5 9.46924 5.28885 10 5.76389\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Customers</div></a><a href=\"/about\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"25\" height=\"26\" viewBox=\"0 0 25 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M2 13.0007C2 13.3515 2.08586 13.7023 2.25186 14.0039L5.26274 19.6106C5.57184 20.1829 6.04121 20.6507 6.62507 20.8599C7.77562 21.2722 8.96623 20.743 9.53291 19.6844L10.2599 18.3304L7.3921 13.0007L10.4201 7.35714L11.1471 6.00317C11.3646 5.59698 11.6566 5.26464 12 5H11.6852H7.32914C6.51059 5 5.75501 5.46773 5.3486 6.23088L2.25186 11.9976C2.08586 12.2991 2 12.6499 2 13.0007Z\" stroke=\"currentColor\" stroke-width=\"2\"/>\n<path d=\"M22 12.9976C22 12.6468 21.9141 12.2959 21.7481 11.9943L18.6972 6.31259C18.1305 5.25998 16.9399 4.73059 15.7894 5.13686C15.2055 5.34615 14.7361 5.81398 14.427 6.38646L13.7401 7.66068L16.6079 12.9976L13.5799 18.6424L12.8529 19.9966C12.6354 20.3967 12.3434 20.7353 12 21H12.3148H16.6709C17.4894 21 18.245 20.5322 18.6514 19.7689L21.7481 14.001C21.9141 13.6994 22 13.3485 22 12.9976Z\" stroke=\"currentColor\" stroke-width=\"2\"/>\n</svg></div><div>Company</div></a><a href=\"/careers\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M20 8H4C3.44772 8 3 8.44772 3 9V19C3 19.5523 3.44772 20 4 20H20C20.5523 20 21 19.5523 21 19V9C21 8.44772 20.5523 8 20 8Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Careers</div></a><a href=\"/security\" class=\"nav-dropdown-link w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.2902 20.8968L12.6452 21.8317L12.6452 21.8317L12.2902 20.8968ZM11.7098 20.8968L11.3548 21.8317L11.3548 21.8317L11.7098 20.8968ZM5 4H19V2H5V4ZM19 4V10.1649H21V4H19ZM5 10.1649V4H3V10.1649H5ZM19 10.1649C19 16.8586 13.3228 19.435 11.9351 19.962L12.6452 21.8317C14.1289 21.2682 21 18.2341 21 10.1649H19ZM3 10.1649C3 18.2341 9.87108 21.2682 11.3548 21.8317L12.0649 19.962C10.6772 19.435 5 16.8586 5 10.1649H3ZM11.9351 19.962C11.95 19.9564 11.9725 19.951 12 19.951C12.0275 19.951 12.05 19.9564 12.0649 19.962L11.3548 21.8317C11.7737 21.9908 12.2263 21.9908 12.6452 21.8317L11.9351 19.962ZM19 4V4H21C21 2.89543 20.1046 2 19 2V4ZM5 2C3.89543 2 3 2.89543 3 4H5V4V2Z\" fill=\"currentColor\"/>\n<path d=\"M15.7071 9.70711C16.0976 9.31658 16.0976 8.68342 15.7071 8.29289C15.3166 7.90237 14.6834 7.90237 14.2929 8.29289L15.7071 9.70711ZM11 13L10.2929 13.7071C10.6834 14.0976 11.3166 14.0976 11.7071 13.7071L11 13ZM9.70711 10.2929C9.31658 9.90237 8.68342 9.90237 8.29289 10.2929C7.90237 10.6834 7.90237 11.3166 8.29289 11.7071L9.70711 10.2929ZM14.2929 8.29289L10.2929 12.2929L11.7071 13.7071L15.7071 9.70711L14.2929 8.29289ZM11.7071 12.2929L9.70711 10.2929L8.29289 11.7071L10.2929 13.7071L11.7071 12.2929Z\" fill=\"currentColor\"/>\n</svg></div><div>Security</div></a><a href=\"/support-plans\" class=\"nav-dropdown-link nav-dropdown-link--last w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.68497 19.605L8.2207 18.7606C7.96683 18.5996 7.65397 18.5613 7.36874 18.6563L7.68497 19.605ZM3.5 21L2.55132 20.6838C2.43154 21.0431 2.52506 21.4393 2.79289 21.7071C3.06073 21.9749 3.45689 22.0685 3.81623 21.9487L3.5 21ZM4.89499 16.815L5.84367 17.1313C5.93875 16.846 5.90045 16.5332 5.73938 16.2793L4.89499 16.815ZM12.5 22C18.0228 22 22.5 17.5228 22.5 12H20.5C20.5 16.4183 16.9183 20 12.5 20V22ZM7.14923 20.4494C8.69708 21.4315 10.5337 22 12.5 22V20C10.9242 20 9.45764 19.5454 8.2207 18.7606L7.14923 20.4494ZM7.36874 18.6563L3.18377 20.0513L3.81623 21.9487L8.0012 20.5537L7.36874 18.6563ZM4.44868 21.3162L5.84367 17.1313L3.94631 16.4988L2.55132 20.6838L4.44868 21.3162ZM2.5 12C2.5 13.9663 3.06855 15.8029 4.0506 17.3508L5.73938 16.2793C4.95458 15.0424 4.5 13.5758 4.5 12H2.5ZM12.5 2C6.97715 2 2.5 6.47715 2.5 12H4.5C4.5 7.58172 8.08172 4 12.5 4V2ZM22.5 12C22.5 6.47715 18.0228 2 12.5 2V4C16.9183 4 20.5 7.58172 20.5 12H22.5Z\" fill=\"currentColor\"/>\n</svg></div><div>Support Plans</div></a><a href=\"/pricing\" class=\"nav-dropdown-link nav-dropdown-link--mobile-only w-inline-block\"><div class=\"nav-dropdown-link-icon w-embed\"><svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.9811 19.9661L11.274 20.6732H11.274L11.9811 19.9661ZM4.53411 12.5191L3.827 13.2263H3.827L4.53411 12.5191ZM13.0194 4.03386L13.7265 3.32676V3.32676L13.0194 4.03386ZM20.4664 11.4808L21.1735 10.7737V10.7737L20.4664 11.4808ZM20.4664 12.8951L19.7593 12.188L20.4664 12.8951ZM13.3953 19.9661L14.1024 20.6732L13.3953 19.9661ZM4.24532 11.7215L5.24122 11.812H5.24122L4.24532 11.7215ZM4.83458 5.23969L5.83047 5.33023L4.83458 5.23969ZM5.73993 4.33433L5.83047 5.33023H5.83047L5.73993 4.33433ZM12.2217 3.74508L12.3123 4.74097L12.2217 3.74508ZM12.6882 19.259L5.24122 11.812L3.827 13.2263L11.274 20.6732L12.6882 19.259ZM12.3123 4.74097L19.7593 12.188L21.1735 10.7737L13.7265 3.32676L12.3123 4.74097ZM19.7593 12.188L12.6882 19.259L14.1024 20.6732L21.1735 13.6022L19.7593 12.188ZM5.24122 11.812L5.83047 5.33023L3.83868 5.14916L3.24943 11.631L5.24122 11.812ZM5.83047 5.33023L12.3123 4.74097L12.1312 2.74919L5.6494 3.33844L5.83047 5.33023ZM5.83047 5.33023L5.83047 5.33023L5.6494 3.33844C4.6879 3.42585 3.92609 4.18765 3.83868 5.14916L5.83047 5.33023ZM19.7593 12.188L19.7593 12.188L21.1735 13.6022C21.9545 12.8211 21.9545 11.5548 21.1735 10.7737L19.7593 12.188ZM13.7265 3.32676C13.3068 2.90705 12.7223 2.69545 12.1312 2.74919L12.3123 4.74097H12.3123L13.7265 3.32676ZM5.24122 11.812H5.24122L3.24943 11.631C3.19569 12.2221 3.40729 12.8065 3.827 13.2263L5.24122 11.812ZM11.274 20.6732C12.055 21.4543 13.3214 21.4543 14.1024 20.6732L12.6882 19.259L12.6882 19.259L11.274 20.6732Z\" fill=\"currentColor\"/>\n<path d=\"M8.79875 8.29875C9.18928 7.90823 9.82244 7.90823 10.213 8.29875C10.6035 8.68928 10.6035 9.32244 10.213 9.71297C9.82244 10.1035 9.18928 10.1035 8.79875 9.71297C8.40823 9.32244 8.40823 8.68928 8.79875 8.29875Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div>Pricing</div></a></div></div><div class=\"mobile-nav-cta-wrap\"><a role=\"button\" href=\"https://workos.com/signin\" class=\"button button--mobile-nav w-inline-block\"><div>Sign in</div></a><a role=\"button\" href=\"https://workos.com/signup\" class=\"nav-cta w-inline-block\"><div>Sign up</div></a></div></div></div></nav><main class=\"main\"><section class=\"hero cc-article\"><div class=\"page-padding\"><div class=\"container\"><div class=\"article-wrapper\"><div class=\"post-toc-wrap\"><div class=\"post-toc-inner\"><div class=\"toc-label\">In this article</div></div></div><div class=\"article-container\"><div class=\"article-header\"><div class=\"text-color-light-2 u-mb-16 hidden-on-mobile w-condition-invisible\">June 18, 2026</div><div class=\"text-color-light-2 u-mb-16 text-small mobile-only\">June 18, 2026</div><h1 class=\"section-heading cc-article\">The biggest MCP spec update ships July 28: What changes for AI agent authentication</h1><p class=\"article-summary\">The MCP 2026-07-28 release candidate rewrites the protocol&#x27;s foundation. Here&#x27;s what&#x27;s changing, what&#x27;s breaking, and what your team needs to do before the final spec lands.</p><p class=\"article-summary w-condition-invisible w-dyn-bind-empty\"></p><div class=\"blog-post-info\"><div class=\"blog-author\"><img height=\"24\" loading=\"eager\" width=\"24\" src=\"https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria.webp\" alt=\"\" sizes=\"100vw\" srcset=\"https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria-p-500.webp 500w, https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria.webp 512w\" class=\"blog-avatar cc-margin cc-small\"/><div>Maria Paktiti</div></div><div class=\"multiple-authors-wrap w-condition-invisible\"><div class=\"blog-author\"><div class=\"w-embed\"><div style=\"position:absolute; width:100%; height:100%;\" data-tippy-content=\"Maria Paktiti\"></div></div><img height=\"24\" loading=\"eager\" width=\"24\" src=\"https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria.webp\" alt=\"\" sizes=\"100vw\" srcset=\"https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria-p-500.webp 500w, https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria.webp 512w\" class=\"blog-avatar cc-small\"/></div><div class=\"blog-author w-condition-invisible\"><div class=\"w-embed\"><div style=\"position:absolute; width:100%; height:100%;\" data-tippy-content=\"\"></div></div><img height=\"24\" loading=\"eager\" width=\"24\" src=\"\" alt=\"\" class=\"blog-avatar cc-small w-dyn-bind-empty\"/></div><div class=\"blog-author w-condition-invisible\"><div class=\"w-embed\"><div style=\"position:absolute; width:100%; height:100%;\" data-tippy-content=\"\"></div></div><img height=\"24\" loading=\"eager\" width=\"24\" src=\"\" alt=\"\" class=\"blog-avatar cc-small w-dyn-bind-empty\"/></div><div class=\"blog-author w-condition-invisible\"><div class=\"w-embed\"><div style=\"position:absolute; width:100%; height:100%;\" data-tippy-content=\"\"></div></div><img height=\"24\" loading=\"eager\" width=\"24\" src=\"\" alt=\"\" class=\"blog-avatar cc-small w-dyn-bind-empty\"/></div><div class=\"blog-author w-condition-invisible\"><div class=\"w-embed\"><div style=\"position:absolute; width:100%; height:100%;\" data-tippy-content=\"\"></div></div><img height=\"24\" loading=\"eager\" width=\"24\" src=\"\" alt=\"\" class=\"blog-avatar cc-small w-dyn-bind-empty\"/></div></div><div class=\"text-color-light-2 hidden-on-mobile\">June 18, 2026</div></div></div><div class=\"article-ai-wrap\"><div class=\"allcaps-label article-ai\">Explore with AI</div><div class=\"article-ai-links\"><a id=\"summarize-chatgpt\" href=\"#\" target=\"_blank\" class=\"article-ai-item w-inline-block\"><div class=\"svg-embed w-embed\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M13.9258 6.13819C14.0936 5.63311 14.1516 5.09806 14.096 4.56877C14.0404 4.03949 13.8725 3.52816 13.6035 3.06894C13.2048 2.37483 12.5959 1.82528 11.8646 1.49954C11.1334 1.17379 10.3176 1.08866 9.53491 1.25644C9.09023 0.761789 8.52321 0.392857 7.89082 0.186695C7.25843 -0.019467 6.58292 -0.0556004 5.93215 0.081924C5.28137 0.219448 4.67824 0.525789 4.18333 0.970177C3.68841 1.41457 3.31914 1.98136 3.1126 2.61362C2.59114 2.72056 2.09851 2.93755 1.66763 3.25012C1.23675 3.56269 0.877554 3.96362 0.614036 4.42613C0.210933 5.11908 0.038649 5.92227 0.122093 6.71959C0.205536 7.5169 0.540383 8.26702 1.07822 8.8615C0.909889 9.36633 0.851301 9.90129 0.906379 10.4306C0.961457 10.9599 1.12893 11.4713 1.3976 11.9307C1.79687 12.6251 2.4063 13.1747 3.13804 13.5005C3.86979 13.8262 4.68606 13.9112 5.46922 13.7433C5.82251 14.1411 6.25661 14.459 6.74254 14.6757C7.22847 14.8924 7.75504 15.003 8.2871 15C9.08937 15.0007 9.87113 14.7465 10.5195 14.2741C11.1679 13.8016 11.6494 13.1353 11.8945 12.3714C12.4159 12.2643 12.9084 12.0472 13.3393 11.7346C13.7701 11.4221 14.1294 11.0212 14.393 10.5588C14.7914 9.86688 14.9607 9.0667 14.8768 8.27272C14.7929 7.47874 14.46 6.73157 13.9258 6.13819ZM8.2871 14.0182C7.63005 14.0193 6.9936 13.789 6.48935 13.3677L6.57804 13.3175L9.56447 11.5936C9.6388 11.55 9.70051 11.4879 9.74354 11.4132C9.78657 11.3385 9.80945 11.254 9.80991 11.1678V6.95725L11.0724 7.68763C11.0787 7.69079 11.0841 7.69538 11.0882 7.70103C11.0923 7.70668 11.095 7.71322 11.0962 7.72012V11.2092C11.0946 11.9538 10.7981 12.6673 10.2717 13.1938C9.74519 13.7202 9.03162 14.0167 8.2871 14.0182ZM2.24916 11.4399C1.91964 10.8709 1.80133 10.2039 1.91504 9.55631L2.00379 9.60956L4.99316 11.3334C5.06713 11.3768 5.15134 11.3997 5.2371 11.3997C5.32286 11.3997 5.40707 11.3768 5.48104 11.3334L9.13279 9.22812V10.6859C9.13244 10.6934 9.1304 10.7008 9.12681 10.7075C9.12321 10.7141 9.11816 10.7199 9.11204 10.7243L6.08716 12.4689C5.44162 12.8408 4.67488 12.9413 3.95529 12.7483C3.23571 12.5554 2.62209 12.0848 2.24916 11.4399ZM1.46266 4.93475C1.79446 4.36211 2.31818 3.92533 2.9411 3.70175V7.25C2.93997 7.33572 2.96188 7.42017 3.00452 7.49455C3.04716 7.56892 3.10899 7.63048 3.18354 7.67281L6.81754 9.76925L5.55497 10.4996C5.54814 10.5032 5.54052 10.5051 5.53279 10.5051C5.52505 10.5051 5.51743 10.5032 5.5106 10.4996L2.49166 8.758C1.84732 8.38451 1.37725 7.7709 1.18439 7.05155C0.991525 6.3322 1.09159 5.56573 1.46266 4.92V4.93475ZM11.8353 7.34462L8.18954 5.2275L9.44916 4.5C9.45599 4.49637 9.46361 4.49447 9.47135 4.49447C9.47909 4.49447 9.4867 4.49637 9.49354 4.5L12.5125 6.24456C12.9741 6.51091 13.3504 6.90307 13.5974 7.37525C13.8445 7.84744 13.9522 8.38017 13.9079 8.91125C13.8635 9.44233 13.669 9.94984 13.3471 10.3745C13.0251 10.7992 12.589 11.1236 12.0897 11.3097V7.76144C12.087 7.67586 12.0622 7.59243 12.0176 7.51935C11.973 7.44626 11.9103 7.38609 11.8353 7.34462ZM13.092 5.45519L13.0033 5.40194L10.0198 3.66331C9.94543 3.61964 9.8607 3.59662 9.77441 3.59662C9.68812 3.59662 9.60339 3.61964 9.52897 3.66331L5.88029 5.76856V4.31087C5.87951 4.30346 5.88075 4.29598 5.88387 4.28921C5.887 4.28245 5.89189 4.27665 5.89804 4.27244L8.91697 2.53081C9.37967 2.26426 9.90869 2.13496 10.4422 2.15804C10.9757 2.18111 11.4915 2.35561 11.9295 2.66111C12.3674 2.96662 12.7094 3.39051 12.9152 3.88321C13.1211 4.3759 13.1825 4.91703 13.0921 5.44331L13.092 5.45519ZM5.19122 8.03937L3.92872 7.312C3.92241 7.3082 3.91701 7.30305 3.9129 7.29693C3.9088 7.2908 3.90609 7.28385 3.90497 7.27656V3.79638C3.90567 3.26248 4.05834 2.73982 4.34513 2.2895C4.63192 1.83918 5.04099 1.4798 5.5245 1.2534C6.00801 1.02699 6.54598 0.942913 7.07551 1.01099C7.60505 1.07906 8.10426 1.29648 8.51479 1.63781L8.42604 1.68813L5.43966 3.41188C5.36533 3.45547 5.30362 3.51765 5.26059 3.5923C5.21756 3.66696 5.19469 3.75152 5.19422 3.83769L5.19122 8.03937ZM5.87722 6.561L7.50347 5.62362L9.13279 6.561V8.43562L7.50941 9.37294L5.88022 8.43562L5.87722 6.561Z\" fill=\"currentColor\"/>\n</svg></div><div>Open in ChatGPT</div></a><a id=\"summarize-claude\" href=\"#\" target=\"_blank\" class=\"article-ai-item w-inline-block\"><div class=\"svg-embed w-embed\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.8151 2.21312H8.52019L12.7052 12.7869H15L10.8151 2.21312ZM4.18494 2.21312L0 12.7869H2.34012L3.19594 10.5664H7.57419L8.43 12.7869H10.7701L6.58519 2.21306L4.18494 2.21312ZM3.95294 8.60262L5.38506 4.88662L6.81719 8.60262H3.95294Z\" fill=\"currentColor\"/>\n</svg></div><div>Open in Claude</div></a><a id=\"summarize-perplexity\" href=\"#\" target=\"_blank\" class=\"article-ai-item w-inline-block\"><div class=\"svg-embed w-embed\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.3656 0V4.545H14.0625V11.0125H12.2281V15L7.83 11.1287V14.9694H7.14813V11.1244L2.745 15V10.9594H0.9375V4.4925H2.74V0L7.14813 4.05875V0.11875H7.82938V4.175L12.3656 0ZM7.83 5.6525V10.2269L11.5463 13.4981V9.025L7.83 5.6525ZM7.14312 5.6025L3.42687 8.97625V13.4981L7.14312 10.2269V5.60313V5.6025ZM12.2281 10.34H13.3806V5.21812H8.4125L12.2281 8.68062V10.34ZM6.61438 5.165H1.61875V10.2869H2.74375V8.67688L6.61375 5.16437L6.61438 5.165ZM3.42187 1.5475V4.49125H6.61875L3.42187 1.5475ZM11.6838 1.5475L8.48688 4.49125H11.6838V1.5475Z\" fill=\"currentColor\"/>\n</svg></div><div>Open in Perplexity</div></a></div></div><div class=\"post-rt w-richtext\"><p>On May 21, 2026, the Model Context Protocol&#x27;s lead maintainers published the <a href=\"https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/\">release candidate for MCP <code>2026-07-28</code></a>. They called it &quot;the largest revision of the protocol since launch.&quot; That&#x27;s not marketing language. The spec removes sessions, drops the initialization handshake, deprecates three core features, rewrites how authorization works, and introduces a framework for extensions that will shape how the protocol evolves from here.</p><p>The final specification ships on July 28, 2026. The ten-week window between the release candidate and the final spec is for SDK maintainers and server implementers to validate the changes against real workloads. If you&#x27;re running MCP servers in production, that window is your migration timeline.</p><p>This article covers what&#x27;s actually changing, verified against the official release candidate blog post and the draft specification. It focuses on the changes that matter most for teams building and securing agentic applications: the shift to a stateless core, the authorization hardening, and what you need to update before July 28.</p><h2>The protocol goes stateless</h2><p>The headline change is that MCP no longer manages sessions at the protocol layer. Six Specification Enhancement Proposals (SEPs) work together to remove the session model that the <code>2025-11-25</code> spec was built on.</p><figure style=\"max-width:1600px\" class=\"w-richtext-align-fullwidth w-richtext-figure-type-image\"><div><img alt=\"Before and after diagram comparing MCP server deployment models. The before model (MCP 2025-11-25) shows a client sending requests with an Mcp-Session-Id header through a load balancer that uses sticky routing and deep packet inspection to pin the client to a single server instance, with all instances connected to a shared session store. The after model (MCP 2026-07-28) shows a client sending requests with Mcp-Method and Mcp-Name headers through a simple round-robin load balancer that can route to any of three server instances, with no session store needed. The before model lists problems: sticky sessions required, can&#x27;t autoscale freely, session store is a single point of failure, gateway inspects request bodies. The after model lists benefits: any instance handles any request, autoscale freely, no session store, route on headers not body inspection.\" src=\"https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/6a33dbf747aa1f0c142ff8fb_diagram-mcp-stateless.webp\" loading=\"lazy\"/></div></figure><p><strong>The <code>initialize</code>/<code>initialized</code> handshake is gone.</strong> In the previous spec, every MCP connection started with a two-step handshake where the client and server exchanged protocol versions, capabilities, and identity information. In <code>2026-07-28</code>, that handshake is removed entirely (SEP-2575). The protocol version, client info, and client capabilities now travel in <code>_meta</code> on every request. A new <code>server/discover</code> method lets clients fetch server capabilities on demand rather than up front.</p><p><strong>The <code>Mcp-Session-Id</code> header is gone.</strong> The protocol-level session that pinned a client to a specific server instance is removed (SEP-2567). This is the change with the biggest operational impact. In the previous spec, a remote MCP server needed sticky sessions, a shared session store, and deep packet inspection at the gateway to route requests to the right instance. In <code>2026-07-28</code>, any server instance can handle any request.</p><p>The practical result: an MCP server can now run behind a plain round-robin load balancer. No sticky routing, no shared session store. The server routes traffic using the new <code>Mcp-Method</code> and <code>Mcp-Name</code> headers (SEP-2243) and can let clients cache <code>tools/list</code> responses for as long as the server&#x27;s <code>ttlMs</code> permits.</p><p><strong>Stateless protocol, stateful applications.</strong> Removing the protocol-level session doesn&#x27;t mean your application has to be stateless. Servers that need to carry state across calls can mint explicit handles (a <code>basket_id</code>, a <code>browser_id</code>) from a tool and have the model pass that handle back as an ordinary argument on later calls. As the release candidate blog post notes, this pattern is often more powerful than hidden session state because the model can reason about the handles, compose them across tools, and hand them off between steps.</p><h2>Authorization gets real</h2><p>The previous MCP spec&#x27;s approach to auth was, charitably, &quot;bring your own token.&quot; The <code>2026-07-28</code> spec aligns MCP authorization with OAuth 2.1 and OpenID Connect in ways that make it meaningfully enterprise-ready.</p><ul role=\"list\"><li>‍<strong>MCP servers are now formally </strong><a href=\"https://workos.com/blog/oauth-2-1-whats-new\"><strong>OAuth 2.1 </strong></a><strong>resource servers.</strong> This was introduced in the <code>2025-11-25</code> spec but <code>2026-07-28</code> tightens it considerably. MCP servers MUST implement <a href=\"https://workos.com/blog/introducing-rfc-9728-say-hello-to-standardized-oauth-2-0-resource-metadata\">OAuth 2.0 Protected Resource Metadata (RFC 9728)</a> so clients can discover the correct authorization server automatically. MCP clients MUST implement <a href=\"https://workos.com/blog/mcp-resource-indicators\">Resource Indicators (RFC 8707)</a> to explicitly specify which MCP server a token is intended for, preventing a malicious server from obtaining tokens meant for a different server.<strong>‍</strong></li><li><a href=\"https://workos.com/blog/client-id-metadata-documents-cimd-oauth-client-registration-mcp\"><strong>Client ID Metadata Documents</strong></a><strong> replace </strong><a href=\"https://workos.com/blog/dynamic-client-registration-dcr-mcp-oauth\"><strong>Dynamic Client Registration</strong></a><strong>.</strong> The spec now recommends <a href=\"https://workos.com/blog/client-id-metadata-documents-cimd-oauth-client-registration-mcp\">OAuth Client ID Metadata Documents (CIMD)</a> as the preferred method for client registration. <a href=\"https://workos.com/blog/dynamic-client-registration-dcr-mcp-oauth\">Dynamic Client Registration (RFC 7591)</a> is deprecated and retained only for backward compatibility with authorization servers that don&#x27;t support CIMD yet.<strong>‍</strong></li><li><strong>Issuer verification is now required.</strong> Clients must validate which authorization server issued an authorization response (based on RFC 9207) and must bind registered credentials to the issuing authorization server&#x27;s issuer. If a resource migrates between authorization servers, the client must re-register (SEP-2352). This prevents a class of mix-up attacks that were possible when one client talks to many MCP servers, which is exactly the deployment pattern MCP encourages.<strong>‍</strong></li><li><strong>Refresh token handling is formalized.</strong> The spec now documents how to request refresh tokens from OpenID Connect-style authorization servers (SEP-2207) and clarifies scope accumulation during step-up authorization (SEP-2350). In the previous spec, refresh token behavior was undefined, which meant every implementation handled it differently.<strong>‍</strong></li><li><strong>Application type declaration during registration.</strong> Clients now declare their OpenID Connect <code>application_type</code> during registration (SEP-837), which solves a common failure mode where an authorization server defaults a desktop or CLI client to &quot;web&quot; and then rejects its localhost redirect URI.</li></ul><p>The cumulative effect of these changes is that MCP authorization goes from &quot;technically possible if you wire everything up yourself&quot; to &quot;follow these RFCs and it works.&quot; For teams running MCP servers behind enterprise identity providers (Okta, Azure AD, Google Workspace), the path from &quot;unauthenticated MCP server&quot; to &quot;properly secured MCP server&quot; is now defined at the spec level rather than left as an exercise.</p><h2>Extensions become first-class</h2><p>The <code>2026-07-28</code> spec introduces a formal extensions framework. Extensions get reverse-DNS identifiers, their own repositories, delegated maintainers, and versions that move independently from the main spec. Clients and servers negotiate extension support through an <code>extensions</code> map in their capabilities.</p><p>Two extensions ship with the release candidate:</p><ul role=\"list\"><li><a href=\"https://workos.com/blog/2026-01-27-mcp-apps\">‍<strong>MCP Apps</strong></a> let servers render interactive HTML UIs directly in the client. The rendered UI communicates back to the host over the same JSON-RPC protocol used everywhere else in MCP, which means every UI-initiated action goes through the same audit and consent path as a direct tool call. This is the primitive that could turn MCP from a developer integration layer into a user-facing ecosystem.<strong>‍</strong></li><li><a href=\"https://workos.com/blog/mcp-async-tasks-ai-agent-workflows\"><strong>Tasks</strong></a> provide first-class support for long-running async work. Tasks were an experimental core feature in <code>2025-11-25</code>, but production use revealed enough design issues that they&#x27;ve been moved to an extension and substantially redesigned. A server can respond to <code>tools/call</code> with a task handle, and the client drives the lifecycle with <code>tasks/get</code>, <code>tasks/update</code>, and <code>tasks/cancel</code>. The <code>tasks/list</code> endpoint is removed because it couldn&#x27;t be scoped safely without sessions. Anyone who built against the experimental Tasks API in <code>2025-11-25</code> will need to migrate to the new lifecycle.</li></ul><h2>What&#x27;s deprecated</h2><p>Three features are deprecated in this release:</p><ul role=\"list\"><li>‍<strong>Roots</strong> are replaced by Resource URIs (plain URLs). </li><li>‍<strong>Sampling</strong> is removed from the core spec and may return as an extension. </li><li>‍<strong>Logging</strong> is also removed from the core spec.</li></ul><p>The spec now includes a formal deprecation policy. Deprecated features are documented, continue to work during a transition period, and are eventually removed with clear timelines. This is the first time MCP has had a structured process for evolving the spec without breaking existing implementations.</p><h2>What you need to do before July 28</h2><p>If you&#x27;re running MCP servers in production, here&#x27;s the migration checklist:</p><ul role=\"list\"><li>‍<strong>Check for session dependencies.</strong> Find every place your server stores or reads state tied to <code>Mcp-Session-Id</code>. Replace session-based state with explicit handles that the client passes as tool arguments. If you&#x27;re using sticky routing at the load balancer, you can remove it once the migration is complete.<strong>‍</strong></li><li><strong>Update your authorization implementation.</strong> If your server accepts unauthenticated connections, this is the time to add OAuth 2.1. The spec now requires Protected Resource Metadata (RFC 9728), so your server needs to expose a <code>.well-known/oauth-protected-resource</code> endpoint or include <code>resource_metadata</code> in <code>WWW-Authenticate</code> headers. If you&#x27;re using Dynamic Client Registration, plan your migration to Client ID Metadata Documents.<strong>‍</strong></li><li><strong>Update tool schemas.</strong> The spec now supports full JSON Schema 2020-12 for tool input schemas, replacing the previous restriction to a JSON Schema subset. Review your tool definitions and update if you were working around schema limitations.<strong>‍</strong></li><li><strong>Check for Roots, Sampling, and Logging usage.</strong> If your server uses any of these, start planning the migration. Roots become Resource URIs. Sampling and Logging move out of the core spec.<strong>‍</strong></li><li><strong>Update your MCP client.</strong> Clients must now include <code>MCP-Protocol-Version</code>, <code>Mcp-Method</code>, and <code>Mcp-Name</code> headers on every request. The <code>initialize</code> handshake is gone; use <code>server/discover</code> to fetch server capabilities. Resource Indicators (RFC 8707) are required in token requests.<strong>‍</strong></li><li><strong>Test multi-instance deployments.</strong> Once session dependencies are removed, deploy multiple server instances behind a round-robin load balancer and run your test suite. Any test that fails has a hidden session dependency you missed.</li></ul><h2>What this means for agent security</h2><p>The <code>2026-07-28</code> spec is a significant step forward for the security model described in this series. The previous articles on <a href=\"/blog/ai-agent-credentials\">agent credentials</a>, <a href=\"/blog/mcp-supply-chain-security\">supply chain verification</a>, <a href=\"/blog/ai-agent-tool-misuse\">tool invocation policy</a>, and <a href=\"/blog/ai-agent-prompt-injection\">prompt injection containment</a> were written against the <code>2025-11-25</code> spec. The security architecture in those articles still applies, but the new spec makes several of those patterns easier to implement.</p><p>Scoped, per-agent credentials are simpler with the stateless model. Each request is self-contained, which means token validation happens once per request without session context. The <code>Mcp-Method</code> and <code>Mcp-Name</code> headers make it trivial to route different tool calls through different authorization policies at the gateway layer, before they even reach your server code.</p><p>Resource Indicators (RFC 8707) directly address the confused deputy problem described in the <a href=\"/blog/ai-agent-delegation-multi-agent-security\">delegation article</a>. When a client requests a token, it must specify which MCP server the token is for. A token minted for Server A can&#x27;t be replayed against Server B. This is enforced at the protocol level rather than relying on application-level checks.</p><p>The extensions framework means that security-relevant capabilities like audit logging, consent UIs, and approval flows can be standardized as extensions rather than reimplemented by every server author. MCP Apps already route UI actions through the same JSON-RPC consent path as tool calls, which means your invocation policy layer doesn&#x27;t need a separate code path for UI-initiated actions.</p><h2>Securing AI agents and MCP servers with WorkOS</h2><p><a href=\"https://workos.com\">WorkOS</a> AuthKit already acts as a spec-compliant OAuth 2.1 authorization server for MCP. The <code>2026-07-28</code> spec changes align with what WorkOS already provides: Protected Resource Metadata discovery, Resource Indicators, <a href=\"https://workos.com/blog/pkce\">PKCE</a> for public clients, and enterprise SSO integration through the same authorization server. For teams migrating to the new spec, WorkOS handles the authorization server side so you can focus on updating your MCP server and client code. See the <a href=\"https://workos.com/docs/authkit/mcp\">MCP Auth documentation</a> for implementation details.</p></div></div></div></div></div></section><section class=\"section section--bottom-cta\"><div class=\"page-padding\"><div class=\"container\"><div class=\"bottom-cta-grid\"><a href=\"/careers\" class=\"bottom-cta w-inline-block\"><div class=\"bottom-cta-icon w-embed\"><svg width=\"35\" height=\"34\" viewBox=\"0 0 35 34\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M2.91699 28.1667H32.0837\" stroke=\"#D8D9FA\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M14.8285 11.5423L15.8309 10.4264L15.8309 10.4264L14.8285 11.5423ZM21.391 17.438L20.3885 18.5538L20.3885 18.5538L21.391 17.438ZM21.8747 28.1667V29.6667C22.7031 29.6667 23.3747 28.9951 23.3747 28.1667H21.8747ZM6.31673 17.438L7.31919 18.5538H7.31919L6.31673 17.438ZM12.8792 11.5423L13.8817 12.6581V12.6581L12.8792 11.5423ZM13.826 12.6581L20.3885 18.5538L22.3934 16.3222L15.8309 10.4264L13.826 12.6581ZM20.3747 18.5228V28.1667H23.3747V18.5228H20.3747ZM7.33301 26.7083V18.5228H4.33301V26.7083H7.33301ZM7.31919 18.5538L13.8817 12.6581L11.8768 10.4264L5.31427 16.3222L7.31919 18.5538ZM21.8747 26.6667H7.29134V29.6667H21.8747V26.6667ZM7.33301 18.5228C7.33301 18.5346 7.32798 18.5459 7.31919 18.5538L5.31427 16.3222C4.68973 16.8832 4.33301 17.6833 4.33301 18.5228H7.33301ZM4.33301 26.7083C4.33301 28.3422 5.6575 29.6667 7.29134 29.6667V26.6667C7.29433 26.6667 7.30095 26.6676 7.30802 26.6706C7.31409 26.6731 7.31812 26.6762 7.3208 26.6789C7.32348 26.6816 7.32655 26.6856 7.32912 26.6917C7.33211 26.6987 7.33301 26.7054 7.33301 26.7083H4.33301ZM20.3885 18.5538C20.3797 18.5459 20.3747 18.5346 20.3747 18.5228H23.3747C23.3747 17.6833 23.018 16.8832 22.3934 16.3222L20.3885 18.5538ZM15.8309 10.4264C14.7064 9.41621 13.0012 9.4162 11.8768 10.4264L13.8817 12.6581C13.8658 12.6723 13.8418 12.6723 13.826 12.6581L15.8309 10.4264Z\" fill=\"#D8D9FA\"/>\n<path d=\"M21.6924 28.1666H27.708C28.5134 28.1666 29.1663 27.5137 29.1663 26.7083V6.29165C29.1663 5.48623 28.5134 4.83331 27.708 4.83331H11.6663C10.8609 4.83331 10.208 5.48623 10.208 6.29165V13.5833\" stroke=\"#D8D9FA\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div><div class=\"bottom-cta-inner\"><div class=\"bottom-cta-content\"><div class=\"bottom-cta-title\">We’re hiring</div><p>Our global team is growing and we’re hiring all types of roles.</p></div><div class=\"secondary-button cc-bottom-cta\"><div>View open roles</div><div class=\"sec-button-chevron w-embed\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#B1B3F6\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div></div></a><a href=\"/about\" class=\"bottom-cta w-inline-block\"><div class=\"bottom-cta-icon w-embed\"><svg width=\"35\" height=\"30\" viewBox=\"0 0 35 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0 14.9831C0 15.6401 0.175001 16.297 0.513335 16.8618L6.65003 27.3615C7.28003 28.4333 8.2367 29.3093 9.42671 29.7011C11.7717 30.4733 14.1984 29.4822 15.3534 27.4998L16.8351 24.9642L10.99 14.9831L17.1617 4.41426L18.6434 1.87865C19.0867 1.11797 19.6817 0.495595 20.3818 0H19.7401H10.8617C9.19337 0 7.65337 0.875936 6.82503 2.30509L0.513335 13.1045C0.175001 13.6692 0 14.3262 0 14.9831Z\" fill=\"currentColor\"/>\n<path d=\"M34.9999 14.9831C34.9999 14.3261 34.8249 13.6692 34.4866 13.1044L28.2682 2.46641C27.1132 0.495551 24.6865 -0.49564 22.3415 0.265041C21.1515 0.656907 20.1949 1.53284 19.5649 2.60471L18.1648 4.99048L24.0099 14.9831L17.8382 25.5519L16.3565 28.0875C15.9132 28.8367 15.3182 29.4706 14.6182 29.9662H15.2598H24.1382C25.8065 29.9662 27.3466 29.0902 28.1749 27.6611L34.4866 16.8617C34.8249 16.297 34.9999 15.64 34.9999 14.9831Z\" fill=\"currentColor\"/>\n</svg></div><div class=\"bottom-cta-inner\"><div class=\"bottom-cta-content\"><div class=\"bottom-cta-title\">About us</div><p>WorkOS builds developer tools for quickly adding enterprise features to applications.</p></div><div class=\"secondary-button cc-bottom-cta\"><div>Learn more</div><div class=\"sec-button-chevron w-embed\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#B1B3F6\" stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg></div></div></div></a></div></div></div></section></main><footer class=\"footer\"><div class=\"page-padding\"><div class=\"container\"><div class=\"footer-menu\"><a aria-label=\"Homepage\" href=\"#\" class=\"footer-logo-link w-inline-block\"><div class=\"icon-embed w-embed\"><svg width=\"59\" height=\"51\" viewBox=\"0 0 59 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0 25.4002C0 26.5139 0.293079 27.6276 0.859699 28.585L11.137 46.3847C12.1921 48.2018 13.7943 49.6867 15.7872 50.351C19.7145 51.6601 23.7785 49.9798 25.7128 46.6192L28.1942 42.3207L18.4054 25.4002L28.7413 7.48329L31.2227 3.1848C31.9652 1.89525 32.9617 0.840161 34.134 0H33.0594H18.1905C15.3964 0 12.8173 1.48494 11.4301 3.90772L0.859699 22.2154C0.293079 23.1728 0 24.2865 0 25.4002Z\" fill=\"currentColor\"/>\n<path d=\"M58.6151 25.4001C58.6151 24.2864 58.322 23.1727 57.7554 22.2153L47.3413 4.18118C45.407 0.840078 41.343 -0.840243 37.4157 0.449306C35.4228 1.11362 33.8206 2.59855 32.7655 4.41565L30.4209 8.46014L40.2097 25.4001L29.8738 43.317L27.3924 47.6155C26.6499 48.8856 25.6535 49.9602 24.4811 50.8003H25.5558H40.4247C43.2187 50.8003 45.7978 49.3154 47.185 46.8926L57.7554 28.5849C58.322 27.6275 58.6151 26.5138 58.6151 25.4001Z\" fill=\"currentColor\"/>\n</svg></div></a><div class=\"footer-menu-cell\"><div>Products</div><a href=\"/user-management\" class=\"footer-link\">User Management</a><a href=\"/single-sign-on\" class=\"footer-link\">Enterprise SSO</a><a href=\"/directory-sync\" class=\"footer-link\">Directory Sync</a><a href=\"/admin-portal\" class=\"footer-link\">Admin Portal</a><a href=\"/audit-logs\" class=\"footer-link\">Audit Logs</a><a href=\"https://authkit.com\" target=\"_blank\" class=\"footer-link\">AuthKit</a><a href=\"/multi-factor-authentication\" class=\"footer-link\">Multi-Factor Authentication</a><a href=\"/rbac\" class=\"footer-link\">Role-Based Access Control</a><a href=\"/radar\" class=\"footer-link\">Radar</a><a href=\"/vault\" class=\"footer-link\">Vault</a><a href=\"https://workos.com/pipes\" class=\"footer-link\">Pipes</a></div><div class=\"footer-menu-cell\"><div>Developers</div><a href=\"https://workos.com/docs\" class=\"footer-link\">Documentation</a><a href=\"/changelog\" class=\"footer-link\">Changelog</a><a href=\"https://status.workos.com/\" class=\"footer-link\">API Status</a></div><div class=\"footer-menu-cell\"><div>Resources</div><a href=\"/blog\" class=\"footer-link\">Blog</a><a href=\"/guides\" class=\"footer-link\">Guides</a><a href=\"/podcast\" class=\"footer-link\">Podcast</a><a href=\"/pricing\" class=\"footer-link\">Pricing</a><a href=\"/startups\" class=\"footer-link\">Startups</a><a href=\"/support-plans\" class=\"footer-link\">Support Plans</a><a href=\"/legal/sla\" class=\"footer-link\">Enterprise SLA</a></div><div class=\"footer-menu-cell\"><div>Company</div><a href=\"/about\" class=\"footer-link\">About</a><a href=\"/customers\" class=\"footer-link\">Customers</a><a href=\"/careers\" class=\"footer-link\">Careers</a><a href=\"/security\" class=\"footer-link\">Security</a><a href=\"/legal/policies\" class=\"footer-link\">Legal</a><a href=\"https://trust.workos.com/\" target=\"_blank\" class=\"footer-link\">Trust Center</a><a href=\"/contact\" class=\"footer-link\">Contact</a></div></div><div class=\"footer-bottom\"><div class=\"footer-copyright\">© WorkOS, Inc.</div><div class=\"footer-social\"><a aria-label=\"GitHub\" href=\"https://github.com/workos\" target=\"_blank\" class=\"footer-social-link w-inline-block\"><div class=\"icon-embed w-embed\"><svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <g clip-path=\"url(#a)\" fill=\"currentColor\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 .417c-2.374 0-4.67.842-6.478 2.372a9.931 9.931 0 0 0-3.39 5.98 9.898 9.898 0 0 0 1.315 6.738 9.992 9.992 0 0 0 5.39 4.287c.497.092.684-.216.684-.477 0-.262-.01-1.021-.013-1.851-2.782.6-3.37-1.174-3.37-1.174-.453-1.153-1.11-1.456-1.11-1.456-.907-.615.069-.604.069-.604 1.005.071 1.533 1.026 1.533 1.026.891 1.52 2.34 1.08 2.91.823.089-.644.349-1.082.635-1.33-2.222-.25-4.557-1.103-4.557-4.913a3.839 3.839 0 0 1 1.03-2.67c-.102-.25-.445-1.26.098-2.634 0 0 .84-.266 2.75 1.02a9.544 9.544 0 0 1 5.008 0c1.91-1.286 2.747-1.02 2.747-1.02.545 1.37.202 2.381.1 2.635a3.83 3.83 0 0 1 1.031 2.672c0 3.818-2.34 4.66-4.565 4.905.357.31.677.914.677 1.842 0 1.33-.012 2.4-.012 2.729 0 .265.18.574.688.477a9.991 9.991 0 0 0 5.39-4.288 9.897 9.897 0 0 0 1.314-6.74 9.93 9.93 0 0 0-3.391-5.979 10.036 10.036 0 0 0-6.48-2.37H10Z\"/>\n    <path d=\"M3.787 14.694c-.022.049-.101.064-.166.03-.064-.035-.112-.1-.089-.15.023-.052.101-.065.166-.03.064.034.114.1.089.15Zm.406.449a.166.166 0 0 1-.206-.046c-.064-.07-.077-.165-.028-.208.05-.043.14-.023.204.046.065.07.08.165.03.208Zm.394.571c-.061.043-.166 0-.224-.085a.166.166 0 0 1-.037-.183.166.166 0 0 1 .037-.054c.062-.042.166 0 .224.084.058.083.06.195 0 .238Zm.535.553c-.055.061-.166.045-.257-.037-.091-.083-.113-.195-.058-.254.055-.06.166-.043.26.038.094.08.113.194.055.253Zm.75.323c-.025.078-.138.112-.25.08-.113-.034-.187-.126-.166-.205.022-.079.136-.115.25-.079.114.036.187.124.166.204Zm.818.056c0 .08-.093.15-.212.151-.12.002-.217-.064-.217-.145 0-.08.093-.15.212-.151.12-.002.217.063.217.145Zm.762-.126c.014.08-.068.164-.188.184-.119.02-.223-.028-.238-.107-.015-.08.071-.165.187-.186.116-.022.224.028.239.108Z\"/>\n  </g>\n  <defs>\n    <clipPath id=\"a\">\n      <path fill=\"#fff\" d=\"M0 0h20v20H0z\"/>\n    </clipPath>\n  </defs>\n</svg></div></a><a aria-label=\"Twitter\" href=\"https://twitter.com/workos\" target=\"_blank\" class=\"footer-social-link w-inline-block\"><div class=\"icon-embed w-embed\"><svg width=\"21\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <g clip-path=\"url(#a)\">\n    <path d=\"M6.792 18.125c7.545 0 11.673-6.253 11.673-11.673 0-.176-.004-.356-.012-.532A8.332 8.332 0 0 0 20.5 3.796a8.09 8.09 0 0 1-2.355.645 4.125 4.125 0 0 0 1.804-2.27 8.247 8.247 0 0 1-2.605.996A4.108 4.108 0 0 0 10.35 6.91a11.654 11.654 0 0 1-8.456-4.284A4.108 4.108 0 0 0 3.164 8.1a4.108 4.108 0 0 1-1.86-.512v.051a4.102 4.102 0 0 0 3.293 4.024 4.078 4.078 0 0 1-1.851.07 4.111 4.111 0 0 0 3.831 2.851A8.23 8.23 0 0 1 .5 16.282a11.64 11.64 0 0 0 6.292 1.843Z\" fill=\"currentColor\"/>\n  </g>\n  <defs>\n    <clipPath id=\"a\">\n      <path fill=\"#fff\" transform=\"translate(.5)\" d=\"M0 0h20v20H0z\"/>\n    </clipPath>\n  </defs>\n</svg></div></a><a aria-label=\"LinkedIn\" href=\"https://www.linkedin.com/company/workos-inc\" target=\"_blank\" class=\"footer-social-link w-inline-block\"><div class=\"icon-embed w-embed\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18.5195 0H1.47656C0.660156 0 0 0.644531 0 1.44141V18.5547C0 19.3516 0.660156 20 1.47656 20H18.5195C19.3359 20 20 19.3516 20 18.5586V1.44141C20 0.644531 19.3359 0 18.5195 0ZM5.93359 17.043H2.96484V7.49609H5.93359V17.043ZM4.44922 6.19531C3.49609 6.19531 2.72656 5.42578 2.72656 4.47656C2.72656 3.52734 3.49609 2.75781 4.44922 2.75781C5.39844 2.75781 6.16797 3.52734 6.16797 4.47656C6.16797 5.42188 5.39844 6.19531 4.44922 6.19531ZM17.043 17.043H14.0781V12.4023C14.0781 11.2969 14.0586 9.87109 12.5352 9.87109C10.9922 9.87109 10.7578 11.0781 10.7578 12.3242V17.043H7.79688V7.49609H10.6406V8.80078H10.6797C11.0742 8.05078 12.043 7.25781 13.4844 7.25781C16.4883 7.25781 17.043 9.23438 17.043 11.8047V17.043Z\" fill=\"currentColor\"/>\n</svg></div></a><a aria-label=\"LinkedIn\" href=\"https://www.youtube.com/@WorkOS/videos\" target=\"_blank\" class=\"footer-social-link w-inline-block\"><div class=\"icon-embed w-embed\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M23.499 6.203c-.277-1.045-1.093-1.86-2.139-2.139C19.62 3.5 12 3.5 12 3.5s-7.62 0-9.36.564C1.593 4.344.777 5.16.5 6.203.001 8.097 0 12 0 12s0 3.903.5 5.797c.277 1.045 1.093 1.86 2.139 2.139C4.38 20.5 12 20.5 12 20.5s7.62 0 9.36-.564c1.045-.279 1.86-1.094 2.139-2.139.5-1.894.5-5.797.5-5.797s0-3.903-.5-5.797zM9.75 15.002v-6l6 3-6 3z\" fill=\"currentColor\"/>\n</svg></div></a></div></div></div></div></footer></div><script src=\"https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=621f54116cab10f6e9215d8b\" type=\"text/javascript\" integrity=\"sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/js/workos-new.schunk.36b8fb49256177c8.js\" type=\"text/javascript\" integrity=\"sha384-4abIlA5/v7XaW1HMXKBgnUuhnjBYJ/Z9C1OSg4OhmVw9O3QeHJ/qJqFBERCDPv7G\" crossorigin=\"anonymous\"></script><script src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/js/workos-new.schunk.5387ccbc824d3272.js\" type=\"text/javascript\" integrity=\"sha384-otZNlAzR+ZxdLunM6RgMH9PfAjqTHVIOfHHAH5yRdsT2SIaCCh/5pmvDuxidGvya\" crossorigin=\"anonymous\"></script><script src=\"https://cdn.prod.website-files.com/621f54116cab10f6e9215d8b/js/workos-new.633e2a48.eb11b028b38f8260.js\" type=\"text/javascript\" integrity=\"sha384-kCpK6NLZ4NGACd9XT97sAM2j2ZyqS+9bH4RW5hGoCfNmuqjyHjQnwjnLcm+nsJx6\" crossorigin=\"anonymous\"></script><style>\n  #consent-banner {\n    display: none;\n    position: fixed;\n    right: 24px;\n    bottom: 24px;\n    width: 340px;\n    max-width: calc(100% - 32px);\n    padding: 16px;\n    font-size: 13.8px !important;\n    line-height: 1.4286 !important;\n    z-index: 9999;\n    border-radius: 10px;\n    border: 1px solid transparent !important;\n    font-family: inherit;\n  }\n\n  #consent-banner p {\n    margin: 0 0 12px 0 !important;\n    font-size: 13.8px !important;\n    line-height: 1.4286 !important;\n  }\n\n  #consent-banner a {\n    text-decoration: none !important;\n  }\n\n  #consent-banner a:hover {\n    text-decoration: underline !important;\n    text-decoration-thickness: 1px !important;\n    text-underline-offset: 2px !important;\n  }\n\n  #consent-banner-buttons {\n    display: flex;\n    gap: 8px;\n  }\n\n  #consent-banner button {\n    border: none;\n    height: 32px;\n    padding: 0 12px;\n    font-weight: 500;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 13.8px !important;\n    font-family: inherit;\n    line-height: 1 !important;\n  }\n\n  #consent-accept {\n    background: rgb(101, 101, 236) !important;\n    color: #ffffff !important;\n  }\n\n  /* Dark theme */\n  #consent-banner.theme-dark {\n    background: #18191b !important;\n    color: #edeef0 !important;\n    border-color: rgba(217, 237, 254, 0.145) !important;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n  }\n\n  #consent-banner.theme-dark p {\n    color: #edeef0 !important;\n  }\n\n  #consent-banner.theme-dark a {\n    color: #b1a9ff !important;\n  }\n\n  #consent-banner.theme-dark a:hover {\n    text-decoration-color: rgba(177, 169, 255, 0.5) !important;\n  }\n\n  #consent-banner.theme-dark #consent-accept:hover {\n    background: #6e6ade !important;\n    background: color(display-p3 0.428 0.416 0.843) !important;\n  }\n\n  #consent-banner.theme-dark #consent-reject {\n    background: transparent !important;\n    color: #edeef0 !important;\n    border: 1px solid rgba(217, 237, 255, 0.251) !important;\n  }\n\n  #consent-banner.theme-dark #consent-reject:hover {\n    background: rgba(221, 234, 248, 0.13) !important;\n  }\n\n  /* Light theme */\n  #consent-banner.theme-light {\n    background: #ffffff !important;\n    color: #1c2024 !important;\n    border-color: rgba(0, 9, 50, 0.122) !important;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);\n  }\n\n  #consent-banner.theme-light p {\n    color: #1c2024 !important;\n  }\n\n  #consent-banner.theme-light a {\n    color: rgba(6, 0, 171, 0.673) !important;\n  }\n\n  #consent-banner.theme-light a:hover {\n    text-decoration-color: rgba(6, 0, 171, 0.4) !important;\n  }\n\n  #consent-banner.theme-light #consent-accept:hover {\n    background: #5151cd !important;\n    background: color(display-p3 0.318 0.318 0.774) !important;\n  }\n\n  #consent-banner.theme-light #consent-reject {\n    background: transparent !important;\n    color: #1c2024 !important;\n    border: 1px solid rgba(0, 6, 46, 0.197) !important;\n  }\n\n  #consent-banner.theme-light #consent-reject:hover {\n    background: rgba(0, 0, 51, 0.09) !important;\n  }\n\n  @media (max-width: 480px) {\n    #consent-banner {\n      right: 16px;\n      left: 16px;\n      bottom: 16px;\n      width: auto;\n    }\n  }\n</style>\n\n<!-- Consent Banner markup -->\n<!-- Change \"theme-light\" to \"theme-dark\" to flip the banner appearance. -->\n<div id=\"consent-banner\" class=\"theme-light\" role=\"dialog\" aria-label=\"Cookie consent\">\n  <p>\n    We use cookies for analytics and advertising. See our\n    <a href=\"/cookies\">cookie policy</a>\n    for details.\n  </p>\n  <div id=\"consent-banner-buttons\">\n    <button id=\"consent-accept\">Accept</button>\n    <button id=\"consent-reject\">Reject</button>\n  </div>\n</div>\n\n<script>\n  (function () {\n    var STORAGE_KEY = 'workos_consent_v1'; // bump version to reset all stored choices\n\n    var EU_COUNTRIES = ['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB', 'IS', 'LI', 'NO', 'CH'];\n    var ALL_DENIED = { ad_storage: 'denied', ad_user_data: 'denied', ad_personalization: 'denied', analytics_storage: 'denied' };\n    var ALL_GRANTED = { ad_storage: 'granted', ad_user_data: 'granted', ad_personalization: 'granted', analytics_storage: 'granted' };\n\n    window.dataLayer = window.dataLayer || [];\n    function gtag() {\n      dataLayer.push(arguments);\n    }\n\n    function showBanner() {\n      var el = document.getElementById('consent-banner');\n      if (el) el.style.display = 'block';\n    }\n    function hideBanner() {\n      var el = document.getElementById('consent-banner');\n      if (el) el.style.display = 'none';\n    }\n    function persist(consent) {\n      try {\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(consent));\n      } catch (e) {}\n    }\n\n    // Apply consent + persist + emit Custom Event for non-Google tags (LinkedIn, Unifygtm).\n    // Only emits the Custom Event when at least one consent type is granted —\n    // GTM uses `cookie_consent_update` as the trigger for non-Google tags.\n    function applyConsent(consent) {\n      gtag('consent', 'update', consent);\n      persist(consent);\n      var anyGranted = Object.keys(consent).some(function (k) {\n        return consent[k] === 'granted';\n      });\n      if (anyGranted) {\n        dataLayer.push({ event: 'cookie_consent_update', consent: consent });\n      }\n    }\n\n    // Returning visitor: head already restored consent. Push the Custom Event\n    // so non-Google tags fire (if their stored choice included any granted state).\n    function earlyConsent() {\n      var stored = null;\n      try {\n        stored = localStorage.getItem(STORAGE_KEY);\n      } catch (e) {}\n      if (stored) {\n        try {\n          var parsed = JSON.parse(stored);\n          var anyGranted = Object.keys(parsed).some(function (k) {\n            return parsed[k] === 'granted';\n          });\n          if (anyGranted) dataLayer.push({ event: 'cookie_consent_update', consent: parsed });\n        } catch (e) {}\n        return true;\n      }\n      return false;\n    }\n\n    // First-time visitor: geo-check via Cloudflare /cdn-cgi/trace (workos.com only).\n    // On any other host (e.g., staging workos-new.webflow.io) assume US.\n    function init() {\n      var handleCountry = function (country) {\n        if (EU_COUNTRIES.indexOf(country) !== -1) {\n          showBanner();\n        } else {\n          applyConsent(ALL_GRANTED);\n        }\n      };\n\n      if (location.hostname !== 'workos.com') {\n        handleCountry('US');\n      } else {\n        fetch('/cdn-cgi/trace')\n          .then(function (r) {\n            return r.text();\n          })\n          .then(function (text) {\n            var match = text.match(/^loc=(.+)$/m);\n            handleCountry(match ? match[1] : '');\n          })\n          .catch(function () {\n            showBanner();\n          });\n      }\n    }\n\n    function wireButtons() {\n      var accept = document.getElementById('consent-accept');\n      var reject = document.getElementById('consent-reject');\n      if (accept) {\n        accept.addEventListener('click', function () {\n          applyConsent(ALL_GRANTED);\n          hideBanner();\n        });\n      }\n      if (reject) {\n        reject.addEventListener('click', function () {\n          applyConsent(ALL_DENIED);\n          hideBanner();\n        });\n      }\n    }\n\n    // Run early consent synchronously (before DOMContentLoaded) — minimizes timing race\n    var handled = earlyConsent();\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', function () {\n        wireButtons();\n        if (!handled) init();\n      });\n    } else {\n      wireButtons();\n      if (!handled) init();\n    }\n  })();\n</script>\n\n<!-- Google Tag Manager (noscript) -->\n<noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-NTN3Q3DV\" height=\"0\" width=\"0\" style=\"display: none; visibility: hidden\"></iframe></noscript>\n<!-- End Google Tag Manager (noscript) -->\n\n<script src=\"https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js\"></script>\n<!-- BEGIN Structured Data -->\n<script type=\"application/ld+json\">\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Corporation\",\n    \"name\": \"WorkOS\",\n    \"@id\": \"https://workos.com/#organization\",\n    \"legalName\": \"WorkOS, Inc.\",\n    \"url\": \"https://workos.com/\",\n    \"description\": \"Enterprise APIs for SSO, SCIM Directory Sync, MFA, AuthKit user management, Audit Logs, and more. Free up to 1M monthly active users.\",\n    \"logo\": \"https://images.workoscdn.com/brand/v2/favicon@256x256.png\",\n    \"address\": {\n      \"@type\": \"PostalAddress\",\n      \"streetAddress\": \"660 Market St\",\n      \"addressLocality\": \"San Francisco\",\n      \"addressRegion\": \"CA\",\n      \"postalCode\": \"94104\",\n      \"addressCountry\": \"US\"\n    },\n    \"contactPoint\": [\n      {\n        \"@type\": \"ContactPoint\",\n        \"url\": \"https://workos.com/\",\n        \"email\": \"hello@workos.com\",\n        \"contactType\": \"customer support\"\n      }\n    ],\n    \"foundingDate\": \"2019-05-20\",\n    \"founders\": [\n      {\n        \"@type\": \"Person\",\n        \"name\": \"Michael Grinich\"\n      }\n    ],\n    \"sameAs\": [\n      \"https://twitter.com/workos\",\n      \"https://www.linkedin.com/company/workos-inc/\",\n      \"https://github.com/workos\",\n      \"https://wellfound.com/company/workos\"\n    ]\n  }\n</script>\n<!-- END Structured Data -->\n\n<!-- BEGIN Cookies for UTM Attribution and Referrer -->\n<script type=\"text/javascript\">\n  (() => {\n    // UTM Attribution\n    const utmCookieName = 'workos_utm_attribution';\n    const utmCookie = Cookies.get(utmCookieName);\n    if (!utmCookie && location.search && location.search.includes('utm')) {\n      Cookies.set(utmCookieName, location.search, { domain: 'workos.com', expires: 7 });\n    }\n\n    // Referrer\n    const referrerCookieName = 'workos_referrer';\n    const referrerCookie = Cookies.get(referrerCookieName);\n    if (!referrerCookie && document.referrer && !document.referrer.includes('workos.com')) {\n      Cookies.set(referrerCookieName, document.referrer, { domain: 'workos.com', expires: 7 });\n    }\n  })();\n</script>\n<!-- END Cookies for UTM Attribution and Referrer -->\n\n<!-- Start of HubSpot Embed Code -->\n<script type=\"text/javascript\" id=\"hs-script-loader\" async defer src=\"//js-na1.hs-scripts.com/20433186.js\"></script>\n<!-- End of HubSpot Embed Code -->\n<script>\n  const navLogo = document.querySelector('.nav-logo-link');\n  const contextMenu = document.querySelector('.nav-context-menu');\n  const copyLogoButton = document.getElementById('copy-logo');\n  const copyBrandmarkButton = document.getElementById('copy-brandmark');\n\n  if (navLogo && contextMenu && copyLogoButton && copyBrandmarkButton) {\n    navLogo.addEventListener('contextmenu', function (e) {\n      e.preventDefault();\n      contextMenu.classList.add('show-menu');\n      document.addEventListener('click', closeContextMenu);\n    });\n\n    function closeContextMenu(e) {\n      if (!contextMenu.contains(e.target)) {\n        contextMenu.classList.remove('show-menu');\n        document.removeEventListener('click', closeContextMenu);\n      }\n    }\n\n    copyLogoButton.addEventListener('click', function () {\n      copyToClipboard(logoSVG, copyLogoButton);\n    });\n\n    copyBrandmarkButton.addEventListener('click', function () {\n      copyToClipboard(wordmarkSVG, copyBrandmarkButton);\n    });\n  }\n\n  function copyToClipboard(text, button) {\n    navigator.clipboard\n      .writeText(text)\n      .then(() => {\n        const text = button.querySelector('.context-menu-item-text');\n        // Change button text to \"Copied!\"\n        const originalText = text.textContent;\n        text.textContent = 'Copied!';\n\n        // Revert back to the original text after 2 seconds\n        setTimeout(() => {\n          text.textContent = originalText;\n          contextMenu.classList.remove('show-menu');\n          document.removeEventListener('click', closeContextMenu);\n        }, 400);\n      })\n      .catch((err) => {\n        console.error('Failed to copy: ', err);\n      });\n  }\n\n  const logoSVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"558\" height=\"164\" fill=\"none\" viewBox=\"0 0 558 164\"><path fill=\"#2B333B\" d=\"M485.175 92.905h-13.694c0 13.687 10.992 22.787 26.665 22.787 15.403 0 25.854-8.107 25.854-20.098 0-14.366-10.07-16.47-22.725-19.114-.676-.141-1.359-.284-2.048-.43-9.188-1.892-12.161-3.871-12.161-9.005 0-4.864 4.236-8.195 11.08-8.195 6.755 0 11.349 3.695 11.349 9.64h13.694c0-12.248-9.553-20.354-25.043-20.354-14.863 0-24.591 8.647-24.591 20.084 0 13.694 11.079 17.207 21.53 19.28 11.444 2.25 15.045 3.696 15.045 9.188 0 4.865-4.688 8.29-11.532 8.29-8.106 0-13.423-4.324-13.423-12.073Z\"/><path fill=\"#2B333B\" fill-rule=\"evenodd\" d=\"M403.837 82.155c0-20.267 12.613-33.779 31.529-33.779s31.528 13.512 31.528 33.779c0 20.267-12.612 33.778-31.528 33.778-18.916 0-31.529-13.511-31.529-33.778Zm49.992 0c0-13.782-7.384-23.064-18.47-23.064-11.086 0-18.463 9.282-18.463 23.064 0 13.781 7.384 23.064 18.463 23.064s18.47-9.283 18.47-23.064Z\" clip-rule=\"evenodd\"/><path fill=\"#2B333B\" d=\"M190.358 49.035h-13.511l17.477 65.759h15.49l9.729-39.817c1.979-8.648 2.161-12.519 2.161-12.519h.183s.182 3.871 2.344 12.519l10.356 39.817h15.045l17.112-65.76h-13.511l-9.37 40.089c-1.797 7.836-1.979 12.072-1.979 12.072h-.271s-.452-4.236-2.344-12.072l-9.816-40.088h-15.315l-9.275 40.088c-1.804 7.66-2.433 12.072-2.433 12.072h-.182s-.358-4.506-2.162-12.072l-9.728-40.088Z\"/><path fill=\"#2B333B\" fill-rule=\"evenodd\" d=\"M288.903 66.133c-14.686 0-24.415 9.728-24.415 24.773 0 15.132 9.735 24.948 24.415 24.955 14.593 0 24.321-9.823 24.321-24.955 0-15.045-9.728-24.773-24.321-24.773Zm0 9.545c7.026 0 11.708 5.5 11.708 15.228 0 9.275-4.141 15.403-11.708 15.403-7.12 0-11.802-5.493-11.802-15.403 0-9.1 4.236-15.228 11.802-15.228Z\" clip-rule=\"evenodd\"/><path fill=\"#2B333B\" d=\"M319.257 66.87h11.978v8.83h.27c2.074-4.594 7.026-9.188 15.491-9.188 1.439 0 2.344.182 2.973.358v11.978h-.358s-1.081-.358-4.054-.358c-9.275 0-14.322 5.492-14.322 15.76v20.538h-11.978V66.87Zm48.276-17.835h-11.978v65.753h11.978V99.385l4.506-4.412 17.477 19.821h14.146L379.43 87.589l20.888-20.72h-14.95l-17.835 17.923h-.182s.182-2.25.182-14.68V49.035Z\"/><path fill=\"#6363F1\" d=\"M35 81.61c0 2.044.538 4.088 1.578 5.845l18.86 32.664c1.935 3.334 4.875 6.059 8.532 7.278 7.207 2.402 14.665-.681 18.215-6.848l4.553-7.888-17.963-31.05 23.52-40.767c1.363-2.366 3.192-4.302 5.343-5.844H68.38c-5.127 0-9.86 2.725-12.405 7.17L36.578 75.768C35.538 77.523 35 79.567 35 81.61Z\"/><path fill=\"#6363F1\" d=\"M142.563 81.61c0-2.043-.537-4.087-1.577-5.844l-19.111-33.093c-3.549-6.131-11.007-9.215-18.214-6.849-3.657 1.22-6.597 3.945-8.533 7.279l-4.303 7.422 17.963 31.086-23.52 40.766a18.946 18.946 0 0 1-5.342 5.844h29.257c5.127 0 9.86-2.724 12.406-7.17l19.397-33.596c1.04-1.757 1.577-3.8 1.577-5.844Z\"/></svg>`;\n  const wordmarkSVG = `<svg width=\"124\" height=\"124\" viewBox=\"0 0 124 124\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2 60.8894C2 63.1207 2.58718 65.352 3.72241 67.2701L24.313 102.932C26.4269 106.572 29.6368 109.547 33.6297 110.878C41.498 113.501 49.6403 110.135 53.5157 103.402L58.4872 94.7895L38.8752 60.8894L64.5548 16.3807C66.0423 13.7971 68.0387 11.6833 70.3875 10H38.4446C32.8468 10 27.6796 12.9751 24.9002 17.8291L3.72241 54.5086C2.58718 56.4268 2 58.6581 2 60.8894Z\" fill=\"#6363F1\"/><path d=\"M119.437 60.8892C119.437 58.6579 118.85 56.4266 117.715 54.5084L96.8499 18.377C92.9745 11.6831 84.8322 8.31655 76.9639 10.9002C72.971 12.2311 69.7611 15.2062 67.6472 18.8467L62.9497 26.9499L82.5617 60.8892L56.8822 105.398C55.3946 107.942 53.3982 110.095 51.0495 111.779H82.9923C88.5902 111.779 93.7574 108.803 96.5367 103.949L117.715 67.2699C118.85 65.3518 119.437 63.1205 119.437 60.8892Z\" fill=\"#6363F1\"/></svg>`;\n</script>\n<script>\n  function getCookie(name) {\n    const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\n    return match ? match[2] : null;\n  }\n\n  const hasDashboardCookie = getCookie('workos_homepage_dashboard_user');\n\n  const signInButton = document.getElementById('sign-in');\n  const dashboardButton = document.getElementById('dashboard');\n\n  if (hasDashboardCookie) {\n    //if(window.location.hostname == \"workos-test.com\"){\n    //dashboardButton.href = \"dashboard.workos-test.com\";\n    //}\n    if (signInButton) signInButton.style.display = 'none';\n    if (dashboardButton) dashboardButton.style.display = 'flex';\n  } else {\n    if (signInButton) signInButton.style.display = 'block';\n    if (dashboardButton) dashboardButton.style.display = 'none';\n  }\n</script>\n<script defer src=\"https://cdn.jsdelivr.net/npm/quicklink@3.0.1/dist/quicklink.umd.js\"></script>\n<script>\n  window.addEventListener('load', () => {\n    quicklink.listen();\n  });\n</script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/prism.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/components/prism-python.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/plugins/toolbar/prism-toolbar.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/plugins/unescaped-markup/prism-unescaped-markup.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/components/prism-typescript.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/showdown/2.0.1/showdown.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/plugins/normalize-whitespace/prism-normalize-whitespace.min.js\"></script>\n<link href=\"\nhttps://cdn.jsdelivr.net/npm/tippy.js@6.0.0/dist/tippy.min.css\n\" rel=\"stylesheet\">\n<script src=\"https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/tippy.js@6.0.0/dist/tippy.umd.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/medium-zoom@1.1.0/dist/medium-zoom.min.js\"></script>\n<script>\n/* Convert backticks to inline code snippets */\nif (!document.querySelector('.post-rt p code')) {\nconst converter = new showdown.Converter();\nconst paragraphs = document.querySelectorAll('.post-rt p');\nconst blockquotes = document.querySelectorAll('post-rt blockquote');\nconst listItems = document.querySelectorAll('.post-rt ul li');\n\nconvertMarkdownToHtml(paragraphs);\nconvertMarkdownToHtml(blockquotes);\nconvertMarkdownToHtml(listItems);\n\nfunction convertMarkdownToHtml(collection) {\n  collection.forEach(element => {\n\t\telement.innerHTML = converter.makeHtml(element.innerHTML)\n  })\n}\n}\n/* Add canonical URL */\nif ('') {\n  const link = document.createElement('link');\n  link.href = '';\n  link.rel = 'canonical';\n\n  document.getElementsByTagName('head')[0].appendChild(link);\n}\n\n/* Add Open Graph image */\nif ('https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/6a33dcc41842a5fa9396be02_3c0312b8-ae5e-4202-b6bb-c499186e140b%20(1).webp') {\n  const api = 'https://i.microlink.io/'\n  const cardUrl = `https://cards.microlink.io/?preset=workos&authorName=Maria Paktiti&authorUrl=https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/671f94f562311089fcaad4fb_66e854bdb169b1ca742715c4_Maria.webp&category=Guides&title=The biggest MCP spec update ships July 28: What changes for AI agent authentication&imageUrl=https://cdn.prod.website-files.com/621f84dc15b5ed16dc85a18a/6a33dcc41842a5fa9396be02_3c0312b8-ae5e-4202-b6bb-c499186e140b%20(1).webp`; \n\tconst meta = document.createElement('meta');\n\tmeta.setAttribute('property', 'custom:og');\n\tmeta.content = `${api}${encodeURIComponent(cardUrl)}`;\n\n  document.getElementsByTagName('head')[0].appendChild(meta);\n}\n</script>\n<script>\ntippy('[data-tippy-content]', {\n  theme: 'custom',\n  placement: 'bottom',\n  appendTo: 'parent',\n});\n</script>\n<script>\n  window.addEventListener('load', function() {\n    mediumZoom('.w-richtext-figure-type-image img', {\n      margin: 24,\n      background: 'rgba(0, 0, 0, 0.85)',\n      scrollOffset: 0,\n    });\n  });\n</script>\n<script>\n(()=>{const t=()=>window.innerWidth>1200;if(!t())return;const e=document.querySelectorAll(\".post-rt h2\"),n=document.querySelector(\".post-toc-wrap\"),o=document.querySelector(\".post-toc-inner\");if(e.length<2||!n)return void(o&&(o.style.display=\"none\"));const s={};e.forEach((t=>{const e=t.textContent.trim();s[e]=(s[e]||0)+1}));const r={},i=t=>{const e=t.toLowerCase().trim().replace(/^[\\d.]+\\s*/,\"\").replace(/[^a-z0-9]+/g,\"-\").replace(/(^-|-$)/g,\"\");return 1===s[t]?e:(r[t]=(r[t]||0)+1,`${e}-${r[t]}`)},c=\"introduction\",a=document.createElement(\"div\");a.classList.add(\"article-content-section\"),a.id=c,e.forEach((t=>{const e=i(t.textContent),n=document.createElement(\"div\");n.classList.add(\"article-content-section\"),n.id=e,t.parentNode.insertBefore(n,t),n.appendChild(t);let o=n.nextSibling;for(;o&&!o.matches(\"h2\");){const t=o;o=o.nextSibling,n.appendChild(t)}}));const l=document.querySelector(\".post-rt\");if(l&&(l.insertBefore(a,l.firstChild),e.length>0)){const t=e[0].parentNode;let n=l.firstChild;for(;n&&n!==t;){const t=n.nextSibling;n===a||n.matches(\"h2\")||a.appendChild(n),n=t}}const d=document.createElement(\"ul\");d.classList.add(\"toc-list\");const h=`\\n    <li class=\"toc-item active\">\\n      <a href=\"#${c}\" class=\"toc-a\">\\n        <div class=\"toc-line\"></div>\\n        <div class=\"toc-text\">\\n          <span class=\"toc-text-inner\">Introduction</span>\\n        </div>\\n      </a>\\n    </li>\\n    ${Array.from(e).map((t=>{const e=t.textContent.trim(),n=i(e);return t.parentElement.id=n,`\\n          <li class=\"toc-item\">\\n            <a href=\"#${n}\" class=\"toc-a\">\\n              <div class=\"toc-line\"></div>\\n              <div class=\"toc-text\">\\n                <span class=\"toc-text-inner\">${e}</span>\\n              </div>\\n            </a>\\n          </li>\\n        `})).join(\"\")}\\n  `;d.innerHTML=h,o.appendChild(d);const m=d.querySelector(`a[href=\"#${c}\"]`);m.addEventListener(\"click\",(t=>{t.preventDefault(),window.scrollTo({top:0,behavior:\"smooth\"}),y(a)}));let u=m;const p=o.querySelectorAll(\".toc-a\");requestAnimationFrame((()=>{const t=o.offsetHeight;o.style.setProperty(\"--initial-toc-height\",`${t}px`),p.forEach((t=>{const e=t.offsetHeight,n=t.querySelector(\".toc-text-inner\").offsetWidth;t.style.setProperty(\"--expanded-link-height\",`${e}px`),t.style.setProperty(\"--expanded-link-width\",`${n}`)})),o&&(o.style.opacity=\"1\")}));const f=document.querySelectorAll(\".article-content-section\");let g,v=!1;const y=t=>{if(!t)return;const e=n.querySelector(`a[href=\"#${t.id}\"]`);e!==u&&requestAnimationFrame((()=>{var t;u&&(null==(t=u.closest(\".toc-item\"))||t.classList.remove(\"active\")),requestAnimationFrame((()=>{var t;e&&(null==(t=e.closest(\".toc-item\"))||t.classList.add(\"active\"),u=e)}))}))};n.addEventListener(\"click\",(t=>{t.stopPropagation();const e=t.target.closest(\"a\");if(!e||!e.hash)return;if(e.hash===`#${c}`)return;t.preventDefault();const n=document.querySelector(e.hash);n&&(v=!0,clearTimeout(g),g=setTimeout((()=>{v=!1}),2e3),n.scrollIntoView({behavior:\"smooth\"}),y(n))}));const x=new IntersectionObserver((t=>{if(v)return;const e=t.sort(((t,e)=>t.target.getBoundingClientRect().top-e.target.getBoundingClientRect().top));for(const n of e){const{isIntersecting:t,target:e,boundingClientRect:o,rootBounds:s}=n;if(s&&!(s.bottom-o.bottom>s.bottom/2)){if(t){y(e);break}{const t=Array.from(f),n=t.indexOf(e);if(o.top>0){const e=t[Math.max(n-1,0)];y(e);break}}}}}),{threshold:[0],rootMargin:\"0% 0% -50% 0%\"});requestAnimationFrame((()=>{document.documentElement.style.scrollBehavior=\"smooth\"})),f.forEach((t=>{x.observe(t)}));const L=document.querySelector(\".article-header h1\");if(L){new IntersectionObserver((([t])=>{o.classList.toggle(\"toc-collapsed\",!t.isIntersecting)}),{threshold:0,rootMargin:\"0px 0px 0px 0px\"}).observe(L)}o.addEventListener(\"mouseenter\",(()=>{o.classList.contains(\"toc-collapsed\")&&(o.classList.add(\"transitioning\"),setTimeout((()=>{o.classList.remove(\"transitioning\")}),250))})),window.addEventListener(\"resize\",(()=>{const e=t();!e&&o?o.style.display=\"none\":e&&o&&(o.style.display=\"\")}))})();const t=document.querySelector(\".post-rt\");if(t){const e=t.getElementsByTagName(\"p\");Array.from(e).forEach((t=>{const e=t.innerHTML,n=t.textContent;n.startsWith(\"!!\")&&n.endsWith(\"!!\")&&e.startsWith(\"!!\")&&e.endsWith(\"!!\")&&(t.innerHTML=e.slice(2,-2),t.classList.add(\"article-note\"))}))}\n</script>\n<script>\n(function () {\n  // Build a summarization prompt from this page\n  const pageTitle = \"The biggest MCP spec update ships July 28: What changes for AI agent authentication\";\n  const pageUrl = \"https://workos.com/blog/mcp-2026-spec-agent-authentication\";\n\n  const prompt =\n`Read this article: ${pageUrl}. In a short paragraph, tell me what it's about, what's new or interesting about it, and whether it's worth reading in full.`;\n\n  const encodedPrompt = encodeURIComponent(prompt);\n\n  // Deep links\n  const chatgptLink = `https://chatgpt.com/?q=${encodedPrompt}`;\n  const claudeLink = `https://claude.ai/new?q=${encodedPrompt}`;\n  const perplexityLink = `https://www.perplexity.ai/?q=${encodedPrompt}`;\n\n  // Attach to buttons\n  const chatgptButton = document.getElementById(\"summarize-chatgpt\");\n  const claudeButton = document.getElementById(\"summarize-claude\");\n  const perplexityButton = document.getElementById(\"summarize-perplexity\");\n\n  if (chatgptButton) chatgptButton.href = chatgptLink;\n  if (claudeButton) claudeButton.href = claudeLink;\n  if (perplexityButton) perplexityButton.href = perplexityLink;\n})();\n</script></body></html><!--/$-->","snapshot_chars":139832,"live_check":"changed"},{"url":"https://stacktr.ee/blog/mcp-2026-spec-changes","committed_hash":"sha256:32453a21023ab276d1dd639fd12a3a186a152ef237c28924b02dbb111cdb4094","committed_hash_short":"sha256:32453a21…1cdb4094","mime_type":"text/html","committed_at":"2026-07-28T00:00:21.624151+00:00","content_snapshot":"<!DOCTYPE html><html lang=\"en\" class=\"dark scheme-only-dark\"> <head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta name=\"theme-color\" content=\"#0b0d10\"><link rel=\"icon\" href=\"/favicon.svg\" type=\"image/svg+xml\"><meta name=\"slack-app-id\" content=\"A0B9XJXAH1Q\"><title>MCP 2026-07-28 spec: what changed, what breaks · Stacktree</title><meta name=\"description\" content=\"The final MCP 2026-07-28 specification explained: stateless core, MCP Apps, Tasks, elicitation, sampling, caching. What breaks, what stays backward compatible, and how to migrate.\"><link rel=\"canonical\" href=\"https://stacktr.ee/blog/mcp-2026-spec-changes\"><link rel=\"alternate\" type=\"application/atom+xml\" title=\"Stacktree blog + changelog\" href=\"/feed.xml\"><link rel=\"ai-catalog\" type=\"application/json\" href=\"/.well-known/ai-catalog.json\"><meta name=\"robots\" content=\"max-image-preview:large, max-snippet:-1, max-video-preview:-1\"><meta name=\"article:published_time\" content=\"2026-05-30\"><meta name=\"article:modified_time\" content=\"2026-07-28\"><link rel=\"preload\" as=\"font\" type=\"font/woff2\" href=\"https://rsms.me/inter/font-files/InterVariable.woff2\" crossorigin=\"anonymous\"><link rel=\"preconnect\" href=\"https://rsms.me\" crossorigin><meta property=\"og:type\" content=\"website\"><meta property=\"og:site_name\" content=\"Stacktree\"><meta property=\"og:title\" content=\"MCP 2026-07-28 spec: what changed, what breaks · Stacktree\"><meta property=\"og:description\" content=\"The final MCP 2026-07-28 specification explained: stateless core, MCP Apps, Tasks, elicitation, sampling, caching. What breaks, what stays backward compatible, and how to migrate.\"><meta property=\"og:url\" content=\"https://stacktr.ee/blog/mcp-2026-spec-changes\"><meta property=\"og:image\" content=\"https://stacktr.ee/og.png\"><meta property=\"og:image:width\" content=\"1200\"><meta property=\"og:image:height\" content=\"630\"><meta property=\"og:image:type\" content=\"image/png\"><meta property=\"og:image:alt\" content=\"MCP 2026-07-28 spec: what changed, what breaks\"><meta name=\"twitter:card\" content=\"summary_large_image\"><meta name=\"twitter:title\" content=\"MCP 2026-07-28 spec: what changed, what breaks · Stacktree\"><meta name=\"twitter:description\" content=\"The final MCP 2026-07-28 specification explained: stateless core, MCP Apps, Tasks, elicitation, sampling, caching. What breaks, what stays backward compatible, and how to migrate.\"><meta name=\"twitter:image\" content=\"https://stacktr.ee/og.png\"><meta name=\"twitter:image:alt\" content=\"MCP 2026-07-28 spec: what changed, what breaks\"><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"Stacktree\",\"url\":\"https://stacktr.ee\",\"logo\":\"https://stacktr.ee/favicon.svg\",\"description\":\"When your agent emits HTML — specs, PR writeups, status reports, custom editors — Stacktree is the private link you share. Unguessable by default, replace-in-place, MCP-native.\",\"sameAs\":[\"https://www.npmjs.com/package/stacktree-mcp\"]}</script><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"headline\":\"MCP 2026-07-28 spec: what changed, what breaks\",\"description\":\"The final MCP 2026-07-28 specification explained: stateless core, MCP Apps, Tasks, elicitation, sampling, caching. What breaks, what stays backward compatible, and how to migrate.\",\"url\":\"https://stacktr.ee/blog/mcp-2026-spec-changes\",\"datePublished\":\"2026-05-30\",\"dateModified\":\"2026-07-28\",\"author\":{\"@type\":\"Person\",\"name\":\"Steve Smith\",\"url\":\"https://stacktr.ee/about\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https://stacktr.ee/about/steve.jpg\",\"width\":800,\"height\":800},\"jobTitle\":\"Founder, Stacktree\",\"worksFor\":{\"@type\":\"Organization\",\"name\":\"Stacktree\",\"url\":\"https://stacktr.ee\"},\"knowsAbout\":[\"Model Context Protocol\",\"Static site hosting\",\"AI agent infrastructure\",\"Cloudflare Workers\",\"Content security policy\",\"Answer Engine Optimization\"],\"sameAs\":[\"https://www.npmjs.com/~stacktree\",\"https://github.com/stevy\",\"https://x.com/stacktree\",\"https://www.linkedin.com/in/steve-smith-stacktree\"]},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Stacktree\",\"url\":\"https://stacktr.ee\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://stacktr.ee/favicon.svg\",\"width\":512,\"height\":512}},\"proficiencyLevel\":\"Intermediate\",\"about\":{\"@type\":\"Thing\",\"name\":\"Model Context Protocol\"},\"keywords\":[\"MCP specification\",\"2026-07-28\",\"Model Context Protocol\",\"stateless MCP\",\"MCP Apps\",\"MCP Tasks\",\"elicitation\",\"sampling\",\"SEP\"]}</script><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://stacktr.ee/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://stacktr.ee/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"2026-07 MCP spec\",\"item\":\"https://stacktr.ee/blog/mcp-2026-spec-changes\"}]}</script><script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"MCP 2026-07-28 spec: what changed, what breaks · Stacktree\",\"description\":\"The final MCP 2026-07-28 specification explained: stateless core, MCP Apps, Tasks, elicitation, sampling, caching. What breaks, what stays backward compatible, and how to migrate.\",\"url\":\"https://stacktr.ee/blog/mcp-2026-spec-changes\",\"inLanguage\":\"en\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"Stacktree\",\"url\":\"https://stacktr.ee\"},\"datePublished\":\"2026-05-30\",\"dateModified\":\"2026-07-28\",\"author\":{\"@type\":\"Person\",\"name\":\"Steve Smith\",\"url\":\"https://stacktr.ee/about\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https://stacktr.ee/about/steve.jpg\",\"width\":800,\"height\":800},\"jobTitle\":\"Founder, Stacktree\",\"worksFor\":{\"@type\":\"Organization\",\"name\":\"Stacktree\",\"url\":\"https://stacktr.ee\"},\"knowsAbout\":[\"Model Context Protocol\",\"Static site hosting\",\"AI agent infrastructure\",\"Cloudflare Workers\",\"Content security policy\",\"Answer Engine Optimization\"],\"sameAs\":[\"https://www.npmjs.com/~stacktree\",\"https://github.com/stevy\",\"https://x.com/stacktree\",\"https://www.linkedin.com/in/steve-smith-stacktree\"]},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Stacktree\",\"url\":\"https://stacktr.ee\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://stacktr.ee/favicon.svg\",\"width\":512,\"height\":512}},\"speakable\":{\"@type\":\"SpeakableSpecification\",\"cssSelector\":[\"h1\",\"[data-speakable]\",\"[data-aeo-answer]\"]}}</script><noscript><style>\n        [data-reveal] { opacity: 1 !important; transform: none !important; }\n      </style></noscript><style>*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:\"\"}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter Variable,ui-sans-serif,system-ui,-apple-system,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root,.dark{--background:220 13% 7%;--foreground:220 7% 91%;--card:220 11% 11%;--card-foreground:220 7% 91%;--popover:220 11% 11%;--popover-foreground:220 7% 91%;--primary:156 72% 67%;--primary-foreground:220 13% 7%;--secondary:220 10% 17%;--secondary-foreground:220 7% 91%;--muted:220 10% 14%;--muted-foreground:220 5% 60%;--accent:156 72% 67%;--accent-foreground:220 13% 7%;--destructive:0 70% 60%;--destructive-foreground:0 0% 100%;--border:220 10% 100% / .06;--input:220 10% 100% / .1;--ring:156 72% 67%;--brand:156 72% 67%;--brand-foreground:220 13% 7%;--brand-soft:156 72% 67% / .1;--radius:.625rem;color-scheme:dark}*{border-color:hsl(var(--border))}html,body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"cv02\", \"cv03\", \"cv04\", \"cv11\", \"ss01\", \"ss03\"}::selection{background:hsl(var(--brand) / .3);color:hsl(var(--foreground))}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border:2px solid hsl(var(--background));background:#ffffff14;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--brand) / .35)}html{scrollbar-color:#ffffff1f transparent;scrollbar-width:thin}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px;border-radius:var(--radius)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}table:not([class]){text-align:left;border-collapse:separate;border-spacing:0;background:hsl(var(--card) / .4);border-radius:.75rem;width:100%;margin-block:1.75rem;font-size:.90625rem;line-height:1.45;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff1a}table:not([class]) thead{background:#ffffff08}table:not([class]) th{letter-spacing:.05em;text-transform:uppercase;color:hsl(var(--muted-foreground));white-space:nowrap;vertical-align:bottom;padding:.7rem 1.15rem;font-size:.6875rem;font-weight:600}table:not([class]) td{vertical-align:top;color:hsl(var(--muted-foreground));overflow-wrap:break-word;border-top:1px solid #ffffff0d;padding:.7rem 1.15rem}table:not([class]) td:first-child{color:hsl(var(--foreground));font-weight:500}table:not([class]) tbody tr{transition:background-color .12s}table:not([class]) tbody tr:hover td{background:#ffffff05}@media (prefers-reduced-motion:reduce){table:not([class]) tbody tr{transition:none}}.skip-link{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-radius:var(--radius);z-index:100;padding:.5rem .75rem;font-size:.875rem;font-weight:500;transition:transform .15s;position:absolute;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.container{width:100%;margin-left:auto;margin-right:auto;padding-left:1.25rem;padding-right:1.25rem}@media (width>=1200px){.container{max-width:1200px}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-2{inset:-.5rem}.-inset-px{inset:-1px}.inset-0{inset:0}.-inset-x-8{left:-2rem;right:-2rem}.-inset-y-10{top:-2.5rem;bottom:-2.5rem}.inset-x-0{left:0;right:0}.inset-x-12{left:3rem;right:3rem}.inset-x-\\[8\\%\\]{left:8%;right:8%}.-bottom-6{bottom:-1.5rem}.-left-10{left:-2.5rem}.-left-2{left:-.5rem}.-right-1{right:-.25rem}.-right-1\\.5{right:-.375rem}.-right-6{right:-1.5rem}.-top-1{top:-.25rem}.-top-1\\.5{top:-.375rem}.-top-10{top:-2.5rem}.-top-2{top:-.5rem}.-top-2\\.5{top:-.625rem}.-top-3{top:-.75rem}.bottom-4{bottom:1rem}.bottom-\\[-2\\%\\]{bottom:-2%}.bottom-full{bottom:100%}.left-1\\/2{left:50%}.right-2{right:.5rem}.right-4{right:1rem}.right-\\[4\\%\\]{right:4%}.top-0{top:0}.top-1\\/2{top:50%}.top-\\[26\\%\\]{top:26%}.top-\\[34\\%\\]{top:34%}.-z-10{z-index:-10}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-\\[1px\\]{margin-top:1px}.mt-\\[2px\\]{margin-top:2px}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-\\[39\\/52\\]{aspect-ratio:39/52}.aspect-video{aspect-ratio:16/9}.size-1\\.5{width:.375rem;height:.375rem}.size-2\\.5{width:.625rem;height:.625rem}.size-3\\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-7{width:1.75rem;height:1.75rem}.h-0\\.5{height:.125rem}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\\.5{height:.875rem}.h-4{height:1rem}.h-44{height:11rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[1\\.05em\\]{height:1.05em}.h-\\[120px\\]{height:120px}.h-\\[14px\\]{height:14px}.h-\\[15px\\]{height:15px}.h-\\[248px\\]{height:248px}.h-\\[52px\\]{height:52px}.h-\\[6\\.5\\%\\]{height:6.5%}.h-\\[6px\\]{height:6px}.h-\\[93\\.5\\%\\]{height:93.5%}.h-full{height:100%}.h-px{height:1px}.min-h-0{min-height:0}.min-h-\\[208px\\]{min-height:208px}.min-h-\\[220px\\]{min-height:220px}.min-h-\\[280px\\]{min-height:280px}.min-h-\\[340px\\]{min-height:340px}.min-h-\\[420px\\]{min-height:420px}.min-h-dvh{min-height:100dvh}.w-1{width:.25rem}.w-1\\.5{width:.375rem}.w-1\\/2{width:50%}.w-1\\/3{width:33.3333%}.w-10{width:2.5rem}.w-11\\/12{width:91.6667%}.w-16{width:4rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-2\\/3{width:66.6667%}.w-28{width:7rem}.w-3{width:.75rem}.w-3\\.5{width:.875rem}.w-3\\/4{width:75%}.w-4{width:1rem}.w-4\\/5{width:80%}.w-44{width:11rem}.w-5\\/6{width:83.3333%}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\\[0\\.55ch\\]{width:.55ch}.w-\\[120px\\]{width:120px}.w-\\[14px\\]{width:14px}.w-\\[24\\%\\]{width:24%}.w-\\[320px\\]{width:320px}.w-\\[46\\%\\]{width:46%}.w-\\[62\\%\\]{width:62%}.w-\\[7px\\]{width:7px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\\[760px\\]{min-width:760px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-\\[24ch\\]{max-width:24ch}.max-w-\\[26ch\\]{max-width:26ch}.max-w-\\[28ch\\]{max-width:28ch}.max-w-\\[30ch\\]{max-width:30ch}.max-w-\\[32ch\\]{max-width:32ch}.max-w-\\[42ch\\]{max-width:42ch}.max-w-\\[44ch\\]{max-width:44ch}.max-w-\\[52ch\\]{max-width:52ch}.max-w-\\[58ch\\]{max-width:58ch}.max-w-\\[64ch\\]{max-width:64ch}.max-w-\\[660px\\]{max-width:660px}.max-w-\\[68ch\\]{max-width:68ch}.max-w-\\[720px\\]{max-width:720px}.max-w-\\[760px\\]{max-width:760px}.max-w-\\[880px\\]{max-width:880px}.max-w-full{max-width:100%}.max-w-xl{max-width:36rem}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-top-left{transform-origin:0 0}.-translate-x-1\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[0\\.18em\\]{--tw-translate-y:.18em;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[2px\\]{--tw-translate-y:2px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[1\\.01\\]{--tw-scale-x:1.01;--tw-scale-y:1.01;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce-down{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.animate-bounce-down{animation:1.6s ease-in-out infinite bounce-down}@keyframes caret{0%,49%{opacity:1}50%,to{opacity:0}}.animate-caret{animation:1s steps(2,end) infinite caret}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-fade-up{animation:.4s ease-out forwards fade-up}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping{animation:1s cubic-bezier(0,0,.2,1) infinite ping}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse-soft{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.04)}}.animate-pulse-soft{animation:3.5s ease-in-out infinite pulse-soft}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.select-none{user-select:none}.resize-y{resize:vertical}.resize{resize:both}.scroll-mt-20{scroll-margin-top:5rem}.scroll-mt-24{scroll-margin-top:6rem}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[6ch_1fr\\]{grid-template-columns:6ch 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-14{gap:3.5rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\\.5{row-gap:.375rem}.gap-y-3{row-gap:.75rem}.gap-y-8{row-gap:2rem}.space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-white\\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-wrap{text-wrap:wrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.border{border-width:1px}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-brand\\/50{border-color:hsl(var(--brand) / .5)}.border-emerald-300\\/30{border-color:#6ee7b74d}.border-emerald-300\\/80{border-color:#6ee7b7cc}.border-emerald-400\\/10{border-color:#34d3991a}.border-primary{border-color:hsl(var(--primary))}.border-primary\\/30{border-color:hsl(var(--primary) / .3)}.border-transparent{border-color:#0000}.border-white\\/10{border-color:#ffffff1a}.border-white\\/15{border-color:#ffffff26}.border-white\\/5{border-color:#ffffff0d}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.bg-\\[\\#101319\\]{--tw-bg-opacity:1;background-color:rgb(16 19 25/var(--tw-bg-opacity,1))}.bg-\\[\\#121016\\]{--tw-bg-opacity:1;background-color:rgb(18 16 22/var(--tw-bg-opacity,1))}.bg-\\[\\#19171d\\]{--tw-bg-opacity:1;background-color:rgb(25 23 29/var(--tw-bg-opacity,1))}.bg-\\[\\#1a1d21\\]{--tw-bg-opacity:1;background-color:rgb(26 29 33/var(--tw-bg-opacity,1))}.bg-\\[\\#222529\\]{--tw-bg-opacity:1;background-color:rgb(34 37 41/var(--tw-bg-opacity,1))}.bg-\\[\\#26292e\\]{--tw-bg-opacity:1;background-color:rgb(38 41 46/var(--tw-bg-opacity,1))}.bg-\\[\\#28c840\\]\\/70{background-color:#28c840b3}.bg-\\[\\#5d3a66\\]\\/60{background-color:#5d3a6699}.bg-\\[\\#7aa7f0\\]\\/80{background-color:#7aa7f0cc}.bg-\\[\\#febc2e\\]\\/70{background-color:#febc2eb3}.bg-\\[\\#ff5f57\\]\\/70{background-color:#ff5f57b3}.bg-amber-400\\/15{background-color:#fbbf2426}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-amber-500\\/60{background-color:#f59e0b99}.bg-amber-500\\/70{background-color:#f59e0bb3}.bg-background\\/0{background-color:hsl(var(--background) / 0)}.bg-background\\/40{background-color:hsl(var(--background) / .4)}.bg-background\\/80{background-color:hsl(var(--background) / .8)}.bg-black\\/20{background-color:#0003}.bg-black\\/30{background-color:#0000004d}.bg-black\\/40{background-color:#0006}.bg-black\\/50{background-color:#00000080}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-brand{background-color:hsl(var(--brand))}.bg-brand\\/10{background-color:hsl(var(--brand) / .1)}.bg-brand\\/15{background-color:hsl(var(--brand) / .15)}.bg-brand\\/60{background-color:hsl(var(--brand) / .6)}.bg-brand\\/70{background-color:hsl(var(--brand) / .7)}.bg-brand\\/\\[0\\.05\\]{background-color:hsl(var(--brand) / .05)}.bg-brand\\/\\[0\\.06\\]{background-color:hsl(var(--brand) / .06)}.bg-brand\\/\\[0\\.08\\]{background-color:hsl(var(--brand) / .08)}.bg-brand\\/\\[0\\.10\\]{background-color:hsl(var(--brand) / .1)}.bg-brand\\/\\[0\\.12\\]{background-color:hsl(var(--brand) / .12)}.bg-card{background-color:hsl(var(--card))}.bg-card\\/20{background-color:hsl(var(--card) / .2)}.bg-card\\/30{background-color:hsl(var(--card) / .3)}.bg-card\\/40{background-color:hsl(var(--card) / .4)}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity,1))}.bg-emerald-300\\/20{background-color:#6ee7b733}.bg-emerald-300\\/25{background-color:#6ee7b740}.bg-emerald-300\\/70{background-color:#6ee7b7b3}.bg-emerald-300\\/80{background-color:#6ee7b7cc}.bg-emerald-300\\/90{background-color:#6ee7b7e6}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity,1))}.bg-emerald-400\\/10{background-color:#34d3991a}.bg-emerald-400\\/15{background-color:#34d39926}.bg-emerald-400\\/80{background-color:#34d399cc}.bg-emerald-400\\/90{background-color:#34d399e6}.bg-emerald-400\\/\\[0\\.06\\]{background-color:#34d3990f}.bg-emerald-400\\/\\[0\\.07\\]{background-color:#34d39912}.bg-emerald-400\\/\\[0\\.08\\]{background-color:#34d39914}.bg-emerald-400\\/\\[0\\.10\\]{background-color:#34d3991a}.bg-emerald-500\\/10{background-color:#10b9811a}.bg-emerald-500\\/60{background-color:#10b98199}.bg-emerald-500\\/70{background-color:#10b981b3}.bg-emerald-500\\/\\[0\\.04\\]{background-color:#10b9810a}.bg-orange-400\\/15{background-color:#fb923c26}.bg-primary{background-color:hsl(var(--primary))}.bg-red-400\\/15{background-color:#f8717126}.bg-red-500\\/10{background-color:#ef44441a}.bg-red-500\\/60{background-color:#ef444499}.bg-red-500\\/70{background-color:#ef4444b3}.bg-rose-400\\/10{background-color:#fb71851a}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-rose-500\\/15{background-color:#f43f5e26}.bg-sky-400\\/10{background-color:#38bdf81a}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.bg-teal-600\\/70{background-color:#0d9488b3}.bg-teal-600\\/80{background-color:#0d9488cc}.bg-transparent{background-color:#0000}.bg-violet-400\\/10{background-color:#a78bfa1a}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\\/10{background-color:#ffffff1a}.bg-white\\/15{background-color:#ffffff26}.bg-white\\/20{background-color:#fff3}.bg-white\\/5{background-color:#ffffff0d}.bg-white\\/\\[0\\.015\\]{background-color:#ffffff04}.bg-white\\/\\[0\\.02\\]{background-color:#ffffff05}.bg-white\\/\\[0\\.03\\]{background-color:#ffffff08}.bg-white\\/\\[0\\.04\\]{background-color:#ffffff0a}.bg-white\\/\\[0\\.05\\]{background-color:#ffffff0d}.bg-white\\/\\[0\\.06\\]{background-color:#ffffff0f}.bg-white\\/\\[0\\.07\\]{background-color:#ffffff12}.bg-white\\/\\[0\\.09\\]{background-color:#ffffff17}.bg-white\\/\\[0\\.14\\]{background-color:#ffffff24}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity,1))}.bg-zinc-950\\/50{background-color:#09090b80}.bg-zinc-950\\/60{background-color:#09090b99}.bg-zinc-950\\/80{background-color:#09090bcc}.bg-\\[radial-gradient\\(circle_at_30\\%_70\\%\\,rgba\\(110\\,231\\,183\\,0\\.25\\)\\,transparent_60\\%\\)\\]{background-image:radial-gradient(circle at 30% 70%,#6ee7b740,#0000 60%)}.bg-gradient-to-b{background-image:linear-gradient(to bottom, var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right, var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right, var(--tw-gradient-stops))}.from-brand\\/0{--tw-gradient-from:hsl(var(--brand) / 0) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-brand\\/20{--tw-gradient-from:hsl(var(--brand) / .2) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-brand\\/\\[0\\.04\\]{--tw-gradient-from:hsl(var(--brand) / .04) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-brand\\/\\[0\\.06\\]{--tw-gradient-from:hsl(var(--brand) / .06) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-brand\\/\\[0\\.10\\]{--tw-gradient-from:hsl(var(--brand) / .1) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-300{--tw-gradient-from:#6ee7b7 var(--tw-gradient-from-position);--tw-gradient-to:#6ee7b700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-400\\/20{--tw-gradient-from:#34d39933 var(--tw-gradient-from-position);--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-400\\/\\[0\\.10\\]{--tw-gradient-from:#34d3991a var(--tw-gradient-from-position);--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-400\\/20{--tw-gradient-from:#fb923c33 var(--tw-gradient-from-position);--tw-gradient-to:#fb923c00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-brand{--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), hsl(var(--brand)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-brand\\/70{--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), hsl(var(--brand) / .7) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-brand\\/\\[0\\.04\\]{--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), hsl(var(--brand) / .04) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-brand\\/\\[0\\.06\\]{--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), hsl(var(--brand) / .06) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-emerald-400\\/70{--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #34d399b3 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-emerald-400\\/\\[0\\.03\\]{--tw-gradient-to:#34d39900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #34d39908 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\\/10{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #ffffff1a var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-brand\\/0{--tw-gradient-to:hsl(var(--brand) / 0) var(--tw-gradient-to-position)}.to-brand\\/\\[0\\.08\\]{--tw-gradient-to:hsl(var(--brand) / .08) var(--tw-gradient-to-position)}.to-card{--tw-gradient-to:hsl(var(--card)) var(--tw-gradient-to-position)}.to-card\\/40{--tw-gradient-to:hsl(var(--card) / .4) var(--tw-gradient-to-position)}.to-emerald-400\\/0{--tw-gradient-to:#34d39900 var(--tw-gradient-to-position)}.to-orange-400\\/0{--tw-gradient-to:#fb923c00 var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to:#14b8a6 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.fill-emerald-300\\/10{fill:#6ee7b71a}.fill-none{fill:none}.fill-white\\/\\[0\\.06\\]{fill:#ffffff0f}.stroke-emerald-300\\/30{stroke:#6ee7b74d}.stroke-emerald-300\\/70{stroke:#6ee7b7b3}.stroke-white\\/15{stroke:#ffffff26}.stroke-white\\/20{stroke:#fff3}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-1{padding-left:.25rem}.pl-10{padding-left:2.5rem}.pl-4{padding-left:1rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-0{padding-top:0}.pt-10{padding-top:2.5rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\\[0\\.75rem\\]{font-size:.75rem}.text-\\[0\\.875em\\]{font-size:.875em}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13\\.5px\\]{font-size:13.5px}.text-\\[13px\\]{font-size:13px}.text-\\[14px\\]{font-size:14px}.text-\\[15px\\]{font-size:15px}.text-\\[16\\.5px\\]{font-size:16.5px}.text-\\[16px\\]{font-size:16px}.text-\\[17px\\]{font-size:17px}.text-\\[18px\\]{font-size:18px}.text-\\[19px\\]{font-size:19px}.text-\\[20px\\]{font-size:20px}.text-\\[44px\\]{font-size:44px}.text-\\[7px\\]{font-size:7px}.text-\\[8px\\]{font-size:8px}.text-\\[9px\\]{font-size:9px}.text-\\[clamp\\(18px\\,2\\.2vw\\,22px\\)\\]{font-size:clamp(18px,2.2vw,22px)}.text-\\[clamp\\(20px\\,2\\.4vw\\,26px\\)\\]{font-size:clamp(20px,2.4vw,26px)}.text-\\[clamp\\(22px\\,2\\.6vw\\,28px\\)\\]{font-size:clamp(22px,2.6vw,28px)}.text-\\[clamp\\(22px\\,2\\.8vw\\,30px\\)\\]{font-size:clamp(22px,2.8vw,30px)}.text-\\[clamp\\(22px\\,3vw\\,30px\\)\\]{font-size:clamp(22px,3vw,30px)}.text-\\[clamp\\(24px\\,3vw\\,32px\\)\\]{font-size:clamp(24px,3vw,32px)}.text-\\[clamp\\(26px\\,4vw\\,40px\\)\\]{font-size:clamp(26px,4vw,40px)}.text-\\[clamp\\(28px\\,3\\.4vw\\,40px\\)\\]{font-size:clamp(28px,3.4vw,40px)}.text-\\[clamp\\(28px\\,3\\.6vw\\,40px\\)\\]{font-size:clamp(28px,3.6vw,40px)}.text-\\[clamp\\(28px\\,4\\.4vw\\,44px\\)\\]{font-size:clamp(28px,4.4vw,44px)}.text-\\[clamp\\(36px\\,5\\.5vw\\,56px\\)\\]{font-size:clamp(36px,5.5vw,56px)}.text-\\[clamp\\(40px\\,6\\.5vw\\,68px\\)\\]{font-size:clamp(40px,6.5vw,68px)}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\\[1\\.02\\]{line-height:1.02}.leading-\\[1\\.05\\]{line-height:1.05}.leading-\\[1\\.08\\]{line-height:1.08}.leading-\\[1\\.1\\]{line-height:1.1}.leading-\\[1\\.65\\]{line-height:1.65}.leading-\\[1\\.7\\]{line-height:1.7}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-\\[-0\\.025em\\]{letter-spacing:-.025em}.tracking-\\[-0\\.02em\\]{letter-spacing:-.02em}.tracking-\\[0\\.16em\\]{letter-spacing:.16em}.tracking-\\[0\\.18em\\]{letter-spacing:.18em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\\[\\#6cb0f5\\]{--tw-text-opacity:1;color:rgb(108 176 245/var(--tw-text-opacity,1))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-brand{color:hsl(var(--brand))}.text-brand-foreground{color:hsl(var(--brand-foreground))}.text-brand\\/80{color:hsl(var(--brand) / .8)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity,1))}.text-emerald-200\\/80{color:#a7f3d0cc}.text-emerald-200\\/90{color:#a7f3d0e6}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-300\\/70{color:#6ee7b7b3}.text-emerald-300\\/80{color:#6ee7b7cc}.text-emerald-300\\/90{color:#6ee7b7e6}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-emerald-400\\/70{color:#34d399b3}.text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\\/70{color:hsl(var(--foreground) / .7)}.text-foreground\\/80{color:hsl(var(--foreground) / .8)}.text-foreground\\/85{color:hsl(var(--foreground) / .85)}.text-foreground\\/90{color:hsl(var(--foreground) / .9)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\\/70{color:hsl(var(--muted-foreground) / .7)}.text-muted-foreground\\/80{color:hsl(var(--muted-foreground) / .8)}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity,1))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\\/70{color:hsl(var(--primary) / .7)}.text-primary\\/90{color:hsl(var(--primary) / .9)}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\\/30{color:#ffffff4d}.text-white\\/40{color:#fff6}.text-white\\/50{color:#ffffff80}.text-white\\/55{color:#ffffff8c}.text-white\\/60{color:#fff9}.text-white\\/70{color:#ffffffb3}.text-white\\/80{color:#fffc}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.decoration-white\\/20{text-decoration-color:#fff3}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.\\!opacity-100{opacity:1!important}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-\\[0\\.06\\]{opacity:.06}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_-18px_60px_rgba\\(0\\,0\\,0\\,0\\.6\\)\\]{--tw-shadow:0 -18px 60px #0009;--tw-shadow-colored:0 -18px 60px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_0_0_8px_hsl\\(var\\(--brand\\)\\/0\\.05\\)\\]{--tw-shadow:0 0 0 8px hsl(var(--brand)/.05);--tw-shadow-colored:0 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_10px_30px_rgba\\(0\\,0\\,0\\,0\\.4\\)\\]{--tw-shadow:0 10px 30px #0006;--tw-shadow-colored:0 10px 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_16px_40px_rgba\\(0\\,0\\,0\\,0\\.55\\)\\]{--tw-shadow:0 16px 40px #0000008c;--tw-shadow-colored:0 16px 40px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_18px_50px_rgba\\(0\\,0\\,0\\,0\\.45\\)\\]{--tw-shadow:0 18px 50px #00000073;--tw-shadow-colored:0 18px 50px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_20px_60px_-30px_rgba\\(0\\,0\\,0\\,0\\.65\\)\\]{--tw-shadow:0 20px 60px -30px #000000a6;--tw-shadow-colored:0 20px 60px -30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\\[0_24px_70px_rgba\\(0\\,0\\,0\\,0\\.5\\)\\]{--tw-shadow:0 24px 70px #00000080;--tw-shadow-colored:0 24px 70px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-brand\\/30{--tw-shadow-color:hsl(var(--brand) / .3);--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-emerald-400\\/15{--tw-ring-color:#34d39926}.ring-white\\/10{--tw-ring-color:#ffffff1a}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-2xl{--tw-blur:blur(40px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-\\[0_1px_2px_rgba\\(0\\,0\\,0\\,0\\.6\\)\\]{--tw-drop-shadow:drop-shadow(0 1px 2px #0009);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[filter\\,opacity\\]{transition-property:filter,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-transform{will-change:transform}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-150{animation-duration:.15s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.glow-brand{background:radial-gradient(60% 60% at 85% 15%, hsl(var(--brand) / .16), transparent 70%), radial-gradient(50% 50% at 10% 95%, hsl(var(--brand) / .08), transparent 70%)}[role=tab] .live{opacity:0;transition:opacity .15s}[role=tab][data-state=active] .live{opacity:1}.faq-trigger[data-state=open] .faq-icon{background:hsl(var(--brand) / .15);color:hsl(var(--primary))}.install-pill.is-copied{background-color:#22c3731a;box-shadow:inset 0 0 0 1px #52e09973,0 0 0 4px #26d9801a}@media (prefers-reduced-motion:reduce){.install-pill{transition:none}}[data-reveal]{opacity:0;transition:opacity .5s ease-out,transform .5s ease-out;transition-delay:var(--reveal-delay,0s);transform:translateY(8px)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}@font-face{font-family:Inter Variable;font-style:normal;font-weight:100 900;font-display:swap;src:url(https://rsms.me/inter/font-files/InterVariable.woff2)format(\"woff2-variations\")}[data-stk-launcher]{z-index:40;color:hsl(var(--foreground));background:hsl(var(--card) / .85);border:1px solid hsl(var(--brand) / .35);backdrop-filter:blur(8px);cursor:pointer;border-radius:9999px;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.8125rem;font-weight:500;transition:border-color .15s,transform .15s,background .15s;display:inline-flex;position:fixed;bottom:1rem;right:1rem;box-shadow:0 8px 28px #00000073,0 0 0 1px #0003}[data-stk-launcher]:hover{background:hsl(var(--card));border-color:hsl(var(--brand) / .6);transform:translateY(-1px)}[data-stk-launcher] svg{color:hsl(var(--brand))}[data-stk-launcher-kbd]{font:inherit;color:hsl(var(--muted-foreground));background:hsl(var(--foreground) / .06);border:1px solid hsl(var(--foreground) / .08);border-radius:.3rem;padding:.05rem .35rem;font-size:.6875rem}@media (width<=640px){[data-stk-launcher-text]{display:none}}[cmdk-overlay]{z-index:50;backdrop-filter:blur(3px);background:#090a0c99;position:fixed;inset:0}[cmdk-dialog]{z-index:51;width:min(640px,100vw - 2rem);position:fixed;top:14vh;left:50%;transform:translate(-50%)}[cmdk-root]{background:hsl(var(--card));border:1px solid hsl(var(--foreground) / .1);border-radius:var(--radius);overflow:hidden;box-shadow:0 24px 64px #0000008c}[cmdk-input]{width:100%;color:hsl(var(--foreground));font:inherit;border:none;border-bottom:1px solid hsl(var(--foreground) / .07);background:0 0;outline:none;padding:1rem 1rem .85rem;font-size:.95rem}[cmdk-input]::placeholder{color:hsl(var(--muted-foreground))}[cmdk-list]{max-height:min(46vh,400px);padding:.5rem;overflow-y:auto}[cmdk-group-heading]{letter-spacing:.04em;text-transform:uppercase;color:hsl(var(--muted-foreground));padding:.5rem .625rem .375rem;font-size:.6875rem;font-weight:600}[cmdk-item]{color:hsl(var(--foreground) / .85);cursor:pointer;user-select:none;border-radius:.45rem;align-items:center;gap:.625rem;padding:.5rem .625rem;font-size:.875rem;display:flex}[cmdk-item][data-selected=true]{background:hsl(var(--brand) / .12);color:hsl(var(--foreground))}[cmdk-item][data-disabled=true]{opacity:.4;cursor:default}[data-agentk-tool-name]{color:inherit}[data-agentk-tool-description]{color:hsl(var(--muted-foreground));text-align:right;margin-left:auto;font-size:.75rem}[cmdk-empty]{text-align:center;color:hsl(var(--muted-foreground));padding:1.5rem .75rem;font-size:.875rem}[data-agentk-mode=form] [cmdk-list],[data-agentk-mode=executing] [cmdk-list],[data-agentk-mode=result] [cmdk-list],[data-agentk-mode=planning] [cmdk-list],[data-agentk-mode=approval] [cmdk-list],[data-agentk-mode=form] [cmdk-input],[data-agentk-mode=executing] [cmdk-input],[data-agentk-mode=result] [cmdk-input],[data-agentk-mode=planning] [cmdk-input],[data-agentk-mode=approval] [cmdk-input]{display:none}[data-agentk-form]{flex-direction:column;gap:.875rem;padding:1rem;display:flex}[data-agentk-form-heading]{flex-direction:column;gap:.15rem;display:flex}[data-agentk-form-title]{color:hsl(var(--foreground));font-size:.875rem;font-weight:600}[data-agentk-form-description]{color:hsl(var(--muted-foreground));font-size:.8125rem}[data-agentk-form-fields]{flex-direction:column;gap:.85rem;display:flex}[data-agentk-form-field]{flex-direction:column;gap:.35rem;display:flex}[data-agentk-form-label]{color:hsl(var(--foreground) / .9);font-size:.8125rem;font-weight:500}[data-agentk-required]{color:hsl(var(--brand));margin-left:2px}[data-agentk-form-hint]{color:hsl(var(--muted-foreground));font-size:.75rem}[data-agentk-field-error-message]{color:hsl(var(--destructive));font-size:.75rem}[data-agentk-form] input[type=text],[data-agentk-form] input[type=password],[data-agentk-form] input[type=number],[data-agentk-form] select,[data-stk-html-input]{background:hsl(var(--foreground) / .04);width:100%;color:hsl(var(--foreground));font:inherit;box-shadow:inset 0 0 0 1px hsl(var(--foreground) / .1);border:none;border-radius:.45rem;padding:.5rem .625rem;font-size:.875rem}[data-stk-html-input]{resize:vertical;white-space:pre;overflow-wrap:normal;min-height:9rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125rem;line-height:1.5;overflow-x:auto}[data-agentk-form] input:focus-visible,[data-agentk-form] select:focus-visible,[data-stk-html-input]:focus-visible{outline:2px solid hsl(var(--brand));outline-offset:-1px}[data-agentk-form-actions]{justify-content:flex-end;gap:.5rem;padding-top:.25rem;display:flex}[data-agentk-form-cancel],[data-agentk-result-dismiss]{font:inherit;color:hsl(var(--muted-foreground));cursor:pointer;background:0 0;border:none;border-radius:.45rem;padding:.4rem .75rem;font-size:.8125rem}[data-agentk-form-cancel]:hover,[data-agentk-result-dismiss]:hover{background:hsl(var(--foreground) / .05);color:hsl(var(--foreground))}[data-agentk-form-submit]{font:inherit;color:hsl(var(--brand-foreground));background:hsl(var(--brand));cursor:pointer;border:none;border-radius:.45rem;padding:.4rem .85rem;font-size:.8125rem;font-weight:600}[data-agentk-form-submit]:hover{filter:brightness(1.08)}[data-agentk-form-submit]:disabled{opacity:.5;cursor:default}[data-agentk-result]{flex-direction:column;gap:.625rem;padding:1rem;display:flex}[data-agentk-result-data]{color:hsl(var(--foreground) / .85);white-space:pre-wrap;word-break:break-word;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125rem}[data-agentk-result-loading]{color:hsl(var(--muted-foreground));align-items:center;gap:.5rem;font-size:.875rem;display:flex}[data-agentk-spinner]{border:2px solid hsl(var(--foreground) / .15);border-top-color:hsl(var(--brand));border-radius:9999px;width:14px;height:14px;animation:.7s linear infinite stk-ak-spin}@keyframes stk-ak-spin{to{transform:rotate(360deg)}}[data-stk-result]{flex-direction:column;gap:.5rem;display:flex}[data-stk-result-heading]{color:hsl(var(--brand));font-size:.875rem;font-weight:600}[data-stk-result-url]{color:hsl(var(--foreground));word-break:break-all;align-items:center;gap:.4rem;font-size:.9rem;font-weight:500;display:inline-flex}[data-stk-result-url]:hover{color:hsl(var(--brand))}[data-stk-result-meta]{color:hsl(var(--muted-foreground));font-size:.75rem}[data-stk-result-claim]{color:hsl(var(--brand));font-size:.8125rem}[data-stk-result-claim]:hover{text-decoration:underline}[data-stk-result-error]{color:hsl(var(--destructive));white-space:pre-wrap;font-size:.875rem}[data-stk-result-actions]{gap:.5rem;padding-top:.25rem;display:flex}[data-stk-result-actions] button,[data-stk-result-actions] a{font:inherit;cursor:pointer;border:1px solid hsl(var(--foreground) / .12);color:hsl(var(--foreground));background:hsl(var(--foreground) / .04);border-radius:.45rem;padding:.35rem .75rem;font-size:.8125rem;font-weight:500}[data-stk-result-actions] a{background:hsl(var(--brand));color:hsl(var(--brand-foreground));border-color:#0000}[data-stk-result-actions] button:hover{background:hsl(var(--foreground) / .08)}[data-stk-result-actions] a:hover{filter:brightness(1.08)}[data-agentk-agent-hint]{cursor:pointer;color:hsl(var(--foreground));background:hsl(var(--brand) / .08);border:1px solid hsl(var(--brand) / .25);border-radius:.5rem;align-items:center;gap:.625rem;margin:.25rem .5rem .5rem;padding:.6rem .7rem;display:flex}[data-agentk-agent-hint]:hover,[data-agentk-agent-hint]:focus-visible{background:hsl(var(--brand) / .14);outline:none}[data-agentk-agent-hint-icon]{color:hsl(var(--brand));display:inline-flex}[data-agentk-agent-hint-content]{flex-direction:column;gap:.1rem;min-width:0;display:flex}[data-agentk-agent-hint-label]{font-size:.8125rem;font-weight:600}[data-agentk-agent-hint-query]{color:hsl(var(--muted-foreground));text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}[data-agentk-agent-hint-kbd]{font:inherit;color:hsl(var(--muted-foreground));background:hsl(var(--foreground) / .06);border-radius:.3rem;margin-left:auto;padding:.05rem .4rem;font-size:.75rem}[data-agentk-planning]{color:hsl(var(--muted-foreground));align-items:center;gap:.7rem;padding:1.25rem 1rem;font-size:.875rem;display:flex}[data-stk-planning-text]{flex-direction:column;gap:.15rem;display:flex}[data-stk-planning-text]>div:first-child{color:hsl(var(--foreground));font-weight:500}[data-stk-planning-meta]{color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums;font-size:.78rem}[data-agentk-approval]{flex-direction:column;gap:.75rem;padding:1rem;display:flex}[data-agentk-approval-summary]{color:hsl(var(--foreground));font-size:.875rem}[data-agentk-approval-calls]{flex-direction:column;gap:.5rem;display:flex}[data-agentk-approval-call]{background:hsl(var(--foreground) / .04);box-shadow:inset 0 0 0 1px hsl(var(--foreground) / .08);border-radius:.5rem;padding:.7rem .8rem}[data-stk-approval-call-title]{color:hsl(var(--foreground));font-size:.8125rem;font-weight:600}[data-stk-approval-call-sub]{color:hsl(var(--foreground) / .8);margin-top:.1rem;font-size:.8125rem}[data-stk-approval-call-meta]{color:hsl(var(--muted-foreground));margin-top:.2rem;font-size:.75rem}[data-agentk-approval-actions]{justify-content:flex-end;gap:.5rem;padding-top:.15rem;display:flex}[data-agentk-approval-reject]{font:inherit;color:hsl(var(--muted-foreground));cursor:pointer;background:0 0;border:none;border-radius:.45rem;padding:.4rem .85rem;font-size:.8125rem}[data-agentk-approval-reject]:hover{background:hsl(var(--foreground) / .05);color:hsl(var(--foreground))}[data-agentk-approval-approve]{font:inherit;color:hsl(var(--brand-foreground));background:hsl(var(--brand));cursor:pointer;border:none;border-radius:.45rem;padding:.4rem .95rem;font-size:.8125rem;font-weight:600}[data-agentk-approval-approve]:hover{filter:brightness(1.08)}[data-stk-keyform]{flex-direction:column;gap:.85rem;padding:1rem;display:flex}[data-stk-keyform-head]{flex-direction:column;gap:.2rem;display:flex}[data-stk-keyform-title]{color:hsl(var(--foreground));font-size:.9rem;font-weight:600}[data-stk-keyform-desc]{color:hsl(var(--muted-foreground));font-size:.78rem;line-height:1.45}[data-stk-keyform-providers]{flex-direction:column;gap:.4rem;display:flex}[data-stk-keyform-provider]{-moz-column-gap:.55rem;cursor:pointer;background:hsl(var(--foreground) / .03);box-shadow:inset 0 0 0 1px hsl(var(--foreground) / .08);border-radius:.5rem;grid-template-columns:auto 1fr;align-items:center;gap:.05rem .55rem;padding:.5rem .65rem;display:grid}[data-stk-keyform-provider][data-selected]{background:hsl(var(--brand) / .1);box-shadow:inset 0 0 0 1px hsl(var(--brand) / .4)}[data-stk-keyform-provider] input[type=radio]{accent-color:hsl(var(--brand));grid-row:span 2}[data-stk-keyform-provider-label]{color:hsl(var(--foreground));font-size:.8125rem;font-weight:500}[data-stk-keyform-provider-note]{color:hsl(var(--muted-foreground));font-size:.72rem}[data-stk-keyform-input]{background:hsl(var(--foreground) / .04);width:100%;color:hsl(var(--foreground));font:inherit;box-shadow:inset 0 0 0 1px hsl(var(--foreground) / .1);border:none;border-radius:.45rem;padding:.55rem .7rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875rem}[data-stk-keyform-input]:focus-visible{outline:2px solid hsl(var(--brand));outline-offset:-1px}[data-stk-keyform-actions]{justify-content:flex-end;align-items:center;gap:.5rem;display:flex}[data-stk-keyform-remove]{margin-right:auto}[data-stk-keyform-actions] button{font:inherit;color:hsl(var(--muted-foreground));cursor:pointer;background:0 0;border:none;border-radius:.45rem;padding:.4rem .85rem;font-size:.8125rem}[data-stk-keyform-actions] button:hover{background:hsl(var(--foreground) / .05);color:hsl(var(--foreground))}[data-stk-keyform-save]{color:hsl(var(--brand-foreground))!important;background:hsl(var(--brand))!important;font-weight:600!important}[data-stk-keyform-save]:hover{filter:brightness(1.08)}[data-stk-keyform-save]:disabled{opacity:.5;cursor:default;filter:none}@keyframes stk-rise{0%{opacity:.95;transform:translate(-50%)scale(1)rotate(0)}to{opacity:0;transform:translate(-50%,-46px)scale(1.6)rotate(8deg)}}@keyframes stk-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.stk-rise{animation:.85s cubic-bezier(.2,.8,.2,1) forwards stk-rise}.stk-float{animation:6s ease-in-out infinite stk-float}@media (prefers-reduced-motion:reduce){.stk-rise,.stk-float{animation:none}}.placeholder\\:text-muted-foreground\\/50::placeholder{color:hsl(var(--muted-foreground) / .5)}.hover\\:-translate-y-0\\.5:hover{--tw-translate-y:-.125rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:border-white\\/20:hover{border-color:#fff3}.hover\\:bg-black\\/50:hover{background-color:#00000080}.hover\\:bg-black\\/60:hover{background-color:#0009}.hover\\:bg-card\\/55:hover{background-color:hsl(var(--card) / .55)}.hover\\:bg-card\\/60:hover{background-color:hsl(var(--card) / .6)}.hover\\:bg-card\\/70:hover{background-color:hsl(var(--card) / .7)}.hover\\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity,1))}.hover\\:bg-emerald-500\\/15:hover{background-color:#10b98126}.hover\\:bg-emerald-500\\/5:hover{background-color:#10b9810d}.hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\\:bg-white\\/10:hover{background-color:#ffffff1a}.hover\\:bg-white\\/5:hover{background-color:#ffffff0d}.hover\\:bg-white\\/\\[0\\.02\\]:hover{background-color:#ffffff05}.hover\\:bg-white\\/\\[0\\.03\\]:hover{background-color:#ffffff08}.hover\\:bg-white\\/\\[0\\.04\\]:hover{background-color:#ffffff0a}.hover\\:text-emerald-200:hover{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity,1))}.hover\\:text-foreground:hover{color:hsl(var(--foreground))}.hover\\:text-primary:hover{color:hsl(var(--primary))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:no-underline:hover{text-decoration-line:none}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-95:hover{--tw-brightness:brightness(.95);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus-visible\\:text-foreground:focus-visible{color:hsl(var(--foreground))}.focus-visible\\:underline:focus-visible{text-decoration-line:underline}.focus-visible\\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\\:outline:focus-visible{outline-style:solid}.focus-visible\\:outline-1:focus-visible{outline-width:1px}.focus-visible\\:outline-brand\\/60:focus-visible{outline-color:hsl(var(--brand) / .6)}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-60:disabled{opacity:.6}.group[open] .group-open\\:rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:-translate-y-0\\.5{--tw-translate-y:-.125rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:translate-x-0\\.5{--tw-translate-x:.125rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:rotate-\\[6deg\\]{--tw-rotate:6deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:bg-brand\\/15{background-color:hsl(var(--brand) / .15)}.group:hover .group-hover\\:bg-white\\/\\[0\\.04\\]{background-color:#ffffff0a}.group:hover .group-hover\\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.group:hover .group-hover\\:text-emerald-300\\/70{color:#6ee7b7b3}.group:hover .group-hover\\:text-emerald-300\\/80{color:#6ee7b7cc}.group:hover .group-hover\\:text-emerald-300\\/90{color:#6ee7b7e6}.group:hover .group-hover\\:text-primary{color:hsl(var(--primary))}.group:hover .group-hover\\:text-rose-300\\/80{color:#fda4afcc}.group:hover .group-hover\\:underline{text-decoration-line:underline}.group:hover .group-hover\\:line-through{text-decoration-line:line-through}.group:hover .group-hover\\:opacity-100{opacity:1}.group:hover .group-hover\\:opacity-50{opacity:.5}.group:hover .group-hover\\:opacity-\\[0\\.10\\]{opacity:.1}.group.is-copied .group-\\[\\.is-copied\\]\\:bg-emerald-400\\/30{background-color:#34d3994d}.group.is-copied .group-\\[\\.is-copied\\]\\:text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity,1))}.group.is-copied .group-\\[\\.is-copied\\]\\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:bg-white\\/5[data-state=active]{background-color:#ffffff0d}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:hsl(var(--foreground))}@media not all and (width>=640px){.max-sm\\:text-base{font-size:1rem;line-height:1.5rem}}@media (width>=640px){.sm\\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\\:ml-0{margin-left:0}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:inline-flex{display:inline-flex}.sm\\:aspect-\\[660\\/505\\]{aspect-ratio:660/505}.sm\\:h-\\[264px\\]{height:264px}.sm\\:w-\\[360px\\]{width:360px}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:flex-wrap{flex-wrap:wrap}.sm\\:items-center{align-items:center}.sm\\:justify-between{justify-content:space-between}.sm\\:gap-2{gap:.5rem}.sm\\:gap-24{gap:6rem}.sm\\:gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.sm\\:gap-y-2{row-gap:.5rem}.sm\\:p-16{padding:4rem}.sm\\:p-3{padding:.75rem}.sm\\:p-8{padding:2rem}.sm\\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.sm\\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\\:py-20{padding-top:5rem;padding-bottom:5rem}.sm\\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\\:pb-14{padding-bottom:3.5rem}.sm\\:pb-16{padding-bottom:4rem}.sm\\:pt-8{padding-top:2rem}.sm\\:text-\\[13px\\]{font-size:13px}.sm\\:text-\\[14px\\]{font-size:14px}.sm\\:text-\\[15px\\]{font-size:15px}.sm\\:text-\\[18px\\]{font-size:18px}.sm\\:text-\\[21px\\]{font-size:21px}.sm\\:text-\\[22px\\]{font-size:22px}}@media (width>=768px){.md\\:order-1{order:1}.md\\:order-2{order:2}.md\\:flex{display:flex}.md\\:-translate-y-1{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:gap-12{gap:3rem}.md\\:gap-5{gap:1.25rem}}@media (width>=1024px){.lg\\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\\:max-w-\\[920px\\]{max-width:920px}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\\:grid-cols-\\[1\\.35fr_1fr\\]{grid-template-columns:1.35fr 1fr}.lg\\:px-8{padding-left:2rem;padding-right:2rem}.lg\\:py-24{padding-top:6rem;padding-bottom:6rem}.lg\\:py-28{padding-top:7rem;padding-bottom:7rem}}.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[state\\=active\\]\\:\\[\\&_\\.live\\]\\:opacity-100 .live[data-state=active]{opacity:1}\n.prose-body h2{text-wrap:balance;letter-spacing:-.025em;color:hsl(var(--foreground));margin-top:3rem;margin-bottom:.75rem;font-size:clamp(22px,2.6vw,28px);font-weight:600}.prose-body h2:first-child{margin-top:0}.prose-body h3{letter-spacing:-.025em;color:hsl(var(--foreground));margin-top:2rem;margin-bottom:.5rem;font-size:18px;font-weight:600}.prose-body p{text-wrap:pretty;margin-top:1rem;margin-bottom:1rem}.prose-body ul,.prose-body ol{margin-top:1rem;margin-bottom:1rem;padding-left:1.25rem}.prose-body ul{list-style-type:disc}.prose-body ol{list-style-type:decimal}.prose-body li{margin-top:.375rem;margin-bottom:.375rem}.prose-body li::marker{color:hsl(var(--muted-foreground) / .5)}.prose-body a{color:hsl(var(--primary));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.prose-body a:hover{text-decoration-line:underline}.prose-body strong{color:hsl(var(--foreground));font-weight:600}.prose-body code{color:hsl(var(--foreground));background-color:#ffffff0d;border-radius:.25rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.prose-body pre{border-radius:var(--radius);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset;--tw-ring-color:#ffffff1a;background-color:#0006;margin-top:1.5rem;margin-bottom:1.5rem;padding:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.625;overflow-x:auto}.prose-body pre code{background-color:#0000;padding:0}.prose-body blockquote{border-left-width:2px;border-color:hsl(var(--brand) / .5);color:hsl(var(--foreground) / .8);margin-top:1.5rem;margin-bottom:1.5rem;padding-left:1rem;font-style:italic}\n</style><script type=\"module\" src=\"/_landing/hoisted.vDRlfrMa.js\"></script></head> <body class=\"min-h-dvh\"> <a href=\"#main\" class=\"skip-link\">Skip to content</a> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var l=(o,t)=>{let i=async()=>{await(await o())()},e=typeof t.value==\"object\"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};\"requestIdleCallback\"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event(\"astro:idle\"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!=\"symbol\"?o+\"\":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!=\"object\"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,\"Component\");d(this,\"hydrator\");d(this,\"hydrate\",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest(\"astro-island[ssr]\");if(e){e.addEventListener(\"astro:hydrate\",this.hydrate,{once:!0});return}let c=this.querySelectorAll(\"astro-slot\"),n={},h=this.querySelectorAll(\"template[data-astro-template]\");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute(\"data-astro-template\")||\"default\"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute(\"name\")||\"default\"]=r.innerHTML)}let p;try{p=this.hasAttribute(\"props\")?m(JSON.parse(this.getAttribute(\"props\"))):{}}catch(r){let s=this.getAttribute(\"component-url\")||\"<unknown>\",v=this.getAttribute(\"component-export\");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute(\"props\"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute(\"client\")}),this.removeAttribute(\"ssr\"),this.dispatchEvent(new CustomEvent(\"astro:hydrate\"))});d(this,\"unmount\",()=>{this.isConnected||this.dispatchEvent(new CustomEvent(\"astro:unmount\"))})}disconnectedCallback(){document.removeEventListener(\"astro:after-swap\",this.unmount),document.addEventListener(\"astro:after-swap\",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute(\"await-children\")||document.readyState===\"interactive\"||document.readyState===\"complete\")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener(\"DOMContentLoaded\",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue===\"astro:end\"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener(\"DOMContentLoaded\",e)}}async childrenConnectedCallback(){let e=this.getAttribute(\"before-hydration-url\");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute(\"opts\")),c=this.getAttribute(\"client\");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute(\"renderer-url\"),[h,{default:p}]=await Promise.all([import(this.getAttribute(\"component-url\")),n?import(n):()=>()=>{}]),u=this.getAttribute(\"component-export\")||\"default\";if(!u.includes(\".\"))this.Component=h[u];else{this.Component=h;for(let f of u.split(\".\"))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute(\"component-url\")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,\"observedAttributes\",[\"props\"]),customElements.get(\"astro-island\")||customElements.define(\"astro-island\",y)}})();</script><astro-island uid=\"Z1SQaUP\" prefix=\"r0\" component-url=\"/_landing/SiteHeader.BI7k1O1O.js\" component-export=\"SiteHeader\" renderer-url=\"/_landing/client.fm8_GP-O.js\" props=\"{}\" ssr=\"\" client=\"idle\" opts=\"{&quot;name&quot;:&quot;SiteHeader&quot;,&quot;value&quot;:true}\" await-children=\"\"><header class=\"sticky top-0 z-40 transition-all duration-200 border-b border-transparent bg-background/0\"><div class=\"container flex h-14 items-center justify-between gap-4\"><a href=\"/\" aria-label=\"Stacktree home\" class=\"group flex shrink-0 items-center gap-2 rounded-md text-foreground hover:no-underline\"><svg viewBox=\"0 0 64 64\" fill=\"none\" aria-hidden=\"true\" width=\"24\" height=\"24\" class=\"transition-transform duration-300 group-hover:rotate-[6deg]\"><defs><linearGradient id=\"stk-grad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"64\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#a7f3d0\"></stop><stop offset=\"1\" stop-color=\"#34d399\"></stop></linearGradient></defs><path d=\"M32 6 L54 22 L32 38 L10 22 Z\" fill=\"url(#stk-grad)\" opacity=\"0.92\"></path><path d=\"M32 26 L54 42 L32 58 L10 42 Z\" fill=\"url(#stk-grad)\" opacity=\"0.55\"></path><g opacity=\"0.9\"><circle cx=\"17\" cy=\"21\" r=\"1.5\" fill=\"#ef4444\"></circle><circle cx=\"20.5\" cy=\"18.5\" r=\"1.5\" fill=\"#f59e0b\"></circle><circle cx=\"24\" cy=\"16\" r=\"1.5\" fill=\"#22c55e\"></circle></g><g opacity=\"0.5\"><circle cx=\"17\" cy=\"41\" r=\"1.5\" fill=\"#ef4444\"></circle><circle cx=\"20.5\" cy=\"38.5\" r=\"1.5\" fill=\"#f59e0b\"></circle><circle cx=\"24\" cy=\"36\" r=\"1.5\" fill=\"#22c55e\"></circle></g><g opacity=\"0.32\" stroke=\"#ffffff\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"><line x1=\"23.0\" y1=\"25.3\" x2=\"31.3\" y2=\"19.2\"></line><line x1=\"26.4\" y1=\"27.5\" x2=\"33.0\" y2=\"22.7\"></line><line x1=\"30.3\" y1=\"29.3\" x2=\"34.7\" y2=\"26.1\"></line></g><g opacity=\"0.18\" stroke=\"#ffffff\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"><line x1=\"23.0\" y1=\"45.3\" x2=\"31.3\" y2=\"39.2\"></line><line x1=\"26.4\" y1=\"47.5\" x2=\"33.0\" y2=\"42.7\"></line><line x1=\"30.3\" y1=\"49.3\" x2=\"34.7\" y2=\"46.1\"></line></g></svg><span class=\"text-base font-semibold tracking-tight\">Stacktree</span></a><nav aria-label=\"Primary\" data-nav=\"header\" class=\"hidden items-center gap-1 md:flex\"><a href=\"/agents\" class=\"rounded-md px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground\">Agents</a><a href=\"/docs\" class=\"rounded-md px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground\">Docs</a><a href=\"/use-cases\" class=\"rounded-md px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground\">Use cases</a><a href=\"/pricing\" class=\"rounded-md px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground\">Pricing</a><a href=\"/blog\" class=\"rounded-md px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground\">Blog</a></nav><nav aria-label=\"Account\" class=\"flex items-center gap-1 sm:gap-2\"><a href=\"https://app.stacktr.ee\" class=\"hidden rounded-md px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground sm:inline-flex\">Dashboard</a><a href=\"https://app.stacktr.ee\" class=\"rounded-md\"><button class=\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 text-foreground hover:bg-white/5 h-8 px-3\">Sign in →</button></a></nav></div></header><!--astro:end--></astro-island> <main id=\"main\">  <div class=\"border-b border-white/5 bg-card/20\"> <div class=\"container flex flex-wrap items-center gap-x-4 gap-y-1 py-2 text-[12px] text-muted-foreground\"> <span class=\"flex items-center gap-1.5\"> <span class=\"text-muted-foreground/60\">By</span> <a href=\"/about\" class=\"font-medium text-foreground/90 hover:text-primary\" rel=\"author\"> Steve Smith </a> <span class=\"text-muted-foreground/60\">·</span> <span class=\"text-muted-foreground/70\">Founder, Stacktree</span> </span> <span class=\"text-muted-foreground/40\">·</span> <span class=\"flex items-center gap-1.5\"> <span class=\"text-muted-foreground/60\">Last updated</span> <time datetime=\"2026-07-28\" class=\"font-medium text-foreground/90\">July 28, 2026</time> </span> </div> </div>  <section class=\"relative\"> <div class=\"glow-brand pointer-events-none absolute inset-0 -z-10\" aria-hidden></div> <div class=\"container flex flex-col gap-6 py-16 sm:py-20 lg:py-24\"> <span data-reveal class=\"inline-flex w-fit items-center gap-2 rounded-full bg-white/[0.03] py-1 pl-1 pr-3 text-xs text-muted-foreground inset-ring inset-ring-white/10\"> <span class=\"rounded-full bg-brand/15 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-primary\"> blog · MCP </span> </span> <h1 data-reveal class=\"max-w-[24ch] text-balance text-[clamp(36px,5.5vw,56px)] font-semibold leading-[1.05] tracking-[-0.02em]\"> What changed in the 2026-07 MCP specification. </h1>  <p data-reveal class=\"max-w-[58ch] text-pretty text-[17px] text-muted-foreground sm:text-[18px]\"> The 2026-07-28 specification, final as of July 28, is the biggest MCP revision since launch: a stateless core, response caching, an extensions framework, MCP Apps, a redesigned Tasks extension, and a formal deprecation policy. Here is what each change means and why it matters. </p> <div data-reveal class=\"flex flex-col gap-3 sm:flex-row sm:items-center\"> <button data-copy=\"npx stacktree-install\" data-copied-label=\"Copied — paste in your terminal ↵\" aria-label=\"Copy: npx stacktree-install\" class=\"install-pill group flex w-full max-w-[52ch] items-center justify-between gap-3 rounded-lg bg-black/40 px-3 py-2.5 text-left font-mono text-[13px] inset-ring inset-ring-white/10 transition-all duration-200 hover:bg-black/60 hover:inset-ring-white/20 focus-visible:inset-ring-brand/50\"> <span class=\"flex min-w-0 items-center gap-2.5\"> <span class=\"rounded bg-brand/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-primary\">install</span> <span class=\"truncate text-foreground\">npx stacktree-install</span> </span> <span class=\"shrink-0 text-[10px] uppercase tracking-wider text-muted-foreground/60 transition-colors duration-150 group-[.is-copied]:text-emerald-300\" data-copy-label>\nCopy\n</span> </button> <a href=\"https://app.stacktr.ee\" class=\"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90\"> Get started free </a> </div> </div> </section> <section class=\"border-y border-white/5 bg-card/30\"> <div class=\"container py-12 sm:py-14\"> <div data-reveal class=\"mx-auto flex max-w-[64ch] flex-col gap-3\"> <h2 class=\"text-balance text-[clamp(20px,2.4vw,26px)] font-semibold tracking-tight\" data-aeo-answer> What is the 2026-07-28 MCP specification? </h2>  <div class=\"text-pretty text-[17px] leading-relaxed text-muted-foreground\" data-speakable>  <p>\nThe 2026-07-28 specification is the current version of the Model Context Protocol, published as final on July 28, 2026. It was locked as a release candidate on May 21, 2026 and validated for ten weeks by SDK maintainers and client implementers before publication. It replaces 2025-11-25. MCP versions are date-stamped to mark the last date backwards-incompatible changes were made.\n</p>  </div> </div> </div> </section> <aside class=\"container py-6\"> <nav aria-label=\"Table of contents\" class=\"mx-auto max-w-[68ch] rounded-xl bg-card/30 p-5 inset-ring inset-ring-white/10\"> <h2 class=\"mb-3 text-[12px] font-mono uppercase tracking-wider text-muted-foreground\">On this page</h2> <ol class=\"flex flex-col gap-1.5 text-[14px]\"> <li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 01 </span> <a href=\"#version-not-a-date\" class=\"text-foreground/85 hover:text-primary\"> A version, not a publish date </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 02 </span> <a href=\"#breaks-vs-stays\" class=\"text-foreground/85 hover:text-primary\"> What breaks and what stays compatible </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 03 </span> <a href=\"#stateless-core\" class=\"text-foreground/85 hover:text-primary\"> The stateless core </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 04 </span> <a href=\"#transport-headers\" class=\"text-foreground/85 hover:text-primary\"> Transport headers and routing </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 05 </span> <a href=\"#response-caching\" class=\"text-foreground/85 hover:text-primary\"> Response caching </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 06 </span> <a href=\"#extensions\" class=\"text-foreground/85 hover:text-primary\"> Extensions, MCP Apps, and Tasks </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 07 </span> <a href=\"#mrtr\" class=\"text-foreground/85 hover:text-primary\"> Elicitation, sampling, and Multi Round-Trip </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 08 </span> <a href=\"#authorization\" class=\"text-foreground/85 hover:text-primary\"> Authorization alignment </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 09 </span> <a href=\"#deprecation\" class=\"text-foreground/85 hover:text-primary\"> The deprecation policy </a> </li><li class=\"flex items-start gap-2 text-muted-foreground\"> <span class=\"select-none font-mono text-[11px] text-muted-foreground/50\"> 10 </span> <a href=\"#what-it-means\" class=\"text-foreground/85 hover:text-primary\"> What this means for builders </a> </li> </ol> </nav> </aside> <section class=\"container py-12 sm:py-16\"> <div data-reveal class=\"prose-body mx-auto max-w-[68ch] text-[16.5px] leading-[1.7] text-muted-foreground\">  <p><strong>Update, 28 July 2026:</strong> the specification shipped as final on schedule. This post now describes the published text rather than the release candidate.</p> <h2 id=\"version-not-a-date\">A version, not a publish date</h2> <p>The first thing to get right is the date itself. MCP uses string-based version identifiers in the format YYYY-MM-DD to indicate the last date backwards-incompatible changes were made. So 2026-07-28 is a version label, not the day a blog post went up.</p> <p>It is shipped now. The release candidate was locked on May 21, 2026, the roughly ten-week gap was a validation window for SDK maintainers and client implementers to test the changes against real workloads, and the final specification published on July 28, 2026, as scheduled. 2026-07-28 replaces 2025-11-25 as the current version. Everything below describes the published specification. One addition landed between the release candidate and this description: every result now carries a required <code>resultType</code> field, <code>\"complete\"</code> for ordinary results and <code>\"input_required\"</code> for Multi Round-Trip interim results, with results from earlier-protocol servers treated as complete (SEP-2322).</p> <h2 id=\"breaks-vs-stays\">What breaks and what stays compatible</h2> <p>At a glance: what the 2026-07-28 specification breaks, what it only deprecates (so it stays in the spec for a year or more), and what stays compatible with a new field or two. Each row is explained in detail in the sections below.</p> <div class=\"my-6 overflow-x-auto rounded-xl bg-card/40 inset-ring inset-ring-white/10\"> <table class=\"w-full text-left text-sm\"> <thead class=\"bg-white/[0.03] text-[11px] uppercase tracking-wider text-muted-foreground\"> <tr> <th scope=\"col\" class=\"px-4 py-3 sm:px-5\">Change</th> <th scope=\"col\" class=\"px-4 py-3 sm:px-5\">Status</th> <th scope=\"col\" class=\"px-4 py-3 sm:px-5\">What to do</th> </tr> </thead> <tbody class=\"divide-y divide-white/5\"> <tr class=\"align-top\"> <th scope=\"row\" class=\"px-4 py-3 font-medium text-foreground sm:px-5\">Sessions and the <code>Mcp-Session-Id</code> header (SEP-2567)</th> <td class=\"px-4 py-3 text-amber-300 sm:px-5\">Breaking</td> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Drop shared session stores; mint explicit handles and pass them as ordinary tool arguments.</td> </tr> <tr class=\"align-top\"> <th scope=\"row\" class=\"px-4 py-3 font-medium text-foreground sm:px-5\">The <code>initialize</code> handshake (SEP-2575)</th> <td class=\"px-4 py-3 text-amber-300 sm:px-5\">Breaking</td> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Read protocol version and capabilities from <code>_meta</code> on every request; implement <code>server/discover</code>.</td> </tr> <tr class=\"align-top\"> <th scope=\"row\" class=\"px-4 py-3 font-medium text-foreground sm:px-5\">Blocking <code>tasks/result</code> (SEP-2663)</th> <td class=\"px-4 py-3 text-amber-300 sm:px-5\">Breaking for Tasks users</td> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Move to the Tasks extension and poll via <code>tasks/get</code>.</td> </tr> <tr class=\"align-top\"> <th scope=\"row\" class=\"px-4 py-3 font-medium text-foreground sm:px-5\"><code>tools/list</code>, <code>resources/list</code>, <code>prompts/list</code></th> <td class=\"px-4 py-3 text-emerald-300 sm:px-5\">Compatible, new fields</td> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Endpoints no longer vary per connection; add <code>ttlMs</code> and <code>cacheScope</code> to enable caching.</td> </tr> <tr class=\"align-top\"> <th scope=\"row\" class=\"px-4 py-3 font-medium text-foreground sm:px-5\">Roots, Sampling, Logging (SEP-2577)</th> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Deprecated, not removed</td> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Stay in the spec at least twelve months; avoid building new hard dependencies on them.</td> </tr> <tr class=\"align-top\"> <th scope=\"row\" class=\"px-4 py-3 font-medium text-foreground sm:px-5\">HTTP+SSE transport (SEP-2596)</th> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Deprecated, not removed</td> <td class=\"px-4 py-3 text-muted-foreground sm:px-5\">Migrate to Streamable HTTP within the deprecation window.</td> </tr> </tbody> </table> </div> <h2 id=\"stateless-core\">The stateless core</h2> <p>The headline change is that MCP becomes stateless at the protocol layer. The maintainers frame this as six Specification Enhancement Proposals (SEPs) working together to complete the plan laid out in late 2025.</p> <p>Two SEPs carry most of the weight:</p> <ul> <li><strong>Sessions removed (SEP-2567).</strong> Protocol-level sessions and the <code>Mcp-Session-Id</code> header are gone from the Streamable HTTP transport. The list endpoints (<code>tools/list</code>, <code>resources/list</code>, <code>prompts/list</code>) no longer vary per connection. Servers that need cross-call state now mint explicit, server-issued handles passed as ordinary tool arguments. The practical payoff: no more sticky routing or shared session stores for horizontal deployments.</li> <li><strong>Handshake removed (SEP-2575).</strong> The <code>initialize</code> and <code>notifications/initialized</code> exchange is gone. Every request now carries its protocol version, client identity, and client capabilities in <code>_meta</code> (under keys such as <code>io.modelcontextprotocol/protocolVersion</code>, <code>/clientInfo</code>, and <code>/clientCapabilities</code>). Version mismatches return an <code>UnsupportedProtocolVersionError</code>. A new <code>server/discover</code> RPC, which servers MUST implement, advertises supported protocol versions, capabilities, and identity. Clients MAY call it for up-front version selection or as a STDIO backwards-compatibility probe.</li> </ul> <h2 id=\"transport-headers\">Transport headers and routing</h2> <p>Stateless servers still have to live behind load balancers, gateways, and rate-limiters. SEP-2243 makes that work cleanly by requiring two standard headers on Streamable HTTP POST requests: <code>Mcp-Method</code> and <code>Mcp-Name</code>. With the operation named in the headers, infrastructure can route and rate-limit on the operation without inspecting the request body. A server can run behind a plain round-robin load balancer instead of deep packet inspection. The same SEP adds support for custom headers from tool parameters via <code>x-mcp-header</code>.</p> <h2 id=\"response-caching\">Response caching</h2> <p>SEP-2549 introduces a new <code>CacheableResult</code> interface and requires two fields on the results of <code>tools/list</code>, <code>prompts/list</code>, <code>resources/list</code>, <code>resources/read</code>, and <code>resources/templates/list</code>:</p> <ul> <li><strong><code>ttlMs</code></strong> is a freshness hint in milliseconds. Clients can cache the response and reduce polling.</li> <li><strong><code>cacheScope</code></strong> is either <code>\"public\"</code> or <code>\"private\"</code> and controls whether shared intermediaries may cache the response.</li> </ul> <p>The model is borrowed from HTTP <code>Cache-Control</code>, and it complements the existing <code>listChanged</code> notifications rather than replacing them. For a stateless protocol where list endpoints are now connection-independent, caching is how clients avoid re-fetching the same tool catalogue on every call.</p> <h2 id=\"extensions\">Extensions, MCP Apps, and Tasks</h2> <p>Extensions become a first-class capability. An <code>extensions</code> field is added to both <code>ClientCapabilities</code> and <code>ServerCapabilities</code>, and the two sides negotiate optional extensions beyond the core protocol through that map. Two notable features ship as extensions under this framework.</p> <p><strong>MCP Apps (SEP-1865)</strong> lets servers ship interactive HTML interfaces that hosts render in a sandboxed iframe. Tools declare their UI templates ahead of time, so hosts can prefetch, cache, and security-review them before anything runs. UI-initiated actions go through the same JSON-RPC audit and consent path as a direct tool call, which keeps the security model intact. MCP Apps has been Final since January 26, 2026, when it shipped as the first official extension; we cover what it standardizes, and <a href=\"/blog/mcp-apps-html-ui\">where the HTML lives</a>, separately. The published specification names Enterprise Managed Authorization (EMA) as a further extension in the same framework, alongside MCP Apps and Tasks.</p> <p><strong>Tasks (<code>io.modelcontextprotocol/tasks</code>, SEP-2663)</strong> handles long-running work. Tasks first shipped as an experimental core feature in 2025-11-25, but production use led to moving it out of the core protocol and into an official extension. The redesign:</p> <ul> <li>replaces the blocking <code>tasks/result</code> method with polling via <code>tasks/get</code>,</li> <li>adds <code>tasks/update</code> for client-to-server input,</li> <li>removes <code>tasks/list</code>, and</li> <li>lets servers return task handles unsolicited, without per-request opt-in.</li> </ul> <h2 id=\"mrtr\">Elicitation, sampling, and Multi Round-Trip</h2> <p>In the released 2025-11-25 spec, a server can pause mid-operation to ask for input. Elicitation (<code>elicitation/create</code>) requests structured input from the user; its result carries an <code>action</code> of <code>accept</code>, <code>decline</code>, or <code>cancel</code>, plus a <code>content</code> object on accept. Elicitation supports a <code>form</code> mode and a <code>url</code> mode, with hard safety rules: servers MUST NOT use form mode for sensitive credentials such as passwords or API keys, and MUST use URL mode for those instead.</p> <p>Sampling (<code>sampling/createMessage</code>) lets a server request an LLM completion from the client, nesting LLM calls inside other server features to enable agentic behavior. Sampling is human-in-the-loop by design: the client controls model selection (the server never sees API keys), can review and edit the prompt, and can deny the request. Model selection uses an advisory preference system (<code>modelPreferences</code> with <code>hints</code> and <code>costPriority</code>, <code>speedPriority</code>, <code>intelligencePriority</code>).</p> <p>The 2026-07-28 specification changes how these server-initiated requests are delivered. Rather than the server opening a request channel back to the client (and holding a connection open), SEP-2322 introduces the <strong>Multi Round-Trip Requests (MRTR)</strong> pattern. The field names below come from the published 2026-07-28 schema:</p> <ul> <li>A call to <code>tools/call</code>, <code>prompts/get</code>, or <code>resources/read</code> can return an <code>InputRequiredResult</code> (a new <code>resultType</code> of <code>input_required</code>) instead of completing.</li> <li>That result carries <code>inputRequests</code>, a map of server-initiated requests the client must fulfill (each one a full elicitation or sampling request), plus an opaque <code>requestState</code> the client must echo back unmodified.</li> <li>The client gathers the answers and re-issues the original call with <code>inputResponses</code>, keyed identically, and the echoed <code>requestState</code>.</li> </ul> <p>Because all the state rides in the payload, any stateless server instance can resume the work. One <code>InputRequiredResult</code> can batch an elicitation and a sampling request together in a single round-trip. This is the same load-shedding motivation behind the stateless core: nothing depends on a held connection.</p> <h2 id=\"authorization\">Authorization alignment</h2> <p>The 2026-07-28 specification also hardens authorization, aligning it more closely with how OAuth 2.0 and OpenID Connect are deployed in practice, motivated by MCP's single-client, many-server deployment shape. The changes that landed in the published changelog: authorization servers SHOULD include the <code>iss</code> parameter in authorization responses, and clients MUST validate a present <code>iss</code> against the recorded issuer before redeeming the authorization code (SEP-2468); clients MUST specify an appropriate <code>application_type</code> during registration to avoid OpenID Connect redirect URI conflicts (SEP-837); and client credentials are bound to the authorization server that issued them, so clients MUST key persisted credentials by issuer and re-register when the authorization server changes (SEP-2352). Separately, OAuth 2.0 Dynamic Client Registration is formally deprecated as a registration mechanism in favour of Client ID Metadata Documents; it continues to work for backwards compatibility but is slated for removal in a future version.</p> <h2 id=\"deprecation\">The deprecation policy</h2> <p>For the first time, MCP adopts a formal feature lifecycle and deprecation policy (SEP-2596). It defines three states (Active, Deprecated, Removed) and a registry of deprecated features. The key guarantee is a minimum deprecation window: a feature must remain Deprecated for at least twelve months, measured from the release of the revision that first marks it Deprecated, before it is eligible for removal.</p> <p>There is one exception. An expedited removal (for example, a published security advisory or in-the-wild exploitation with no in-place mitigation) can shorten the window, but it must still provide at least ninety days between a feature becoming Deprecated and its earliest removal.</p> <p>Under this policy, the 2026-07-28 specification deprecates the Roots, Sampling, and Logging features (SEP-2577) and reclassifies the older HTTP+SSE transport as Deprecated (SEP-2596). Deprecated does not mean gone: these features remain in the specification for at least the twelve-month window.</p> <h2 id=\"what-it-means\">What this means for builders</h2> <p>If you maintain an MCP server, including a publish primitive like Stacktree's <a href=\"/mcp-publish-html\">MCP publish tool</a>, the stateless core is the change to plan for. A server that previously relied on the session header or the initialize handshake will need to read protocol version and capabilities from <code>_meta</code>, implement <code>server/discover</code>, and attach <code>ttlMs</code> and <code>cacheScope</code> to its list and read results. Clients now send the <code>Mcp-Method</code> and <code>Mcp-Name</code> headers on their Streamable HTTP POST requests, so make sure your gateway routes on those headers rather than on session affinity. If you used the experimental Tasks feature, you will move to the extension and switch from blocking <code>tasks/result</code> to polling.</p> <p>The specification is final, but July 28 is a publish date, not a switch-off: publication does not turn anything off for implementers on 2025-11-25, and the deprecation policy buys at least twelve months for anything being phased out. All four Tier 1 SDKs (TypeScript, Python, Go, and C#) speak 2026-07-28 as of publication day, with migration notes for the breaking parts, the session-identifier removal chief among them. The right move now is to read the final changelog, upgrade in a branch, and avoid new dependencies on anything the specification deprecates.</p>  </div> </section>  <section class=\"container max-w-3xl py-16 sm:py-20\"> <header data-reveal class=\"mb-8 flex flex-col gap-3\"> <span class=\"w-fit rounded-full bg-white/[0.04] px-2.5 py-0.5 text-[11px] uppercase tracking-wider text-muted-foreground inset-ring inset-ring-white/10\">\nFAQ\n</span> <h2 class=\"text-balance text-[clamp(24px,3vw,32px)] font-semibold tracking-tight\">Frequent questions</h2> </header> <div class=\"flex flex-col divide-y divide-white/5 border-y border-white/5\"> <details class=\"group py-4\"> <summary class=\"flex cursor-pointer list-none items-center justify-between gap-3 text-pretty text-[15px] font-medium text-foreground transition-colors hover:text-primary\"> <span>Is the 2026-07-28 MCP spec released yet?</span> <span class=\"text-muted-foreground transition-transform duration-200 group-open:rotate-45\" aria-hidden>+</span> </summary> <div class=\"mt-3 max-w-[64ch] text-pretty text-[15px] leading-relaxed text-muted-foreground\">Yes. The 2026-07-28 specification published as final on July 28, 2026, after a ten-week release-candidate validation window that began on May 21. It replaces 2025-11-25 as the current version. Publication is not a switch-off: servers and clients on 2025-11-25 keep working, and anything deprecated stays in the spec for at least twelve months.</div> </details><details class=\"group py-4\"> <summary class=\"flex cursor-pointer list-none items-center justify-between gap-3 text-pretty text-[15px] font-medium text-foreground transition-colors hover:text-primary\"> <span>What does it mean that MCP is now stateless?</span> <span class=\"text-muted-foreground transition-transform duration-200 group-open:rotate-45\" aria-hidden>+</span> </summary> <div class=\"mt-3 max-w-[64ch] text-pretty text-[15px] leading-relaxed text-muted-foreground\">The 2026-07-28 specification removes protocol-level sessions and the Mcp-Session-Id header from Streamable HTTP. List endpoints no longer vary per connection, and servers that need cross-call state mint explicit handles passed as ordinary tool arguments. This removes the sticky routing and shared session stores that horizontal deployments previously needed.</div> </details><details class=\"group py-4\"> <summary class=\"flex cursor-pointer list-none items-center justify-between gap-3 text-pretty text-[15px] font-medium text-foreground transition-colors hover:text-primary\"> <span>What are MCP Apps?</span> <span class=\"text-muted-foreground transition-transform duration-200 group-open:rotate-45\" aria-hidden>+</span> </summary> <div class=\"mt-3 max-w-[64ch] text-pretty text-[15px] leading-relaxed text-muted-foreground\">MCP Apps (SEP-1865) is a named extension that lets servers ship interactive HTML interfaces, which hosts render in a sandboxed iframe. Tools declare their UI templates ahead of time so hosts can prefetch, cache, and security-review them. UI actions go through the same audit and consent path as a direct tool call.</div> </details><details class=\"group py-4\"> <summary class=\"flex cursor-pointer list-none items-center justify-between gap-3 text-pretty text-[15px] font-medium text-foreground transition-colors hover:text-primary\"> <span>Why was the Tasks feature moved to an extension?</span> <span class=\"text-muted-foreground transition-transform duration-200 group-open:rotate-45\" aria-hidden>+</span> </summary> <div class=\"mt-3 max-w-[64ch] text-pretty text-[15px] leading-relaxed text-muted-foreground\">Tasks shipped as an experimental core feature in 2025-11-25, but production use prompted moving it out of the core protocol into an official extension (SEP-2663). The redesign replaces blocking tasks/result with polling via tasks/get, adds tasks/update for client input, removes tasks/list, and lets servers return task handles unsolicited.</div> </details><details class=\"group py-4\"> <summary class=\"flex cursor-pointer list-none items-center justify-between gap-3 text-pretty text-[15px] font-medium text-foreground transition-colors hover:text-primary\"> <span>Are Roots, Sampling, and Logging being removed from MCP?</span> <span class=\"text-muted-foreground transition-transform duration-200 group-open:rotate-45\" aria-hidden>+</span> </summary> <div class=\"mt-3 max-w-[64ch] text-pretty text-[15px] leading-relaxed text-muted-foreground\">They are deprecated as of the 2026-07-28 specification (SEP-2577), not removed. Under the new lifecycle policy (SEP-2596), a feature must stay Deprecated for at least twelve months from its deprecating revision before it is eligible for removal, so these features remain in the spec for now.</div> </details><details class=\"group py-4\"> <summary class=\"flex cursor-pointer list-none items-center justify-between gap-3 text-pretty text-[15px] font-medium text-foreground transition-colors hover:text-primary\"> <span>What is the Multi Round-Trip Requests pattern?</span> <span class=\"text-muted-foreground transition-transform duration-200 group-open:rotate-45\" aria-hidden>+</span> </summary> <div class=\"mt-3 max-w-[64ch] text-pretty text-[15px] leading-relaxed text-muted-foreground\">Multi Round-Trip Requests (SEP-2322) replaces server-initiated calls like sampling and elicitation. A server returns an InputRequiredResult carrying inputRequests plus an opaque requestState; the client gathers answers and re-issues the original call with inputResponses. This fits the stateless model because all state lives in the payload, not a held connection.</div> </details> </div> </section> <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is the 2026-07-28 MCP spec released yet?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. The 2026-07-28 specification published as final on July 28, 2026, after a ten-week release-candidate validation window that began on May 21. It replaces 2025-11-25 as the current version. Publication is not a switch-off: servers and clients on 2025-11-25 keep working, and anything deprecated stays in the spec for at least twelve months.\"}},{\"@type\":\"Question\",\"name\":\"What does it mean that MCP is now stateless?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The 2026-07-28 specification removes protocol-level sessions and the Mcp-Session-Id header from Streamable HTTP. List endpoints no longer vary per connection, and servers that need cross-call state mint explicit handles passed as ordinary tool arguments. This removes the sticky routing and shared session stores that horizontal deployments previously needed.\"}},{\"@type\":\"Question\",\"name\":\"What are MCP Apps?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"MCP Apps (SEP-1865) is a named extension that lets servers ship interactive HTML interfaces, which hosts render in a sandboxed iframe. Tools declare their UI templates ahead of time so hosts can prefetch, cache, and security-review them. UI actions go through the same audit and consent path as a direct tool call.\"}},{\"@type\":\"Question\",\"name\":\"Why was the Tasks feature moved to an extension?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Tasks shipped as an experimental core feature in 2025-11-25, but production use prompted moving it out of the core protocol into an official extension (SEP-2663). The redesign replaces blocking tasks/result with polling via tasks/get, adds tasks/update for client input, removes tasks/list, and lets servers return task handles unsolicited.\"}},{\"@type\":\"Question\",\"name\":\"Are Roots, Sampling, and Logging being removed from MCP?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"They are deprecated as of the 2026-07-28 specification (SEP-2577), not removed. Under the new lifecycle policy (SEP-2596), a feature must stay Deprecated for at least twelve months from its deprecating revision before it is eligible for removal, so these features remain in the spec for now.\"}},{\"@type\":\"Question\",\"name\":\"What is the Multi Round-Trip Requests pattern?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Multi Round-Trip Requests (SEP-2322) replaces server-initiated calls like sampling and elicitation. A server returns an InputRequiredResult carrying inputRequests plus an opaque requestState; the client gathers answers and re-issues the original call with inputResponses. This fits the stateless model because all state lives in the payload, not a held connection.\"}}]}</script> <section class=\"container py-16 sm:py-20\"> <header data-reveal class=\"mb-8 flex flex-col gap-3\"> <span class=\"w-fit rounded-full bg-white/[0.04] px-2.5 py-0.5 text-[11px] uppercase tracking-wider text-muted-foreground inset-ring inset-ring-white/10\">\nKeep reading\n</span> <h2 class=\"text-balance text-[clamp(22px,2.6vw,28px)] font-semibold tracking-tight\">Related guides</h2> </header> <ul data-reveal class=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\"> <li> <a href=\"/blog/mcp-apps-html-ui\" class=\"group flex h-full flex-col gap-2 rounded-xl bg-card/40 p-5 inset-ring inset-ring-white/10 transition-all duration-200 hover:-translate-y-0.5 hover:bg-card/70 hover:inset-ring-white/20\"> <span class=\"text-[15px] font-medium text-foreground group-hover:text-primary\">MCP Apps made HTML the official UI of agents</span> <span class=\"text-sm text-muted-foreground\">The first official extension: what it standardizes, its lifecycle, and where the HTML lives after the session.</span> </a> </li><li> <a href=\"/mcp-publish-html\" class=\"group flex h-full flex-col gap-2 rounded-xl bg-card/40 p-5 inset-ring inset-ring-white/10 transition-all duration-200 hover:-translate-y-0.5 hover:bg-card/70 hover:inset-ring-white/20\"> <span class=\"text-[15px] font-medium text-foreground group-hover:text-primary\">The MCP publish tool</span> <span class=\"text-sm text-muted-foreground\">Stacktree&#39;s publish verbs over MCP, in detail.</span> </a> </li><li> <a href=\"/blog/mcp-servers-explained-for-developers\" class=\"group flex h-full flex-col gap-2 rounded-xl bg-card/40 p-5 inset-ring inset-ring-white/10 transition-all duration-200 hover:-translate-y-0.5 hover:bg-card/70 hover:inset-ring-white/20\"> <span class=\"text-[15px] font-medium text-foreground group-hover:text-primary\">MCP servers explained for developers</span> <span class=\"text-sm text-muted-foreground\">What an MCP server is and how to build one.</span> </a> </li><li> <a href=\"/claude-ai-connector\" class=\"group flex h-full flex-col gap-2 rounded-xl bg-card/40 p-5 inset-ring inset-ring-white/10 transition-all duration-200 hover:-translate-y-0.5 hover:bg-card/70 hover:inset-ring-white/20\"> <span class=\"text-[15px] font-medium text-foreground group-hover:text-primary\">Stacktree on Claude.ai</span> <span class=\"text-sm text-muted-foreground\">HTTP transport plus OAuth flow.</span> </a> </li><li> <a href=\"/agents\" class=\"group flex h-full flex-col gap-2 rounded-xl bg-card/40 p-5 inset-ring inset-ring-white/10 transition-all duration-200 hover:-translate-y-0.5 hover:bg-card/70 hover:inset-ring-white/20\"> <span class=\"text-[15px] font-medium text-foreground group-hover:text-primary\">Stacktree for agents</span> <span class=\"text-sm text-muted-foreground\">Where a publish primitive fits in an agent stack.</span> </a> </li> </ul> </section> <section class=\"container py-10 sm:py-12\"> <header data-reveal class=\"mb-4 flex flex-col gap-2\"> <span class=\"w-fit rounded-full bg-white/[0.04] px-2.5 py-0.5 text-[11px] uppercase tracking-wider text-muted-foreground inset-ring inset-ring-white/10\">\nReferences\n</span> <h2 class=\"text-balance text-[clamp(18px,2.2vw,22px)] font-semibold tracking-tight\">Sources and further reading</h2> </header> <ul data-reveal class=\"grid grid-cols-1 gap-2 sm:grid-cols-2\"> <li> <a href=\"https://blog.modelcontextprotocol.io/posts/2026-07-28-ga/\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">The 2026-07-28 Specification Is Generally Available ↗</span> <span class=\"text-muted-foreground\">The final-release announcement for the 2026-07-28 specification.</span> </a> </li><li> <a href=\"https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">The 2026-07-28 MCP Specification Release Candidate ↗</span> <span class=\"text-muted-foreground\">The release-candidate announcement: stateless core, six SEPs, the validation window.</span> </a> </li><li> <a href=\"https://blog.modelcontextprotocol.io/posts/sdk-betas-2026-07-28/\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">Beta SDKs for the 2026-07-28 Release Candidate ↗</span> <span class=\"text-muted-foreground\">All four Tier 1 SDK betas, and the publish-date-not-a-switch-off framing.</span> </a> </li><li> <a href=\"https://modelcontextprotocol.io/specification/2026-07-28/changelog\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">Key Changes (2026-07-28 changelog) ↗</span> <span class=\"text-muted-foreground\">Authoritative list of the 2026-07-28 changes and SEP numbers cited here.</span> </a> </li><li> <a href=\"https://modelcontextprotocol.io/docs/learn/versioning\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">Versioning, Model Context Protocol ↗</span> <span class=\"text-muted-foreground\">Confirms the YYYY-MM-DD version scheme and the current version, 2026-07-28.</span> </a> </li><li> <a href=\"https://modelcontextprotocol.io/community/feature-lifecycle\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">Feature Lifecycle and Deprecation Policy ↗</span> <span class=\"text-muted-foreground\">The Active/Deprecated/Removed states and the twelve-month minimum window.</span> </a> </li><li> <a href=\"https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/main/schema/2026-07-28/schema.ts\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">MCP schema.ts, 2026-07-28 (SEP-2322) ↗</span> <span class=\"text-muted-foreground\">Source of truth for InputRequiredResult, inputRequests, and requestState.</span> </a> </li><li> <a href=\"https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">Elicitation (MCP 2025-11-25) ↗</span> <span class=\"text-muted-foreground\">The prior elicitation behavior and its form/url safety rules.</span> </a> </li><li> <a href=\"https://modelcontextprotocol.io/specification/2025-11-25/client/sampling\" rel=\"nofollow noopener external\" target=\"_blank\" class=\"group flex flex-col gap-1 rounded-lg bg-card/30 p-3 text-[13px] inset-ring inset-ring-white/5 transition-all duration-200 hover:bg-card/60 hover:inset-ring-white/15\"> <span class=\"font-medium text-foreground/90 group-hover:text-primary\">Sampling (MCP 2025-11-25) ↗</span> <span class=\"text-muted-foreground\">The prior sampling behavior and human-in-the-loop model.</span> </a> </li> </ul> </section> <section class=\"container py-20 sm:py-24\"> <div class=\"relative overflow-hidden rounded-2xl bg-gradient-to-b from-brand/[0.10] via-brand/[0.04] to-card/40 p-10 text-center inset-ring inset-ring-brand/25 sm:p-16\"> <div class=\"glow-brand pointer-events-none absolute inset-0\" aria-hidden></div> <div class=\"pointer-events-none absolute inset-x-12 top-0 h-px bg-gradient-to-r from-transparent via-brand/70 to-transparent\" aria-hidden></div> <div class=\"relative mx-auto flex max-w-[42ch] flex-col items-center gap-5\"> <h2 class=\"text-balance text-[clamp(26px,4vw,40px)] font-semibold leading-[1.1] tracking-[-0.02em]\"> Publish agent HTML over MCP. </h2> <p class=\"text-pretty text-muted-foreground\">Stacktree is an MCP-native publish primitive. Install it in Claude Code, Codex, or Cursor and try the protocol in action.</p> <button data-copy=\"npx stacktree-install\" data-copied-label=\"Copied — paste in your terminal ↵\" aria-label=\"Copy: npx stacktree-install\" class=\"install-pill group flex w-full max-w-[52ch] items-center justify-between gap-3 rounded-lg bg-black/40 px-3 py-2.5 text-left font-mono text-[13px] inset-ring inset-ring-white/10 transition-all duration-200 hover:bg-black/60 hover:inset-ring-white/20\"> <span class=\"flex min-w-0 items-center gap-2.5\"> <span class=\"rounded bg-brand/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-primary\">install</span> <span class=\"truncate text-foreground\">npx stacktree-install</span> </span> <span class=\"shrink-0 text-[10px] uppercase tracking-wider text-muted-foreground/60 transition-colors duration-150 group-[.is-copied]:text-emerald-300\" data-copy-label>\nCopy\n</span> </button> <a href=\"https://app.stacktr.ee\" class=\"inline-flex items-center justify-center rounded-md bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90\">\nSign up free →\n</a> </div> </div> </section>  </main> <footer class=\"mt-16 border-t border-white/5 py-12\"><div class=\"container flex flex-col gap-10\"><div class=\"flex flex-wrap items-end justify-between gap-6\"><div class=\"flex flex-col gap-3\"><div class=\"flex items-center gap-3\"><svg viewBox=\"0 0 64 64\" fill=\"none\" aria-hidden=\"true\" width=\"24\" height=\"24\" class=\"opacity-80\"><defs><linearGradient id=\"stk-grad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"64\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#a7f3d0\"></stop><stop offset=\"1\" stop-color=\"#34d399\"></stop></linearGradient></defs><path d=\"M32 6 L54 22 L32 38 L10 22 Z\" fill=\"url(#stk-grad)\" opacity=\"0.92\"></path><path d=\"M32 26 L54 42 L32 58 L10 42 Z\" fill=\"url(#stk-grad)\" opacity=\"0.55\"></path><g opacity=\"0.9\"><circle cx=\"17\" cy=\"21\" r=\"1.5\" fill=\"#ef4444\"></circle><circle cx=\"20.5\" cy=\"18.5\" r=\"1.5\" fill=\"#f59e0b\"></circle><circle cx=\"24\" cy=\"16\" r=\"1.5\" fill=\"#22c55e\"></circle></g><g opacity=\"0.5\"><circle cx=\"17\" cy=\"41\" r=\"1.5\" fill=\"#ef4444\"></circle><circle cx=\"20.5\" cy=\"38.5\" r=\"1.5\" fill=\"#f59e0b\"></circle><circle cx=\"24\" cy=\"36\" r=\"1.5\" fill=\"#22c55e\"></circle></g><g opacity=\"0.32\" stroke=\"#ffffff\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"><line x1=\"23.0\" y1=\"25.3\" x2=\"31.3\" y2=\"19.2\"></line><line x1=\"26.4\" y1=\"27.5\" x2=\"33.0\" y2=\"22.7\"></line><line x1=\"30.3\" y1=\"29.3\" x2=\"34.7\" y2=\"26.1\"></line></g><g opacity=\"0.18\" stroke=\"#ffffff\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"><line x1=\"23.0\" y1=\"45.3\" x2=\"31.3\" y2=\"39.2\"></line><line x1=\"26.4\" y1=\"47.5\" x2=\"33.0\" y2=\"42.7\"></line><line x1=\"30.3\" y1=\"49.3\" x2=\"34.7\" y2=\"46.1\"></line></g></svg><p class=\"text-sm text-muted-foreground\">Private hosting for the HTML your agents make.</p></div><div class=\"flex flex-wrap items-center gap-3\"><a href=\"https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&amp;utm_medium=badge&amp;utm_source=badge-featured\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"w-fit opacity-90 transition-opacity hover:opacity-100\"><img src=\"https://betalist.com/badges/featured?id=165927&amp;theme=color\" alt=\"Stacktree - Publish agent-built HTML sites instantly from your terminal | BetaList\" width=\"186\" height=\"54\" loading=\"lazy\" class=\"h-11 w-auto\"/></a><a href=\"https://devhunt.org/tool/stacktree\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Featured on DevHunt\" class=\"inline-flex h-11 items-center gap-2.5 rounded-md px-3.5 text-foreground inset-ring inset-ring-white/10 opacity-90 transition-all hover:bg-white/5 hover:opacity-100\"><span class=\"flex flex-col gap-1 leading-none\"><span class=\"font-mono text-[10px] uppercase tracking-wider text-muted-foreground/70\">Featured on</span><img src=\"/brand/devhunt.svg\" alt=\"DevHunt\" width=\"119\" height=\"15\" loading=\"lazy\" class=\"h-[15px] w-auto\"/></span></a><a href=\"https://buildlist.io\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Featured on Buildlist\" class=\"w-fit opacity-90 transition-opacity hover:opacity-100\"><img src=\"https://buildlist.io/badge-dark.svg\" alt=\"Featured on Buildlist\" loading=\"lazy\" class=\"h-11 w-auto\"/></a></div></div><a href=\"https://app.stacktr.ee\" class=\"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-foreground inset-ring inset-ring-white/10 transition-colors hover:bg-white/5\">Get started free</a></div><nav aria-label=\"Sitemap\" data-nav=\"footer\" class=\"grid grid-cols-2 gap-x-6 gap-y-8 border-t border-white/5 pt-10 md:grid-cols-3 lg:grid-cols-5\"><div class=\"flex flex-col gap-3\"><h2 class=\"text-[11px] font-mono uppercase tracking-wider text-muted-foreground/70\">Product</h2><ul class=\"flex flex-col gap-2\"><li><a href=\"/custom-domains\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Custom domains</a></li><li><a href=\"/client-feedback-loop\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Client feedback</a></li><li><a href=\"/one-time-view-links\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">One-time links</a></li><li><a href=\"/page-engagement\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">See how pages get read</a></li><li><a href=\"/security\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Security</a></li><li><a href=\"/demo\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Watch the demo</a></li></ul></div><div class=\"flex flex-col gap-3\"><h2 class=\"text-[11px] font-mono uppercase tracking-wider text-muted-foreground/70\">Agents</h2><ul class=\"flex flex-col gap-2\"><li><a href=\"/agents\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">All integrations</a></li><li><a href=\"/claude-code\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Claude Code</a></li><li><a href=\"/codex\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">OpenAI Codex</a></li><li><a href=\"/cursor\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Cursor</a></li><li><a href=\"/claude-ai-connector\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Claude.ai connector</a></li><li><a href=\"/mcp-publish-html\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">MCP server</a></li><li><a href=\"/deploy-html-from-claude-code\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Deploy from Claude Code</a></li><li><a href=\"/skills\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Skills</a></li><li><a href=\"/slack\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Slack app</a></li><li><a href=\"/x402\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Agent payments (x402)</a></li></ul></div><div class=\"flex flex-col gap-3\"><h2 class=\"text-[11px] font-mono uppercase tracking-wider text-muted-foreground/70\">Alternatives</h2><ul class=\"flex flex-col gap-2\"><li><a href=\"/alternatives\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">All comparisons</a></li><li><a href=\"/compare\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Head-to-head comparisons</a></li><li><a href=\"/tiiny-host-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Tiiny Host</a></li><li><a href=\"/github-pages-private-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">GitHub Pages (private)</a></li><li><a href=\"/vercel-alternative-for-agents\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Vercel</a></li><li><a href=\"/ngrok-alternative-for-html\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">ngrok</a></li><li><a href=\"/display-dev-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Display.dev</a></li><li><a href=\"/static-app-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Static.app</a></li><li><a href=\"/openai-codex-sites-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">OpenAI Codex Sites</a></li><li><a href=\"/here-now-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">here.now</a></li><li><a href=\"/shippage-ai-alternative\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Shippage</a></li><li><a href=\"/best-private-html-hosting\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Best private hosting</a></li></ul></div><div class=\"flex flex-col gap-3\"><h2 class=\"text-[11px] font-mono uppercase tracking-wider text-muted-foreground/70\">Use cases</h2><ul class=\"flex flex-col gap-2\"><li><a href=\"/use-cases\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">All use cases</a></li><li><a href=\"/share-with-clients\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Share with clients</a></li><li><a href=\"/share-html-file-with-client\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Send a file to a client</a></li><li><a href=\"/share-claude-artifacts\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Share Claude artifacts</a></li><li><a href=\"/share-jupyter-notebook-html\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Share Jupyter notebooks</a></li><li><a href=\"/host-storybook-privately\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Host Storybook privately</a></li><li><a href=\"/share-architecture-diagrams\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Architecture diagrams</a></li><li><a href=\"/host-ai-reports\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">AI-generated reports</a></li><li><a href=\"/internal-tool-hosting\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Internal HTML tools</a></li><li><a href=\"/private-html-hosting\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Private HTML hosting</a></li><li><a href=\"/vibe-coding-hosting\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Vibe-coded page hosting</a></li><li><a href=\"/website-builder-migration\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Leave a website builder</a></li></ul></div><div class=\"flex flex-col gap-3\"><h2 class=\"text-[11px] font-mono uppercase tracking-wider text-muted-foreground/70\">Learn</h2><ul class=\"flex flex-col gap-2\"><li><a href=\"/blog\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Blog</a></li><li><a href=\"/glossary\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Glossary</a></li><li><a href=\"/faq\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">FAQ</a></li><li><a href=\"/agent-loop-hosting\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Agent-loop hosting</a></li><li><a href=\"/blog/why-agents-need-a-publish-primitive\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Why agents need a publish primitive</a></li><li><a href=\"/blog/mcp-servers-explained-for-developers\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">MCP servers explained</a></li><li><a href=\"/blog/mcp-2026-spec-changes\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">What changed in the 2026-07 MCP spec</a></li><li><a href=\"/blog/sites-in-codex-explained\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Sites in Codex explained</a></li><li><a href=\"/blog/private-by-default-html-hosting\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Private-by-default hosting</a></li><li><a href=\"/blog/agent-paid-to-provision-itself\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">An agent paid us $1 (x402)</a></li><li><a href=\"/blog/loop-engineering-paywall\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">When a loop hits a paywall</a></li><li><a href=\"/pricing\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Pricing</a></li><li><a href=\"/self-host\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Self-host (new)</a></li><li><a href=\"/changelog\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Changelog</a></li><li><a href=\"https://stacktr.ee/docs\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">Docs</a></li><li><a href=\"/about\" class=\"text-sm text-muted-foreground transition-colors hover:text-foreground\">About</a></li></ul></div></nav><div class=\"flex flex-wrap items-center justify-between gap-4 border-t border-white/5 pt-6\"><p class=\"text-xs text-muted-foreground\">© <!-- -->2026<!-- --> Stacktree · stacktr.ee</p><nav aria-label=\"Legal\" class=\"flex flex-wrap gap-4 text-sm\"><a href=\"/privacy\" class=\"text-muted-foreground transition-colors hover:text-foreground\">Privacy</a><a href=\"/terms\" class=\"text-muted-foreground transition-colors hover:text-foreground\">Terms</a><a href=\"/security\" class=\"text-muted-foreground transition-colors hover:text-foreground\">Security</a><a href=\"https://app.stacktr.ee\" class=\"text-muted-foreground transition-colors hover:text-foreground\">Dashboard</a><a href=\"https://www.npmjs.com/package/stacktree-mcp\" class=\"text-muted-foreground transition-colors hover:text-foreground\">npm</a><a href=\"/sitemap.xml\" class=\"text-muted-foreground transition-colors hover:text-foreground\">Sitemap</a></nav></div></div></footer> <script src=\"/beacon.js\" defer></script>  <script>\n      (function () {\n        if (typeof IntersectionObserver === 'undefined') return;\n        const reduce = window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches;\n        const els = document.querySelectorAll('[data-reveal]');\n        if (reduce) { els.forEach((el) => el.classList.add('is-visible')); return; }\n        const io = new IntersectionObserver((entries) => {\n          entries.forEach((entry) => {\n            if (entry.isIntersecting) {\n              entry.target.classList.add('is-visible');\n              io.unobserve(entry.target);\n            }\n          });\n        }, { rootMargin: '0px 0px -10% 0px', threshold: 0.05 });\n        els.forEach((el) => io.observe(el));\n      })();\n    </script>  <script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event(\"astro:only\"));})();</script><astro-island uid=\"1ppUfd\" component-url=\"/_landing/CommandPalette.DJa0vvvw.js\" component-export=\"CommandPalette\" renderer-url=\"/_landing/client.fm8_GP-O.js\" props=\"{}\" ssr=\"\" client=\"only\" opts=\"{&quot;name&quot;:&quot;CommandPalette&quot;,&quot;value&quot;:&quot;react&quot;}\"></astro-island>  <script>\n      (function () {\n        document.addEventListener('click', async (e) => {\n          const btn = e.target.closest('[data-copy]');\n          if (!btn) return;\n          const value = btn.getAttribute('data-copy');\n          if (!value) return;\n          try {\n            await navigator.clipboard.writeText(value);\n            btn.classList.add('is-copied');\n            const label = btn.querySelector('[data-copy-label]');\n            const prev = label ? label.textContent : null;\n            const success = btn.getAttribute('data-copied-label') || 'copied';\n            if (label) label.textContent = success;\n            const ms = btn.matches('.install-pill') ? 2400 : 1400;\n            setTimeout(() => {\n              btn.classList.remove('is-copied');\n              if (label && prev !== null) label.textContent = prev;\n            }, ms);\n          } catch { /* clipboard denied — silent */ }\n        }, { passive: true });\n      })();\n    </script> <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a21f9a659886f40f',t:'MTc4NTE5NjgyMQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body> </html>","snapshot_chars":139300,"live_check":"changed"}]}