The Model Context Protocol's 2026-07-28 specification is the largest revision since launch, and its headline change lands hardest on exactly the servers this audience builds: retrieval endpoints, document stores, and internal knowledge connectors.
What was removed
The protocol core is now stateless. Per Google's engineering writeup, the `initialize`/`initialized` handshake (SEP-2575) and the `Mcp-Session-Id` header (SEP-2567) are gone entirely; protocol version, client info, and client capabilities that were negotiated once at connection setup now ride inline in a `_meta` field on every request. The spec changelog adds the consequence that matters most for search: `tools/list`, `resources/list`, and `prompts/list` no longer vary per connection.
The operational payoff is real. The release notes describe a server that previously needed sticky sessions, a shared session store, and gateway packet inspection now running "behind a plain round-robin load balancer." If you've been paying for Redis purely to keep MCP sessions alive across pods, that line item goes away.
What it costs you
Servers don't lose state — they lose the place they were hiding it. The pattern the spec pushes is server-minted handles returned from tool calls and threaded back by the client as ordinary tool arguments. For a retrieval server, that means pagination cursors, result-set IDs, scoped corpus selections, and filter contexts all become visible arguments in the model's context rather than transport-layer bookkeeping. Obot's read of the change is the right one: state moves into the model's hands as an argument it can see and reason over, instead of being stashed where it can't.
Two second-order effects. First, per-connection tool lists are dead, so if you were exposing a tenant-specific or permission-filtered tool surface at connect time, that authorization now has to be enforced per call. Second, handles are now model-legible strings crossing a context boundary — treat them as untrusted input on the way back in and scope them to the caller, because there's no session to bind them to.
Long-running work moves too: Tasks left the experimental core for the `io.modelcontextprotocol/tasks` extension with a poll-based `tasks/get` plus a new `tasks/update` (SEP-2663). Change notifications now flow through a single `subscriptions/listen` stream clients opt into per notification type. Roots, Sampling, and Logging are deprecated under SEP-2577 with a twelve-month minimum runway, as is the legacy HTTP+SSE transport.
Migration reality
Upgrading is opt-in and version-negotiated per request. AWS describes AgentCore Gateway advertising both 2025-11-25 and 2026-07-28 through one configuration field, with nothing changing for existing clients until they select the new version — a reasonable template for anyone running a gateway in front of internal servers.
The updated roadmap published August 22 points at what's still missing: server-initiated events via webhooks and channels so clients stop polling, and `.well-known` Server Card metadata so a knowledge server can be discovered and evaluated without connecting to it. That second one is the piece enterprise search catalogs have been improvising around.