← In the News

MCP goes stateless, and starts a twelve-month clock on Roots, Sampling and Logging

The 2026-07-28 Specification · David Soria Parra and Den Delimarsky, lead maintainers · Model Context Protocol, July 28, 2026

Machine-readable Download Markdown

The largest revision since launch retires the initialize and initialized exchange along with the Mcp-Session-Id header, so any request can land on any server instance behind an ordinary load balancer. Server-initiated elicitation/create, sampling/createMessage and roots/list, which needed a held-open stream, are replaced by Multi Round-Trip Requests: the server returns resultType: "input_required" and the client retries with answers attached. Streamable HTTP requests must now carry Mcp-Method and Mcp-Name headers. Roots, Sampling, Logging, Dynamic Client Registration and the legacy HTTP+SSE transport are all deprecated, with a stated minimum of twelve months before removal. All four Tier 1 SDKs ship the new version.

Why it matters: The migration cost falls on session identifiers, and the maintainers' guidance is to stop hiding state in the transport: "mint an explicit handle from a tool and have the model pass it back as an argument." If you depend on Sampling or Logging you now have a clock rather than a surprise.