← All posts AI & Automation 21 min read

What Is MCP (Model Context Protocol)? The 2026 Spec Removed the Session

MCP is an open standard for connecting AI applications to external systems: a server publishes what a system can do, and any compatible client can discover and call it. The 2026-07-28 revision removed the initialize handshake and protocol-level sessions, so most current explanations describe an era of the protocol that has passed. This guide gives…

What Is MCP guide title card — the 2026-07-28 specification removed sessions and the handshake
Quick Summary

What Is MCP (Model Context Protocol)? The Short Answer, and the Part Most Explainers Are Now Wrong About

  • MCP is an open standard for connecting AI applications to external systems. An MCP server describes what a system can do; any compatible AI client can then call it. One server replaces one integration per client.
  • Anthropic open-sourced MCP on 25 November 2024 and donated it to the Agentic AI Foundation, a Linux Foundation directed fund, announced 9 December 2025. It is no longer a single vendor’s protocol, which is why platform vendors ship it in their own products.
  • The current revision, 2026-07-28, removed the initialize handshake and protocol-level sessions. Every request now carries its own protocol version and capabilities. Most “what is MCP” diagrams still draw the session that no longer exists.
  • That split is operational, not academic. The specification’s own compatibility matrix has two cells that read “Fails”: a modern-only client against a legacy server, and a legacy-only client against a modern server.
  • Your commerce stack already ships MCP surfaces with three different auth models — Shopify’s Storefront MCP requires no authentication at all, WooCommerce’s deprecated endpoint takes an API-key header, and Oracle’s NetSuite AI Connector Service uses OAuth 2.0 with PKCE bound to a NetSuite role.
2026-07-28
Current MCP protocol revision — the largest change to the specification since launch
2025-06-18
Protocol revision Oracle requires your AI client to follow for the NetSuite AI Connector Service
7
Canonical WooCommerce abilities in 10.9 — four product, three order. No cart, checkout or payment.
0
Authentication required by a Shopify Storefront MCP server, per Shopify’s own documentation

MCP is an open standard for connecting AI applications to external systems: a server publishes what a system can do, and any compatible client can discover and call it. That definition is stable and it is the answer to the question. What is not stable is the mechanism underneath it, and that is where most current explanations of MCP have quietly gone out of date.

On 28 July 2026 the protocol removed the handshake. There is no initialize exchange, no protocol-level session, and no Mcp-Session-Id header. Every request now carries its own protocol version and client capabilities as metadata, and the server accepts or rejects each request independently. Diagrams showing a client opening a session with a server are drawing the previous era of the protocol.

This guide gives the definition, specifies what the July 2026 revision changed, and then does the part no general explainer does: it sets the three commerce MCP surfaces you can actually deploy today — WooCommerce, Shopify, and NetSuite — side by side on the axis that decides whether they are safe, which is authentication, and names the protocol-revision mismatch already sitting between them.

Contents

What MCP is, in one paragraph

The Model Context Protocol is an open standard that defines how an AI application discovers and calls capabilities in an external system. The protocol’s own documentation offers the comparison “a USB-C port for AI applications” — a standard connector, so a system implements it once rather than once per client. The practical effect is the elimination of per-client integration work: a server that exposes your order data is callable from any compatible client without a second build.

Three roles appear in every MCP deployment. The host is the AI application the user interacts with. The client lives inside the host and speaks the protocol. The server is the process that fronts your system — your store’s REST API, your ERP, your database — and translates protocol calls into real operations against it. Messages are JSON-RPC.

Governance is the durable fact worth citing. Anthropic open-sourced MCP on 25 November 2024, then donated it to the Agentic AI Foundation, a directed fund under the Linux Foundation, announced 9 December 2025, alongside Block’s goose and OpenAI’s AGENTS.md as the other founding contributions. AWS, Bloomberg, Cloudflare and Google joined as members. Vendor-neutral governance is why Oracle, WooCommerce and Shopify have each been willing to ship MCP endpoints into their own products rather than wait out a format war.

