Blank white background with no objects or features visible.

Ask TFY: Debug, Analyze, and Act on Everything Happening Inside Your AI Gateway Learn More

MCP 2026-07-28 Ships: Revisiting Apps, Tasks, and Gateway Governance Under the Largest Protocol Revision Since Launch

By Boyu Wang

Published: August 6, 2026

In late July we published our analysis of governing MCP Apps and Tasks at the gateway — and the protocol promptly gave the post a sequel deadline. On July 28, 2026, the Model Context Protocol’s final 2026-07-28 specification shipped on schedule, after the maintainers’ release-candidate description — the eight words we quote once — called it "the largest revision of the protocol since launch" (the official RC announcement). The scope earns the label. The core goes stateless: protocol sessions and the Mcp-Session-Id header are gone, the initialization handshake is dropped, requests route on Mcp-Method and Mcp-Name headers, list and resource-read results carry cache hints, and applications that need state across calls can mint explicit handles — a basket_id, a ticket_id — returned by tools and passed back as ordinary arguments, a pattern the maintainers recommend over transport-hidden state because the model can see the handle and thread it between tools (the release notes). A formal extensions framework arrives, with reverse-DNS identifiers and independently versioned repositories — and the two features our July post analyzed are among its first official citizens: MCP Apps (server-rendered interactive UI, sandboxed at the host, whose app-initiated tool invocations traverse the ordinary tools/call path) and Tasks, which move out of the experimental core into io.modelcontextprotocol/tasks with a redesigned poll-based lifecycle — tasks/get, tasks/update, cooperative tasks/cancel — that is an explicit breaking change for anyone who shipped against the 2025-11-25 experimental API (WorkOS’s migration analysis; BOVO’s breaking-change notes). Authorization is hardened toward deployed OAuth/OIDC practice across six SEPs, Dynamic Client Registration is deprecated in favor of CIMD, and the protocol gains a formal deprecation lifecycle: Roots, Sampling, Logging, and DCR become eligible for removal no earlier than a revision released on or after July 28, 2027, while the legacy HTTP+SSE transport — deprecated since 2025 — tracks the lifecycle policy’s separately published transition schedule (the deprecated-features registry). Adoption was day-one: all four Tier 1 SDKs speak the new spec at release, AWS, Google Cloud, Microsoft, and Cloudflare were among the launch endorsements, and Claude and Claude Desktop are among the hosts already rendering MCP Apps (the release post; the Apps documentation). Our July post’s thesis — that Apps and Tasks each open a governance surface the gateway must close — survives the revision intact. But the final spec adds nuances we didn’t have then, three of which change how an enterprise should read its own MCP estate this quarter. This post is the promised revisit: what changed between the spec our post was written against and the one that just shipped, the before/after in one diagram, and the new governance work each delta creates.

Key Takeaways

