| HTTP JSON-RPC transport | aimcptrHttp | TransportOptions.Http | One request, one response, connection closes. |
| HTTP Streamable transport | aimcptrHttpStreamable | TransportOptions.HttpStreamable | Keep-alive plus an SSE stream, which is what carries notifications and server-initiated requests. |
| stdio transport | aimcptrStdio | separate stdio host | The client spawns a local subprocess. Server-side stdio is provided by a dedicated host class rather than the palette component. |
| Handshake | Initialize | OnMCPInitialize | Capability negotiation and session id assignment. |
| Sessions | Session, HeartBeat | OnMCPSessionNew, OnMCPSessionEnd, SessionTimeout | Idle sessions expire on the server, the client can keep one alive with periodic pings. |
| Tools | ListTools, RequestTool | Tools, OnMCPRequestTool | List and call. The server raises an event where your code does the work. |
| Prompts | ListPrompts, RequestPrompt | Prompts, OnMCPRequestPrompt | Same pattern as tools. |
| Resources | ListResources, RequestResource, ListResourceTemplates | Resources, ResourceTemplates, OnMCPRequestResource | Lists accept a cursor for paging. |
| Resource subscriptions | SubscribeResource, UnsubscribeResource | SendNotificationResourcesUpdated | Follow a resource and be told when it changes. |
| List-changed notifications | received | SendNotificationToolsListChanged and the prompt and resource equivalents | Requires the streamable transport. |
| Roots | OnMCPListRoots | RequestRootsList | The server asks the client which filesystem roots it may use. |
| Sampling | OnMCPSamplingCreateMessage | RequestSamplingCreateMessage | The server asks the client's model for a completion. |
| Elicitation | OnMCPElicitationCreate | RequestElicitationCreate | The server asks the user for input through the client. |
| Completion | Complete | handled | Argument value completion for tools and prompts. |
| Logging | SetLoggingLevel | SendLogMessage | Structured log messages at a client-controlled level. |
| Authentication | API key, custom header, OAuth 2.0 | API key, custom header, OAuth 2.0 | MCPOptions.AuthenticationOptions on both sides. |
| Built-in authorization server | — | ✓ | Dynamic client registration, consent page, PKCE and refresh tokens, following RFC 8414 and RFC 9728. |
| Origin validation | — | HttpStreamable.ValidateOrigin | Pins a session to the Origin header it was created with. |
| MCP 2026-07-28 (stateless) | MCPOptions.ProtocolEra, Discover | era detected per request | Per-request _meta, server/discover, validated Mcp-Method, Mcp-Name and Mcp-Param headers. The client falls back to 2025-11-25 automatically. |
| Cache hints | received | MCPOptions.Cache | ttlMs and cacheScope on 2026-07-28 results. |
| subscriptions/listen | SubscriptionsListen, SubscriptionsCancel | MCPOptions.Subscriptions | One stream for list changes and resource updates. |
| Multi Round-Trip Requests | OnMCPInputRequired | aResponse.InputRequired, MCPOptions.MRTR | Elicitation (form and URL), sampling and roots with an HMAC-signed requestState. |
| Tasks extension | MCPOptions.Tasks.Enabled, TasksGet | CreateTask, MCPOptions.Tasks | io.modelcontextprotocol/tasks for long running tool calls; the client polls automatically with AutoPoll. |
| Client authorization | MCPOptions.Authorization | — | Protected resource metadata discovery, Client ID Metadata Documents, dynamic registration fallback, PKCE, resource indicators, RFC 9207 iss validation, per-issuer credentials. |