What the 28 July 2026 revision changed

The 2026-07-28 revision made MCP stateless, and the maintainers describe it as the largest revision since launch. The initialize / notifications/initialized handshake is gone. Protocol-level sessions and the Mcp-Session-Id header are gone from the Streamable HTTP transport. Every request now carries io.modelcontextprotocol/protocolVersion and io.modelcontextprotocol/clientCapabilities in its _meta field, and the server judges each request on its own.

The stated reason is deployability. With no session to pin a client to a process, requests route through ordinary load balancers and no shared session store is required. Servers that genuinely need state across calls are told to mint explicit handles and pass them as ordinary tool arguments, which makes that state visible in the tool contract instead of hidden in the transport.

Several other pieces moved in the same revision. Servers must now implement server/discover, an RPC that returns supported protocol versions, capabilities and identity in one call. The methods ping, logging/setLevel and notifications/roots/list_changed were removed. Stream resumability went with the sessions: the Last-Event-ID header and SSE event IDs are gone, so a broken response stream loses the in-flight request and the client must re-issue it as a new request with a new request ID. Results now carry a required resultType field, and list responses carry ttlMs and cacheScope caching hints.

The same tool call, before and after the July 2026 revision
Legacy handshake-based MCP compared with the stateless 2026-07-28 request model In the legacy revisions a client sends initialize, receives a session identifier, and must return every later call to the instance holding that session. In the 2026-07-28 revision there is no handshake and no session identifier: a single request carries its own protocol version and capabilities, so any server instance can answer it. One tool call, two protocol eras LEGACY — revisions 2025-11-25 and earlier MCP client MCP server one instance 1 — initialize 2 — result, carrying Mcp-Session-Id 3 — tools/call, replaying the session id Three round trips, and every later call must return to the instance holding the session. MODERN — revision 2026-07-28 MCP client Any instance behind the balancer tools/call — _meta carries protocolVersion and clientCapabilities on this one request One round trip, no session id, no sticky routing. The server judges each request on its own.

Three features were deprecated rather than removed: Roots, Sampling and Logging. They keep working through a minimum twelve-month deprecation window under the specification’s new feature-lifecycle policy, but new implementations are told not to adopt them. The suggested replacements are ordinary tool parameters or resource URIs instead of Roots, direct integration with a model provider’s API instead of Sampling, and stderr or OpenTelemetry instead of Logging. The HTTP+SSE transport, deprecated since March 2025, was reclassified as formally Deprecated in the same pass.

Which era do your client and server speak?

Check both ends before you assume a connection will work, because two of the seven possible combinations fail outright. The specification names the two eras: modern revisions carry version, identity and capabilities as per-request metadata (2026-07-28 and later), and legacy revisions establish a session with an initialize handshake (2025-11-25 and earlier). An implementation supporting both is dual-era.

The table is the specification’s own compatibility matrix, condensed.

Client era Server era Outcome
Modern Modern Works. Version mismatches surface as UnsupportedProtocolVersionError and the client retries with a supported version.
Modern Legacy Fails. The server may error, stay silent, or process an ambiguous method under legacy semantics.
Legacy Modern Fails. Legacy clients have no fall-forward mechanism. On HTTP the request is rejected with 400.
Dual-era Modern or legacy Works. The client probes, then stays modern or falls back to initialize.
Legacy Dual-era Works. The server answers initialize and serves the negotiated legacy revision.

Verdict: dual-era is the only safe posture for anything you ship this year, and it is a property of the server, not of a request — clients are told to cache the era they detected for the lifetime of that server process or origin. If you are commissioning an MCP server for your store or ERP, “which protocol revisions does it serve?” belongs in the acceptance criteria, not in the post-launch bug report.

