{"version":"2.1.286","anchor":"sdk-mcp-manifests-remote-sessions-gated-by-tengu-ccr-sdk-mc","canonical_anchor":"sdk-initialize-gains-sdkmcpservermanifestsorigin-manifests","heading":"SDK MCP server manifests now report per-server outcomes and have rules for remote sessions","tier":"use","area":"SDK","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.286\/e\/sdk-mcp-manifests-remote-sessions-gated-by-tengu-ccr-sdk-mc","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.286","markdown":"### SDK MCP server manifests now report per-server outcomes and have rules for remote sessions\n\nSDK hosts passing MCP server manifests now get a per-server outcome, a freshness marker, and separate rules for remote sessions\n\n**What**\n\nThe Agent SDK lets a program drive Claude Code from code. MCP servers are add-ons that give Claude extra tools, and some run inside the host program itself. The SDK could already pass a \"manifest\" for each such server: the server's answers to its start-up call (initialize) and its tool-list call (tools\/list), so Claude Code does not have to ask for them live. This release changes how those manifests are accepted and reported, especially in remote sessions, which run on Anthropic's cloud rather than on your own computer.\n\n- `sdkMcpServerManifestsOrigin` is a new optional field in the SDK's initialize request. Its value `host_per_send` marks that the host put the manifests together for this particular send. Remote session transports ignore a manifest without this mark, and Claude Code refuses marked manifests older than five minutes.\n\n- `sdk_mcp_manifests_parked` is a new field in the initialize response. For each SDK MCP server it reports one outcome: `parked`, `already_connected`, `protocol_version_mismatch`, `malformed` or `not_honoured`. A parked manifest answers the server's initialize and first tools\/list without a live round trip.\n\n- On remote-session workers, manifests are not honoured and the servers go through the normal handshake over the control channel. Before, manifests were honoured everywhere except on an older kind of worker, and no per-server outcome was reported.\n\n- The `sdk_mcp_manifests` refresh channel is offered only when the server-controlled switch `tengu_sdk_mcp_manifests` allows it (built-in fallback: on). For remote transports it also needs a session limited to the owner's account (`owner_account_only`) and the switch `tengu_ccr_sdk_mcp_remote_manifests` (built-in fallback: off). Otherwise only `sdk_mcp_tools_list_changed` is used. A separate helper gives the reasons `flag_off` and `flag_unsettled`. Before, `tengu_sdk_mcp_manifests` was checked once per session.\n\n- A list that held only `mcp_read_resource_v1` now also holds `sdk_mcp_tools_list_changed` and `sdk_mcp_manifests`. The same change adds the name `model_saved_successor_notice` to a list and passes a new `gateCause` detail in one internal report.\n\n**Why**\n\nA host that uses manifests to speed up MCP server start-up can now see, for each server, whether the shortcut was used and why not. In remote sessions the shortcut depends on the origin marker, the manifest's age and the remote switch. No reading has been taken of `tengu_ccr_sdk_mcp_remote_manifests`, so whether remote sessions use manifests in practice is not known.\n\n- Flag `tengu_sdk_mcp_manifests`: On for this account, and not off by default (read for one account on one subscription tier against v2.1.286; this account: on, anonymous baseline: on, compiled default: on) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Flag `tengu_ccr_sdk_mcp_remote_manifests`: Not enough to say (read for one account on one subscription tier against v2.1.286; this account: no value returned, anonymous baseline: no value returned, compiled default: off) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Area: SDK\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 3\/5"}