Key Takeaways

  • The final MCP 2026-07-28 specification shipped on schedule as the protocol's largest revision since launch: a stateless core (sessions and handshake removed, header-based routing, cacheable list and resource-read results), a formal extensions framework, authorization hardened toward deployed OAuth/OIDC practice, and a formal deprecation lifecycle — Roots, Sampling, Logging, and DCR carry a minimum twelve-month window, while HTTP+SSE follows its own separately published removal schedule.
  • The two features our July analysis covered are now formal extensions — and Tasks' redesign (poll-based tasks/get, tasks/update, cooperative tasks/cancel) is an explicit breaking change for anyone who built against the 2025-11-25 experimental API, making Tasks migration this quarter's mandatory line item for the estates that adopted it.
  • Statelessness relocates state, not risk: applications that need continuity mint explicit handles that travel through model context as ordinary arguments — which can make a handle a capability-like artifact visible in transcripts, and handle governance a new line in the MCP audit.
  • Tasks formalize the temporal-validity problem: a durable task can outlive the authorization that started it, so per-task identity, mid-task revocation, and task-level budget attribution are the async pattern's recommended hygiene — application-level controls the extension leaves to implementers, and its tasks/cancel is cooperative by design.
  • Apps put untrusted, server-rendered UI inside trusted client chrome — the security analyses flag user-targeted phishing through trusted AI interfaces as the new abuse avenue — with a mitigating grace: tool calls an app initiates are forwarded as ordinary tools/call requests through the layer a gateway already governs, while app-specific ui/* messages remain host-side traffic the rendering client must control.
  • This is where TrueFoundry fits, on the migration quarter itself: the gateway is a natural collection point for a spec-version inventory (modern requests carry protocol version and client identity on every call — surfacing those fields is logging and reporting work on top of the documented MCP metrics, not a ready-made dashboard), the single place to implement the client-side auth hardening once for every consumer it fronts, and the layer where Task lifecycles and handle flows can get policy — recommended governance controls layered on TrueFoundry's documented authentication, access control, guardrails, tracing, and metrics.
  • The deprecation clock is the planning horizon: Roots, Sampling, Logging, and DCR keep working for at least twelve months (eligible for removal no earlier than a revision released on or after July 28, 2027) — almost exactly one enterprise budget cycle — while HTTP+SSE tracks its own removal schedule; the estates that inventory now migrate calmly, and the ones that don't will meet the removals as incidents.

1. Before and After: What Actually Changed

Our July post was written against the 2025-11-25 world: a stateful protocol (sticky sessions, an initialization handshake, session-ID headers that gateways had to track), Tasks as an experimental core feature, MCP Apps evolving separately as an extension under a still-informal extensions process, notifications over a legacy HTTP GET stream, and an authorization story still centered on Dynamic Client Registration. The 2026-07-28 final replaces each of those pillars, and the practical effect on production topology is immediate: a remote MCP server that needed sticky sessions and a shared session store can now run behind a plain round-robin load balancer with cacheable tool listings — the protocol has been re-shaped for ordinary HTTP infrastructure, which is precisely what “enterprise-grade” means at the transport layer (the RC announcement). The diagram and table below give the delta at a glance; three rows deserve the flag we put on them. Tasks’ move to the extension is breaking — the experimental 2025-11-25 API our post described does not carry forward, and internal servers built against it need auditing now. The deprecations are gentle but dated, with per-feature clocks — under the new Active→Deprecated→Removed lifecycle, Roots, Sampling, Logging, and DCR keep working for at least twelve months and become eligible for removal no earlier than a revision released on or after July 28, 2027, while the legacy HTTP+SSE transport, deprecated since 2025, follows the lifecycle policy’s transition rule and should be tracked on its separately published removal schedule (the normative deprecated-features registry). And the auth hardening lands partly on the client side — the mix-up-attack defense the security analyses prioritize (SEP-2468) is client work, which matters for who in an enterprise actually implements it, a point section 3 returns to.

Original before-and-after diagram of the MCP 2026-07-28 revision - sessions, experimental Tasks, DCR and legacy transports on the left; stateless core with handles, formal Apps and Tasks extensions, OAuth/OIDC-aligned authorization with CIMD, one subscriptions stream, and per-feature deprecation clocks on the right
Figure 1: MCP before and after the 2026-07-28 specification — the stateful, handshake-and-session world our July analysis was written against (left), and the shipped final (right): stateless core with explicit handles, the extensions framework carrying Apps and formalized Tasks, OAuth/OIDC-aligned authorization with CIMD, one subscriptions stream, and a dated deprecation lifecycle. Removal-eligibility dates vary per feature — HTTP+SSE tracks a separately published schedule. TrueFoundry editorial synthesis; original graphic.
MCP Specification Comparison
Area 2025-11-25 (as our July post covered) 2026-07-28 final Governance nuance
Core / transport Stateful: sessions, Mcp-Session-Id, init handshake; sticky infrastructure Stateless: header routing, cacheable list/read results, _meta context; plain load balancers Protocol-level session-ID hijacking surface removed; state now visible as handles in model context
Tasks Experimental core feature Formal extension (io.modelcontextprotocol/tasks): poll-based tasks/get, tasks/update, cooperative tasks/cancel — breaking vs experimental API Durable work outliving its authorization: per-task identity, revocation, and budget attribution are the recommended hygiene (application controls, not protocol guarantees)
Apps Emerging UI extension Formal extension: server-rendered UI; app-initiated tool calls travel the ordinary tools/call path, app-specific ui/* messages stay host-side Untrusted content in trusted chrome — sandbox and allow-list at the rendering client; proxied tool calls remain auditable at the gateway
Authorization Dynamic Client Registration; looser OAuth alignment Six SEPs toward deployed OAuth/OIDC practice; DCR deprecated for CIMD; Enterprise Managed Authorization (EMA) ships as an extension; client-side mix-up defense (SEP-2468) The client-side hardening is best implemented once, at the layer every consumer shares
Notifications Legacy HTTP GET change stream Single opt-in subscriptions/listen stream per notification type One stream to observe — and one to govern
Lifecycle Informal evolution Formal deprecation policy: Roots, Sampling, Logging, DCR deprecated, eligible for removal no earlier than 2027-07-28; HTTP+SSE on a separate transition schedule A dated migration clock — inventory now or meet the removals as incidents

2. Three Nuances We'd Add to Our July Analysis

Where applications need continuity, explicit handles replace hidden transport state — and they live in the transcript. The stateless design’s elegant move is that context a server chooses to retain now travels as an explicit handle the model passes back as an ordinary argument, a pattern the maintainers recommend over transport-hidden state because the model can see the handle, reason about it, and thread it between tools (the official release notes). The governance nuance our July post couldn’t have written: a handle in model context is a capability-like artifact in plaintext — a basket_id or ticket_id that names live server-side state, visible to everything that can read the transcript, and durable across compaction or not depending on the harness. Whether a captured handle is replayable depends on the server: a handle becomes security-sensitive when possession alone is sufficient to recover or mutate server-side state, so servers should treat it as opaque, authorize every use against the current principal, avoid embedding secrets in it, and log or redact it according to policy. Handles therefore join credentials on the list of things request-level tracing should bind to principals: who minted this handle, under whose authority, and is the caller presenting it inside the workflow it was minted for. Tasks turn temporal validity from a paper problem into a designed behavior. Our authorization-propagation work argued that long workflows outlive their grants; the formalized Tasks extension makes that the expected shape — work continues server-side while the client polls tasks/get — so the question “is the authorization that started this task still valid at completion?” now has a standard place to be asked and, in the extension itself, no mandated answer. The async pattern’s hygiene is therefore application work: implementations should persist an association between each task and the principal and authorization context under which it was created, attribute spend to the task, and propagate revocation to running work — remembering that tasks/cancel is cooperative, so a server acknowledges the intent but is not obligated to stop it (the Tasks extension). Apps are a phishing surface with a saving grace. The security analyses are right that server-rendered UI inside trusted client chrome creates a user-targeted phishing avenue — the trusted-interface problem (Akamai’s assessment) — and right that the rendered content must be treated as untrusted and sandboxed. The grace is architectural, with a boundary worth drawing precisely: an app and its host speak a JSON-RPC dialect of MCP over postMessage in which some messages are ordinary MCP operations like tools/call and most are app-specific ui/* messages (the Apps documentation). Tool invocations an app requests are forwarded by the host as ordinary tools/call requests — so the click that triggers server-side action is not a side channel; it reaches the same governed layer as a direct call, where consent, policy, and audit already live. The ui/* traffic, by contrast, never leaves the rendering client, which keeps its own sandbox and allow-list obligations. The tool-call surface funnels to the choke point; the UI surface stays at the edge — and both need governing, in their places.

Original diagram of the formalized Task lifecycle - create under a principal, poll via tasks/get, update, complete or cooperatively cancel - with recommended application-level governance: identity carriage, mid-task revocation, per-task budget attribution, and trace binding
Figure 2: The formalized Task lifecycle with its recommended governance attachments — created under a principal’s authority, polled via tasks/get, updated, completed or cooperatively cancelled — with identity, budget attribution, mid-task revocation, and trace binding shown as application-level controls layered on the extension, which itself standardizes lifecycle, polling, updates, and cooperative cancellation. TrueFoundry editorial synthesis; original graphic.

3. The Migration Quarter: Where the Gateway Earns Its Keep

Here is where TrueFoundry fits, and the final spec sharpens rather than changes the role our July post assigned the MCP Gateway: when the protocol itself is migrating, the layer every routed MCP call crosses becomes three things at once. The inventory. The first question of any migration — who is running what — is unanswerable by survey and tractable from traffic, because modern MCP requests carry their protocol version, client identity, capabilities, and method metadata on every call. Turning that into a migration inventory is logging and reporting work, not a checkbox that already exists: TrueFoundry’s current public metrics documentation covers MCP servers, tools, methods, callers, latency, failures, and traffic mix — the attribution substrate — and retaining and exposing protocol-version, client, and session-header fields from request records on top of it is the quarter’s first configuration deliverable. The once-for-everyone implementation point. The spec’s client-side hardening — issuer validation (SEP-2468), credential-to-issuer binding, the CIMD transition off DCR — is work each MCP consumer would otherwise implement separately and unevenly. Where the gateway operates as the estate’s downstream MCP client and implements the 2026-07-28 requirements, it can centralize that posture once so every agent behind it inherits it — the same consolidation logic our OAuth-at-the-MCP-layer analysis built for token handling, and a natural fit with the Okta and Azure AD integrations and centralized credential management TrueFoundry documents today; support for each new spec requirement should be verified against the deployed gateway version. The place the new surfaces get policy. Here the documented/recommended line matters, so we draw it. TrueFoundry currently documents centralized MCP authentication, server- and tool-level access control, tool approvals, pre- and post-tool-call guardrails, request tracing, and MCP metrics — controls that apply to every tools/call crossing the gateway, including calls an MCP App initiates through its host. Apps sandboxing and rendering allow-lists live at the rendering client; Task-lifecycle identity, per-task budget attribution, revocation that reaches running work, and handle-to-principal binding are the governance controls this revision recommends — reference architecture to build on that documented substrate, not shipped single features. None of this required the spec to change — which is the quiet vindication worth stating plainly: the 2026-07-28 revision moved the protocol’s security boundaries around substantially (sessions gone, auth relocated, new extension surfaces), and an estate whose governance lived at the gateway layer meets much of the churn as configuration, while an estate whose governance lived in per-server session logic and per-client auth code is now migrating its controls along with its protocol. Choke-point governance’s whole value proposition is that the choke point outlives the spec versions that flow through it — and this is the first MCP revision big enough to test it.

TrueFoundry's documented MCP tool-call guardrail flow - pre- and post-tool checks applied to tools/call requests crossing the gateway, including calls proxied from an MCP App through its host
Figure 3: TrueFoundry’s documented MCP tool-call guardrail flow. It can govern tools/call requests proxied from an MCP App through its host, but it does not represent app-specific ui/* messages or local UI interactions, which remain at the rendering client. Source: TrueFoundry documentation (official diagram, reproduced with attribution).
The Migration Audit Note
The migration audit. Four questions for this quarter: Can you list, from traffic rather than memory, every MCP server and client by spec version — and if your request logs don't yet retain version and client fields, is that logging turned on? Does anything in your estate call the 2025-11-25 experimental Tasks API — the one change that breaks outright? Who implements the client-side auth hardening (SEP-2468 issuer validation, the CIMD transition), and is it once or per-team? And which workloads still touch Roots, Sampling, Logging, or DCR — eligible for removal from July 2027 — or the HTTP+SSE transport, which runs on its own separately published removal schedule? Four answers now is a calm migration; four shrugs is a 2027 incident calendar.
TrueFoundry's documented Metrics Dashboard showing MCP server and tool traffic, methods, latency, failures, and usage
Figure 4: The documented Metrics Dashboard, covering MCP server and tool traffic, methods, latency, failures, and usage. A spec-version migration inventory would require additionally retaining and reporting protocol-version, client, and related compatibility fields from request records. Source: TrueFoundry documentation (official image, reproduced with attribution).

4. Boundaries, Stated Plainly

Sources and limits. The specification changes — the stateless core, extensions framework, Tasks redesign and its breaking status, Apps mechanics, authorization SEPs, deprecations, timelines, and adoption facts — are as documented in the official MCP release posts, specification pages, and the deprecated-features registry, with the cited analyses (WorkOS, Stacktree, Akamai, AAIF, BOVO) used for interpretation, migration experience, and security commentary; everything is paraphrased throughout with one sub-fifteen-word quotation attributed to the maintainers. The spec is just over a week old as we write, implementation details will settle over the coming months, and readers should treat the official specification and changelog as authoritative over any summary, ours included. Our July post is revisited, not retracted — its governance framing carries forward; where this post differs, this post is current. Our interest is the disclosed one: we sell the MCP-gateway layer this post argues the migration favors, and the claim is bounded accordingly — the gateway governs the traffic that actually crosses it, consolidates client-side obligations where it operates as the estate’s MCP client, and observes what it routes; it does not upgrade servers for you, does not make the Tasks migration optional for estates that adopted the experimental API, does not see app-host ui/* traffic, and does not substitute for the sandboxing work Apps require at the rendering client. Two candid limits. First, the spec’s security improvements are real and protocol-level — the protocol-level session-ID fixation and hijacking surface is removed outright, and server-initiated requests may now be issued only while the server is processing a client request, so every elicitation traces back to something the user or their agent started — meaning some of what gateways compensated for is now simply fixed; fair accounting says the plane’s job list shifted, it did not only grow. Second, extension governance is young: which extensions an enterprise permits, per team, is a policy surface the framework creates and nobody yet has mature practice for — we expect to revisit that, too. What the week licenses saying plainly: the protocol just made its bid to be infrastructure — stateless, extensible, dated deprecations, enterprise-aligned auth — and infrastructure-grade protocols deserve infrastructure-grade governance, which is the thesis our July post argued and the July spec, obligingly, just made bigger.

References

One direct quotation under fifteen words is used, attributed inline to the protocol’s maintainers via the cited release-candidate announcement; all specification details are paraphrased from the official posts, specification pages, and cited analyses, and the week-old final specification and its changelog are authoritative over this summary. This post revisits and updates our July analysis rather than retracting it. Our commercial interest in the MCP-gateway layer is disclosed in the text, and the spec’s protocol-level security improvements are credited as such. TrueFoundry capabilities are stated from public documentation current at the time of writing, with documented features distinguished from recommended governance patterns; the product images are TrueFoundry’s own documentation assets, reproduced with attribution.

The fastest way to build, govern and scale your AI

Sign Up
Table of Contents

One Gateway for Every LLM, Agent and MCP Server

Book a 30-min with our AI expert

Book a Demo

The fastest way to build, govern and scale your AI

Book Demo
Summarize with
ChatGPT logo by OpenAI
Perplexity AI logo
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Discover More

No items found.
August 6, 2026
|
5 min read

MCP 2026-07-28 Ships: Revisiting Apps, Tasks, and Gateway Governance Under the Largest Protocol Revision Since Launch

No items found.
August 6, 2026
|
5 min read

We Checked Alibaba's Math: Qwen3.8-Max's Price Advantage Doesn't Survive Contact With Real Tasks

LLMs & GenAI
August 5, 2026
|
5 min read

Self-Evolving Agents, Governed: The Enterprise Playbook for Systems That Rewrite Themselves

No items found.
August 3, 2026
|
5 min read

Claude Code --dangerously-skip-permissions Explicado: Riscos, Casos de Uso e Alternativas Mais Seguras

No items found.
No items found.

Recent Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Take a quick product tour
Start Product Tour
Product Tour