This matters right now because the ecosystem is mid-migration. Oracle’s documentation for the NetSuite AI Connector Service requires the connecting AI client to follow “Protocol version 2025-06-18” — by the specification’s own definition, a legacy, handshake-based revision, three revisions behind current. It works today because the major AI clients are dual-era. It works because of a compatibility path, not because the mental model in the average explainer is current.

What an MCP server actually exposes

An MCP server exposes three things, and the distinction between them decides your risk. Tools are actions the model can invoke — create a record, update an order status. Resources are data the model can read — an order list, an inventory level. Prompts are reusable prompt templates the server offers for common tasks.

Tools are the only one of the three that changes anything, which makes the tool list the security review artifact for an MCP deployment — not the model, not the prompt, and not the vendor’s marketing page. Read the tool list and you have read the complete set of state changes an agent can make through that server.

Read it as the caller, though, not as an administrator. Under the current revision the tool set returned by tools/list must not vary per-connection, but it may vary by the authorization presented on the request — the specification’s example is returning only the tools the caller’s granted scopes permit, since credentials are now per-request input rather than connection state. A review performed with an admin credential can therefore show a different, larger surface than the one a given integration actually receives. Enumerate the list using the exact credential the integration will run with.

Note what is no longer in the recommended set. Sampling, the mechanism by which a server could ask the client’s model to generate text, is deprecated. So are Roots and Logging. A server design that leans on any of the three is building on a feature with a published removal path, and the specification maintains a registry of deprecated features precisely so that this is checkable rather than a matter of opinion.

What WooCommerce, Shopify and NetSuite actually ship

All three platforms in the commerce stack we work in have shipped MCP surfaces, and they are not equivalent. The differences that matter are the authentication model and how much of the write surface is exposed. The table below is drawn from each vendor’s own documentation, checked 11 August 2026.

Dimension WooCommerce Shopify Storefront MCP NetSuite AI Connector
Status Developer preview; breaking changes expected Shipped, on the store’s own domain Shipped, via SuiteApp
Built on WordPress Abilities API + MCP Adapter Hosted endpoint per shop MCP Standard Tools SuiteApp
Authentication API-key header on the deprecated endpoint None required OAuth 2.0 auth code grant with PKCE
Access scoped by Key permission: read, write, read_write Nothing — it is public The connecting user’s NetSuite role
Write surface Product create, update, delete; order status and notes Cart only Records reachable by that role via REST
Protocol revision Tracks the adapter Not stated in the tool docs 2025-06-18 required of the client

Verdict: treat these as three different exposure classes, not three flavours of the same feature. Shopify’s is a public storefront surface by design, WooCommerce’s is a credentialed admin surface still in preview, and NetSuite’s is an authenticated employee surface that inherits an existing permission model. The only one you can safely point a third-party agent at without further work is the one that was built to be public.

WooCommerce’s canonical set arrived with version 10.9, in an advisory dated 12 May 2026: four product abilities (woocommerce/products-query, product-create, product-update, product-delete) and three order abilities (woocommerce/orders-query, order-update-status, order-add-note). WooCommerce describes them as a transport-neutral capability contract rather than REST wrappers, usable from MCP, CLI and admin tooling alike. Its documentation also carries an explicit warning that order and customer operations may expose personally identifiable information and that compliance remains the store operator’s responsibility. For where this sits relative to agent-driven checkout, see our breakdown of what agentic commerce ships today versus what has only been announced.

Shopify’s Storefront MCP exposes get_cart, update_cart and search_shop_policies_and_faqs at /api/mcp on the shop domain, with catalog tools search_catalog, lookup_catalog and get_product on a separate /api/ucp/mcp endpoint. Shopify’s documentation states plainly that Storefront MCP servers do not require authentication.

