{"version":"2.1.221","anchor":"new-mcp-protocol-era-negotiation-with-probe-and-legacy-fallb","canonical_anchor":"new-mcp-protocol-era-negotiation-with-probe-and-legacy-fallb","heading":"New MCP protocol-era negotiation with probe and legacy fallback","tier":"soon","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/new-mcp-protocol-era-negotiation-with-probe-and-legacy-fallb","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### New MCP protocol-era negotiation with probe and legacy fallback\n\nIn auto mode MCP connections would probe for a modern protocol and fall back to legacy, but nothing enables it.\n\n**What**\n\nWhen negotiation is in auto mode, the client probes for a modern protocol era and falls back to a pinned legacy connection if the probe fails.\n\n**Details**\n\n- Selection is per transport: http, claudeai-proxy and stdio each consult their own gate and default to legacy absent a remote value; sse, ws, ide, in-process, ccr-proxy and sdk-control are always legacy.\n- Probe budgets differ per transport; stdio uses min(3000, connect-timeout\/3).\n- Connected clients record `negotiatedProtocolVersion` and `protocolEra`, and clients are constructed with an explicit `jsonSchemaValidator`.\n- An invalid `MCP_PROTOCOL_NEGOTIATION` value is warned about and ignored.\n- None of this machinery exists in 2.1.220.\n\n**Evidence**\n\n`MCP_PROTOCOL_NEGOTIATION=${t} is invalid; expected 'legacy' or 'auto' \u2014 ignoring`, `tengu_mcp_protocol_negotiation_stdio`\n\n- Flag `tengu_mcp_protocol_negotiation_stdio`: Off by default, switched on for this account (read for one account on one subscription tier against v2.1.221; this account: on, anonymous baseline: on, 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: MCP\n- Names: `MCP_PROTOCOL_NEGOTIATION`\n- Tier: Nothing to try yet\n- Useful: 3\/5\n- Signal: 4\/5\n- Present in the build but not switched on"}