<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Calvin Lin</title>
    <description>The latest articles on DEV Community by Calvin Lin (@calvin_lin_816fc5a7ce26a1).</description>
    <link>https://dev.to/calvin_lin_816fc5a7ce26a1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4054006%2F49407da8-6022-44ed-8207-a1950939d407.png</url>
      <title>DEV Community: Calvin Lin</title>
      <link>https://dev.to/calvin_lin_816fc5a7ce26a1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/calvin_lin_816fc5a7ce26a1"/>
    <language>en</language>
    <item>
      <title>MCP went stateless. Your agent workflow did not.</title>
      <dc:creator>Calvin Lin</dc:creator>
      <pubDate>Mon, 03 Aug 2026 16:51:49 +0000</pubDate>
      <link>https://dev.to/calvin_lin_816fc5a7ce26a1/mcp-went-stateless-your-agent-workflow-did-not-53p</link>
      <guid>https://dev.to/calvin_lin_816fc5a7ce26a1/mcp-went-stateless-your-agent-workflow-did-not-53p</guid>
      <description>&lt;p&gt;MCP &lt;code&gt;2026-07-28&lt;/code&gt; is now the stable Model Context Protocol revision. Its biggest architectural change is a stateless, sessionless core designed to run more naturally on ordinary HTTP infrastructure.&lt;/p&gt;

&lt;p&gt;That is a major improvement for protocol implementers. It does not make the work performed through MCP stateless.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: AI tools assisted with editing this article. The Manor AI team reviewed the technical claims against the stable MCP specification, changelog, and referenced SEPs before publication.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What problem MCP solves
&lt;/h2&gt;

&lt;p&gt;Before MCP, each AI host tended to invent its own adapters for files, databases, developer tools, and business systems. Every connection brought a new schema, discovery model, authentication flow, error model, and lifecycle.&lt;/p&gt;

&lt;p&gt;MCP gives hosts and servers a common way to expose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; a model can invoke;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources&lt;/strong&gt; that provide data and context;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompts&lt;/strong&gt; that package reusable interaction patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The protocol standardizes how capabilities are described and invoked. It does not decide why a capability should be used, who should approve it, or where the result should live tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed in MCP 2026-07-28
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The core protocol is stateless
&lt;/h3&gt;

&lt;p&gt;Earlier Streamable HTTP deployments could establish a session and carry an &lt;code&gt;Mcp-Session-Id&lt;/code&gt; across requests. Horizontally scaled servers then needed session affinity or shared session infrastructure.&lt;/p&gt;

&lt;p&gt;The new revision removes the initialization handshake and protocol-level session. Each request carries the information needed to understand it, while &lt;code&gt;server/discover&lt;/code&gt; lets clients inspect server capabilities.&lt;/p&gt;

&lt;p&gt;Any healthy server instance can now handle a request. This fits ordinary load balancers, gateways, caches, and tracing systems much better.&lt;/p&gt;

&lt;p&gt;When a workflow needs state across calls, the server can return an explicit handle and accept that handle as a normal argument later. A &lt;code&gt;basket_id&lt;/code&gt;, &lt;code&gt;browser_id&lt;/code&gt;, or &lt;code&gt;job_id&lt;/code&gt; becomes application data instead of invisible transport state.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Server-to-client interaction becomes an explicit round trip
&lt;/h3&gt;

&lt;p&gt;A server may still need more information while processing a request. The Multi Round-Trip Requests pattern makes that requirement explicit.&lt;/p&gt;

&lt;p&gt;Instead of depending on an open bidirectional session, an operation can return &lt;code&gt;input_required&lt;/code&gt;. The client collects the requested input and retries the operation with &lt;code&gt;inputResponses&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The correlation state is visible and routable rather than hidden inside a connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Extensions can evolve outside the core
&lt;/h3&gt;

&lt;p&gt;MCP now has a first-class extension model. Optional capabilities are advertised explicitly and can evolve without forcing every implementation to adopt them at the same time.&lt;/p&gt;

&lt;p&gt;Two extensions are especially relevant to agent applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP Apps&lt;/strong&gt; can render interactive interfaces such as forms and charts inside a conversation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Tasks&lt;/strong&gt; adds asynchronous operations with durable handles, polling, and mid-flight input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These extensions make MCP useful beyond short synchronous tool calls. They still do not replace the product-level operating model around a team.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Authorization improves, but host policy remains necessary
&lt;/h3&gt;

&lt;p&gt;The revision strengthens authorization and aligns it more closely with OAuth and OpenID Connect deployments.&lt;/p&gt;

&lt;p&gt;Authentication can establish whether a client may connect to a server. It cannot fully answer whether this specific agent should send an email, publish a post, modify a record, or delete a file in the current situation.&lt;/p&gt;

&lt;p&gt;The specification keeps that boundary explicit: host applications still need consent interfaces, access controls, and safe execution behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stateless protocol is not stateless work
&lt;/h2&gt;

&lt;p&gt;A tool call can be self-contained while the work around it remains durable.&lt;/p&gt;