Oracle’s NetSuite AI Connector Service is the most tightly bound of the three. Connections go to https://<accountid>.suitetalk.api.netsuite.com/services/mcp/v1/suiteapp/com.netsuite.mcpstandardtools, authenticate with OAuth 2.0 authorization code grant with PKCE, and install an integration record you can manage under Setup > Integration > Manage Integrations. Oracle is explicit about the boundary: “All data access and actions are determined by your NetSuite role and permissions. The tools don’t provide any additional access beyond what your NetSuite role allows.” Oracle also states the service has not been assessed for HIPAA compliance and must not be used for protected health information. Execution logs are retained 21 days in production and 7 days in sandbox.

Why the three auth models are not interchangeable

The auth model determines who can call the tools, and the three platforms answer that question in three incompatible ways — so a pattern that is correct on one is a breach on another. Copying a Shopify storefront integration pattern onto a WooCommerce admin endpoint is the specific mistake this section exists to prevent.

Shopify’s Storefront MCP is unauthenticated because its tools are scoped to what a shopper could already see and do: browse the catalog, manipulate their own cart, read policies. Publishing that to any agent is the intended design, not an oversight. Nothing in that tool set reads another customer’s data.

The stateless revision does add a consequence worth tracing on that surface. With no protocol session, a server that must carry state across calls returns an explicit handle and accepts it as an ordinary tool argument — the specification’s own worked example is a shopping cart. It then draws the distinction that matters here: on an authenticated server a handle is a name, and the server revalidates the caller’s authorization against it on every call; on an unauthenticated server the handle is necessarily a bearer token. A cart handle on a public storefront endpoint is therefore the credential, and the specification’s guidance follows directly — generate it with sufficient entropy, keep it opaque, and give it a bounded lifetime. A guessable cart identifier is another shopper’s cart.

WooCommerce’s deprecated MCP endpoint authenticates with an X-MCP-API-Key header carrying a REST API consumer key and secret, at one of three permission levels — read, write, or read_write. That credential is store-wide. It does not represent a shopper, and it does not narrow by record. Issuing a read_write key to reach one reporting use case grants the full product-delete and order-mutation surface along with it.

NetSuite inverts the model: the agent acts as a specific NetSuite user, and every tool call is filtered through that user’s role permissions. The security question stops being “what does this integration’s credential allow” and becomes “which role am I connecting as” — a question your NetSuite administrator can already answer, and the reason a dedicated, minimally-permissioned role is the right first move before anyone connects a client. The same least-privilege discipline that governs calling AI APIs from SuiteScript applies here in reverse: the traffic is inbound, but the governance is the same account budget.

What MCP does not let an agent do to your store

No shipped commerce MCP surface currently exposes a payment or checkout write, and that is the most useful thing to know before the conversation turns to risk. WooCommerce’s canonical ability set covers products and orders only — there is no cart, checkout, payment, customer or coupon ability in it. Shopify’s Storefront MCP can build a cart, not charge one. NetSuite’s tools reach what the connecting role can already reach through REST, which means the ceiling is your existing permission design rather than anything MCP added.

This is a deliberate boundary rather than an accident of scheduling, and it holds the line at the point where errors stop being recoverable. An agent that mislabels a product or adds a wrong order note has made a reversible mistake. An agent that captures a payment has not.

The practical consequence is that the risk in a store-side MCP deployment is concentrated in reads and in low-grade writes, which is exactly where it is easiest to under-estimate. An unscoped read tool over order data is a bulk PII egress path, and WooCommerce’s own documentation flags precisely that. Treat a broad orders-query ability as a data-export surface, because that is what it is. The same framing applies to any model reading production records — the reasoning we set out in how language models are actually being used inside NetSuite workflows.

MCP calls spend the same NetSuite concurrency budget as your integrations

An MCP connection is not a separate lane. Oracle states that unless an administrator assigns the integration record a specific concurrency governance limit, the AI Connector Service uses the same resources as every other integration and is limited by the account’s concurrent-request limit — and it can only use the portion left unallocated after other integrations have taken their share.

