Blog · BL-01

What to Verify for MCP Integration and Acceptance After New Specifications

Based on the MCP 2026-07-28 specification and the August roadmap, distinguish between released changes, upcoming plans, and actual service support to establish integration and acceptance methods for versions, permissions, and business outcomes.

MCP changes are shifting from showing a tool to models to making tool integration a long-term maintainable service. For developers, the most valuable action is not changing the protocol date in configuration to the latest, but verifying which set of behaviors the client, server, and intermediate network actually support.

This article analyzes the MCP 2026-07-28 specification and the roadmap published subsequently. Data verification is current as of 9/5/2026. This is not an upgrade announcement for EveryInfra, nor does it imply that the changes mentioned in the text are live on EveryInfra or the client you use.

First Distinguish: Specification Already Released vs Roadmap Planned

MCP maintainers officially released version 2026-07-28 in the July 28 release announcement, with stateless protocol core being one of the main changes. This is different from a service completing migration: specifications tell implementers what to follow, while service version notes and actual responses tell users what is available now.

The new roadmap on 8/22/2026 (https://blog.modelcontextprotocol.io/posts/mcp-roadmap/) proposed subsequent directions such as Agent identity, result expression, and progressive tool discovery. Putting all these directions into a list of what the latest MCP supports will cause integrators to misjudge. Roadmaps help understand where the project is going, but cannot substitute for unreleased client features.

In the Hacker News discussion surrounding this roadmap (https://news.ycombinator.com/item?id=49399591), questions also arose about how many new requirements services will implement and progressive tool loading. These are valuable topic leads, not ecosystem adoption surveys. We care more about the practical question: do two endpoints both claiming MCP support actually speak the same protocol language?

Stateless Removes Protocol Sessions, Not Business Responsibility

According to the official change list (https://modelcontextprotocol.io/specification/2026-07-28/changelog), the new version removes the old initialization handshake and protocol-level session identifiers. Applications needing to preserve state across calls can use explicit business handles. In other words, the protocol no longer relies on hidden sessions on connections to remember all context, and applications can still have their own tasks, resources, and state.

The takeaway for integration design is: stop using active connections to substitute for clear task ownership. A time-consuming operation should at least answer who initiated it, which user has permission to query it, its current status, and how to verify results after network disconnection.

Consider a hypothetical scenario: an Agent initiates a report generation task, and the client disconnects. Upon reconnecting, users need to know whether the original report was generated, not just whether they can reconnect. Without task identifiers and result query methods, users might resubmit the same work even if protocol connections become simpler.

Therefore, we suggest designing protocol request numbers, business task identifiers, and mechanisms to prevent duplicate execution separately. They can be related, but the existence of one does not presume the other two problems are solved. This is an application-layer design judgment, not an automatic idempotency guarantee provided by MCP for all businesses.

HTTP Easier to Manage Does Not Mean Request Headers Suffice

The Streamable HTTP specification (https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http) in the new version defines request metadata headers such as Mcp-Method and uses Mcp-Name on applicable methods. Header and body corresponding fields must match. The specification still allows request-scoped SSE responses, so this change cannot be simplified as MCP no longer using streaming responses.

These designs make middleware easier to distinguish requests, but users still need two types of checks. The first is protocol checks: whether clear errors are returned for missing headers, unsupported versions, or mismatches between headers and bodies. The second is business checks: once identified as a tool call, whether the current user has permission to execute this tool and access this object.

Assume a query-only account writes query request headers but requests modifications in the body. If middleware and application layers trust each other halfway, the system may become inconsistent. Actual testing should construct harmless requests with such inconsistencies to confirm rejection, rather than only testing if correct request headers pass.

Similarly, HTTP 200 only indicates normal response acquisition, not necessarily target business completion. Tools may return business errors, wait for input, or output phased results. Returning these states to users is more important than uniformly displaying all responses as successful. For designing error classifications further, refer to API error handling and self-healing methods on the site (https://everyinfra.com/build/api-errors-self-healing).

Catalogs Can Cache, But Permissions Cannot Rely on Cache Guesses

The new specification introduces ttlMs and cacheScope for catalog responses, expressing freshness hints and shared cache scopes respectively. Specific applicable objects are listed in the change list cache notes (https://modelcontextprotocol.io/specification/2026-07-28/changelog). This helps reduce unnecessary duplicate discovery, but is not a promise that tool inventories will never change.

Integrators can treat catalogs as maps with timestamps and applicable identities. Maps help models choose tools, while final execution still requires re-accepting permission and parameter checks. A user seeing a tool once should not imply permanent usage rights.

Here is a scenario worth verifying separately: after user permissions are revoked, clients still retain old catalogs. The ideal user experience is not tools quietly disappearing or silent call failures, but execution endpoints explicitly refusing, clients explaining reasons, and updating catalogs at appropriate times. Do not obscure permission changes by extending cache times.

If building your own capability catalog, continue reading why real-time capability catalogs need verifiability (https://everyinfra.com/build/live-capability-catalog). This on-site article discusses the relationship between catalogs and actual behavior, without implying implementation of all new caching mechanisms.

Identity Issues Cannot Be Masked by Being Connected

Authorization server identity validation is part of this round of specification changes. RFC 9207 (https://www.rfc-editor.org/info/rfc9207/) defines the iss parameter, which helps clients confirm authorization responses originate from expected issuers and prevents authorization server confusion.

From a product perspective, identity includes at least three distinct questions: which user is active now, what tasks users permit this run to perform, and what permissions services actually expose during task execution. User login completion does not equal consent to all subsequent outbound traffic, deletions, or resource purchases.

We recommend having high-impact actions redisplay key objects and consequences before execution. For example, modifying configurations should state which environment and fields; sending messages should state recipients and content. Models can help prepare operations, but authorization must not hide in vague tool descriptions.

This explains why services having OAuth, clients supporting MCP, and tools being listable cannot individually constitute production integration acceptance results. Protocol discovery, identity authorization, and business completion should each have verifiable evidence.

Before Upgrading, Build a Small and Clear Acceptance Matrix

When verifying implementation against official version and compatibility notes (https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning), list each real usage combination separately rather than registering a single MCP support line. Each row includes client and version, server-supported protocol versions, transport and authentication methods used, verified operations, and unverified capabilities.

The first round does not need to test all tools, but must cover scenarios changing delivery judgments:

  • A read-only task returns understandable results belonging to the current user and target.
  • Unsupported versions, incorrect parameters, and expired credentials are explicitly rejected rather than falling into seemingly successful empty results.
  • After users reject high-impact operations, services do not execute those actions.
  • When requests are interrupted, original task status can be determined; when results are unknown, side-effect operations are not automatically repeated.
  • After permission changes, old catalogs or connections cannot continue providing revoked permissions.

These are our suggested integration acceptance items, not test reports completed for any product. Existing access instructions for EveryInfra are found in remote MCP access acceptance (https://everyinfra.com/build/remote-mcp-setup); reading should retain specific versions and testing boundaries without treating them as compatibility proof for 2026-07-28.

Deciding whether to upgrade should ultimately return to a specific question: does the new version solve clear problems in current deployments or usage, and do key client combinations work stably? If answers remain unclear, complete compatibility verification first; if clear, arrange migration and rollback. Protocol date updates are starting points, and users continuously completing tasks are results.