&lt;p&gt;Consider a customer-onboarding workflow. It may include research, document generation, CRM updates, email drafts, approvals, and a final handoff. Several MCP calls may participate, but the team still needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the goal and current status;&lt;/li&gt;
&lt;li&gt;who owns the work;&lt;/li&gt;
&lt;li&gt;which documents and instructions were used;&lt;/li&gt;
&lt;li&gt;which tools were available;&lt;/li&gt;
&lt;li&gt;what completed and what failed;&lt;/li&gt;
&lt;li&gt;where human input was required;&lt;/li&gt;
&lt;li&gt;which evidence supports the result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that belongs in a transport session. It belongs in the host application's data model.&lt;/p&gt;

&lt;h2&gt;
  
  
  A prompt is not a durable task
&lt;/h2&gt;

&lt;p&gt;Chat is useful for expressing intent. It is a poor database for operational state.&lt;/p&gt;

&lt;p&gt;A real task needs an owner, priority, acceptance criteria, plan, status, evidence, comments, and a result that can be verified. If execution stops halfway through, another person should be able to see what happened and continue the work.&lt;/p&gt;

&lt;p&gt;The conversation can start the task. The task should become the record of the work.&lt;/p&gt;

&lt;p&gt;This also explains why an MCP Task and a product-level task are different concepts. The MCP extension represents the lifecycle of a protocol operation. A host application decides how that operation relates to a business goal, an owner, policy, review, and a result that remains useful later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context needs an operating boundary
&lt;/h2&gt;

&lt;p&gt;Giving every agent access to every document and every tool is convenient in a demo and dangerous in production.&lt;/p&gt;

&lt;p&gt;Context should belong to a boundary such as a project, workspace, customer account, team, or environment. That boundary groups the people, agents, knowledge, tools, integrations, and rules that belong to the same work.&lt;/p&gt;

&lt;p&gt;It answers two basic questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What information may this agent use?&lt;/li&gt;
&lt;li&gt;What actions may this agent take here?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without a boundary, retrieval and tool calling become global capabilities with unclear ownership.&lt;/p&gt;

&lt;h2&gt;
  
  
  Human approval belongs inside execution
&lt;/h2&gt;

&lt;p&gt;Approval should not be a popup added after an automation is designed.&lt;/p&gt;

&lt;p&gt;A task should be able to pause, show the proposed action and supporting evidence, record a decision, and continue from the same state. That creates a useful division of responsibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the agent prepares and explains the action;&lt;/li&gt;
&lt;li&gt;the runtime enforces the checkpoint;&lt;/li&gt;
&lt;li&gt;a person makes the decision;&lt;/li&gt;
&lt;li&gt;the task records what happened.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters most for customer communication, publishing, permission changes, payments, and destructive actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence makes agent work debuggable
&lt;/h2&gt;

&lt;p&gt;When automation produces a bad result, the first question is usually: why?&lt;/p&gt;

&lt;p&gt;The answer should not require reconstructing an entire chat transcript. A production host should preserve the plan, steps, tool results, artifacts, approvals, errors, and final status associated with the work.&lt;/p&gt;

&lt;p&gt;Evidence helps operators review a proposed action, developers debug a failed run, and teams improve a workflow after repeated use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What production hosts still need to provide
&lt;/h2&gt;

&lt;p&gt;The protocol is intentionally not a business-process engine. A production host still needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an operating boundary for people, agents, knowledge, and rules;&lt;/li&gt;
&lt;li&gt;persistent context beyond one conversation;&lt;/li&gt;
&lt;li&gt;work objects with ownership, status, acceptance criteria, and results;&lt;/li&gt;
&lt;li&gt;narrowly scoped tools and credentials;&lt;/li&gt;
&lt;li&gt;approval checkpoints for consequential actions;&lt;/li&gt;
&lt;li&gt;evidence that makes execution reviewable;&lt;/li&gt;
&lt;li&gt;workflows that can be repeated and improved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is not a weakness in MCP. It is the correct separation of concerns.&lt;/p&gt;

&lt;p&gt;MCP standardizes the integration surface. The host remains responsible for turning tool calls into work a team can operate.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical test
&lt;/h2&gt;

&lt;p&gt;Give an agent a small task with a verifiable result. Let it use one document and one scoped tool. Trigger an action that should require approval.&lt;/p&gt;

&lt;p&gt;Then verify that the system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;pauses before the consequential action;&lt;/li&gt;
&lt;li&gt;shows useful evidence;&lt;/li&gt;
&lt;li&gt;records the decision;&lt;/li&gt;
&lt;li&gt;resumes from the same state;&lt;/li&gt;
&lt;li&gt;leaves a result another person can inspect.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That path reveals whether the system is only an agent demo or something a team can operate.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/specification/2026-07-28" rel="noopener noreferrer"&gt;MCP 2026-07-28 specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/specification/2026-07-28/changelog" rel="noopener noreferrer"&gt;Key changes since 2025-11-25&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/seps/2567-sessionless-mcp" rel="noopener noreferrer"&gt;SEP-2567: Sessionless MCP via explicit state handles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/extensions/overview" rel="noopener noreferrer"&gt;MCP extensions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published by the Manor AI team on Medium. This DEV edition is a technical cross-post with the original URL set as canonical.&lt;/em&gt;&lt;br&gt;
``&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>architecture</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