Oracle’s own worked example: with a total integration concurrency limit of five concurrent requests and two allocated to a REST web services integration, the AI Connector Service can use only the remaining three. Exceed it and the caller receives a Too Many Requests error, at which point the user has to ask the AI client to retry.

There is a multiplier here that is easy to miss when sizing this. Oracle notes that a single prompt calling a single MCP tool produces one main request that is “typically preceded by additional requests specified by the MCP protocol,” and tells you to count those too. One user question is therefore worth more than one slot against the account budget. Oracle also notes AI clients typically support up to about 5,000 rows per call, and that large queries risk token limits and timeouts. Plan MCP capacity against the same account-level ceiling that governs your sync jobs, not as new headroom — the arithmetic is the one covered in our AI for commerce teams guide hub.

The security rules the specification makes mandatory

MCP’s authorization chapter is normative, and three of its requirements exist specifically to stop token misuse — so they are the ones to check in any server you did not write yourself. A protected MCP server acts as an OAuth 2.1 resource server. It must implement OAuth 2.0 Protected Resource Metadata (RFC 9728) so clients can discover its authorization server.

The audience rules are the load-bearing ones. An MCP server must validate that an access token was issued specifically for it as the intended audience, per RFC 8707. It must only accept tokens valid for its own resources, and it must not accept or transit any other token. Clients must not send a server any token that was not issued by that server’s authorization server, and must send the resource parameter identifying the target server in both authorization and token requests — regardless of whether the authorization server supports it.

Read together, those requirements ban token passthrough: an MCP server that forwards the token it received to a downstream API is violating the specification, not merely cutting a corner. The revision also tightened client-side validation with RFC 9207 issuer checking, and deprecated Dynamic Client Registration in favour of Client ID Metadata Documents. For the risk vocabulary around what an agent does once it holds a tool, use the OWASP GenAI Security Project’s named categories — excessive agency, tool misuse, goal hijacking — rather than improvised terms.

Before you expose a store or ERP over MCP

Work down this list in order. It is the sequence that catches the expensive problems before they reach production data.

  • Confirm which protocol revisions your server serves, and require dual-era support in writing before accepting delivery.
  • Confirm the revision your intended AI client speaks, and check it against the server’s list — the compatibility matrix has two failing cells.
  • Read the server’s full tool list and treat it as the complete set of possible state changes.
  • Create a dedicated, minimally-permissioned NetSuite role for the connection rather than reusing an administrator role.
  • Classify every read tool that touches orders or customers as a PII egress path and record where that data goes.
  • Verify the server validates token audience and does not forward received tokens to downstream APIs.
  • Check the integration record’s concurrency allocation before go-live, and size for more than one request per user prompt.
  • Confirm no write tool reaches payment, refund or fulfilment capture without a human approval step.
  • Record log retention limits against your own audit requirements — 21 days production and 7 days sandbox for the NetSuite service.
  • Re-check any deprecated feature the server depends on: Roots, Sampling, Logging and HTTP+SSE all have published removal paths.

MCP removes per-client integration work; it does not remove integration design. Deciding which records an agent may reach, under which identity, with which writes gated, is the same scoping exercise that governs any other connection into a store or an ERP — and it is the part that does not come out of a specification. If you are working out where an agent surface fits against an existing NetSuite and WooCommerce sync, that scoping is the work we do.

Get the working checklists

The runbooks and decision checklists from these guides, as printable PDFs — free in the SoftXone guide library.

Browse the guide library →

Sources & Further Reading

