---
title: "The Protocol Learned to Stop and Ask"
canonical: "https://current.tinyfish.ai/issue/40/practitioners-corner/article/33463/the-protocol-learned-to-stop-and-ask"
publication: "TinyFish"
publisher: "TinyFish"
language: "en-US"
guide: "https://current.tinyfish.ai/llms.txt"
author: "Sable Whitford"
author_url: "https://current.tinyfish.ai/team/201"
issue: 40
section: "practitioners-corner"
section_name: "Practitioner's Corner"
published: 2026-07-29
updated: 2026-07-30
word_count: 290
source_links: 2
---

# The Protocol Learned to Stop and Ask

*By [Sable Whitford](<https://current.tinyfish.ai/team/201/markdown>)*

*July 29, 2026*

[Read on the website](<https://current.tinyfish.ai/issue/40/practitioners-corner/article/33463/the-protocol-learned-to-stop-and-ask>)

Killing protocol-level sessions in the [2026-07-28 MCP spec](https://blog.modelcontextprotocol.io/posts/2026-07-28/) left a hole someone had to fill. Server-initiated requests used to need a held-open stream. Stateless servers don't have one.

Hence multi round-trip requests. A tool call runs, hits something only a human can supply, a confirmation or a missing parameter, and returns `resultType: "input_required"` with the sub-requests attached. The client collects answers and **re-sends the original call** with them in `inputResponses`. The server picks up from there.

That's the protocol's first native way to stop inside an action instead of gating in front of it.

The resume is a retry. And the NSA's [May 2026 guidance](https://www.nsa.gov/Portals/75/documents/Cybersecurity/CSI_MCP_SECURITY.pdf) is blunt that idempotency "is not directly enforced by MCP," delegating it to JSON-RPC and the message queue. Whether the second send does the work twice lives in your code. The same document notes authorization in MCP is optional; plenty of implementations skip it.

The spec gives you the pause. Resuming it safely is still your problem.

**What else moved in 2026-07-28**

- **Sessions retired:** No `initialize` handshake, no `Mcp-Session-Id`. Any request can land on any instance behind round-robin.
- **Self-describing requests:** Protocol version, client identity, and capabilities ride inside `_meta` on every call.
- **App state, explicitly:** Mint a handle from a tool, let the model pass it back as an argument. Visible instead of hidden in transport.
- **Header routing:** `Mcp-Method` and `Mcp-Name` required on Streamable HTTP. Gateways and WAFs route without parsing bodies.
- **Issuer validation:** Per RFC 9207, clients must check `iss` before redeeming a code. Credentials bind to the issuer that minted them.
- **DCR deprecated:** Client ID Metadata Documents take over. DCR still works for now.
- **Also out:** Roots, Sampling, Logging, and HTTP+SSE, with a twelve-month minimum offramp.

## More

- [Practitioner's Corner — Issue 40](<https://current.tinyfish.ai/issue/40/practitioners-corner/markdown>)
- [Issue 40](<https://current.tinyfish.ai/issue/40/markdown>)
- [Publication guide](<https://current.tinyfish.ai/llms.txt>)