Project the final CallToolResult to the negotiated protocol version so
version-gated fields are not emitted to peers that don't understand them.
CallToolResult.structuredContent is a 2025-06-18+ field and is stripped
for 2024-11-05 / 2025-03-26. An InputRequiredResult is draft-only (MRTR):
its {inputRequests, [requestState]} shape carries no content and exists
only on versions whose schema permits it. Emitting it to a non-MRTR peer,
whose CallToolResult requires content, is a programming error (a handler
ignoring the documented stateless contract), so reject it rather than
projecting an off-schema result onto the wire.
Project the final CallToolResult to the negotiated protocol version so version-gated fields are not emitted to peers that don't understand them. CallToolResult.structuredContent is a 2025-06-18+ field and is stripped for 2024-11-05 / 2025-03-26. An InputRequiredResult is draft-only (MRTR): its {inputRequests, [requestState]} shape carries no content and exists only on versions whose schema permits it. Emitting it to a non-MRTR peer, whose CallToolResult requires content, is a programming error (a handler ignoring the documented stateless contract), so reject it rather than projecting an off-schema result onto the wire.