References

  1. MCP specification — key changes, revision 2026-07-28Model Context Protocol — the removal of sessions and the initialize handshake, server/discover, and the deprecation of Roots, Sampling and Logging.
  2. MCP specification — versioning and compatibilityModel Context Protocol — the modern/legacy/dual-era definitions and the client-server compatibility matrix.
  3. MCP specification — authorizationModel Context Protocol — OAuth 2.1 resource server role, RFC 9728 and RFC 8707 requirements, and the token audience rules.
  4. What is the Model Context Protocol?Model Context Protocol — the canonical definition and the USB-C comparison.
  5. Introducing the Model Context ProtocolAnthropic — the original announcement, dated 25 November 2024.
  6. MCP joins the Agentic AI FoundationModel Context Protocol — the December 2025 donation to the Linux Foundation directed fund.
  7. WooCommerce MCP integrationWooCommerce — developer-preview status, the API-key header on the deprecated endpoint, and the PII warning.
  8. Canonical WooCommerce abilities for products and ordersWooCommerce — the seven canonical abilities shipping in 10.9, with exact ability names.
  9. Shopify Storefront MCP serverShopify — the tool list, the two endpoints, and the statement that no authentication is required.
  10. NetSuite AI Connector Service FAQOracle — the required client protocol version, row limits, HIPAA statement and log retention.
  11. NetSuite AI Connector Service and concurrency governanceOracle — how MCP requests draw on the account’s integration concurrency limit.
  12. OWASP GenAI Security ProjectOWASP — the named risk taxonomies for LLM and agentic applications.

Frequently asked questions

Do I need to rebuild an existing MCP server for the 2026-07-28 revision?

Not immediately, but plan the work. The specification’s compatibility matrix shows a legacy-only server failing against a modern-only client and a legacy-only client failing against a modern-only server; only dual-era implementations bridge both. Roots, Sampling and Logging are deprecated rather than removed, and the new feature-lifecycle policy guarantees a minimum twelve-month window before any deprecated feature can be dropped. The low-risk sequence is to add modern per-request handling alongside the existing handshake path, verify against a dual-era client, and retire the legacy path only once your own clients no longer need it.

Is an MCP server safer than giving an AI tool my REST API keys?

Only if the tool list is narrower than the API behind it. MCP adds no permission layer of its own, so a server reaches exactly what its credential reaches. Oracle states that the NetSuite tools provide no access beyond what the connecting role allows, and a WooCommerce read_write API key carries the full product-delete and order-mutation surface regardless of the narrow use case that justified issuing it. The security gain comes from deliberately designing a small tool set and a minimal credential, not from adopting the protocol.

Can an AI agent take a payment or issue a refund through MCP today?

No shipped commerce MCP surface exposes a payment or refund write. WooCommerce’s canonical ability set covers four product operations and three order operations, with no cart, checkout, payment, customer or coupon ability among them. Shopify’s Storefront MCP can create and update a cart but cannot charge it. NetSuite’s tools are bounded by the connecting role’s existing REST permissions, so a payment-adjacent write is reachable only if that role already holds it, which is the practical argument for connecting through a dedicated minimally-permissioned role rather than an administrator one.

What does running MCP against NetSuite actually cost in capacity terms?

The constraint is concurrency rather than per-call pricing. Oracle states the AI Connector Service draws on the account’s existing integration concurrency limit and can use only the share left unallocated to other integrations, giving the worked example of three remaining slots from a limit of five when a REST integration holds two. One user prompt costs more than one slot: Oracle notes a tool call is typically preceded by additional protocol requests and tells you to count them. Exceeding the limit returns a Too Many Requests error that the user must ask the client to retry.

Which AI clients does Oracle document for the NetSuite AI Connector Service?

Oracle documents Claude and ChatGPT as supported clients, with connection instructions also given for Postman, Codex, Claude Code and Copilot Studio. The stated client requirements are remote MCP support, protocol version 2025-06-18, Streamable HTTP, and OAuth 2.0 authorization code grant with PKCE. Claude needs a Pro plan or higher, and some ChatGPT plans require Developer Mode before MCP connectors appear. Confirm the current list in Oracle’s own documentation before committing to a client, because client capabilities and plan boundaries change faster than ERP documentation is revised.

Related guides

Discussion

Leave a Reply

Your email address will not be published. Required fields are marked *


Ship it

Need this in your stack?

We build, integrate, and ship — no calls, just delivery.

Start a project →