**DOs** - Boldly update MCP schema version: set to 2025-06-18 and regenerate types. ```rust // codex-rs/mcp-types/src/lib.rs pub const MCP_SCHEMA_VERSION: &str = "2025-06-18"; ``` ```python # codex-rs/mcp-types/generate_mcp_types.py SCHEMA_VERSION = "2025-06-18" ``` ```md # codex-rs/mcp-types/README.md https://modelcontextprotocol.io/specification/2025-06-18/basic ``` - Prefer ContentBlock everywhere tool results or prompt content appear. ```rust use mcp_types::{CallToolResult, ContentBlock, TextContent}; let result = CallToolResult { content: vec![ContentBlock::TextContent(TextContent { r#type: "text".into(), text: "Done".into(), annotations: None, _meta: None, })], is_error: None, structured_content: None, }; ``` - Return structuredContent for machine-readable tool output. ```rust use serde_json::json; let result = CallToolResult { content: vec![ContentBlock::TextContent(TextContent { r#type: "text".into(), text: "Indexed 3 files".into(), annotations: None, _meta: None, })], is_error: None, structured_content: Some(json!({ "indexed_count": 3 })), }; ``` - Handle new ResourceLink in UIs and clients. ```rust use mcp_types::ContentBlock; match block { ContentBlock::TextContent(t) => println!("{}", t.text), ContentBlock::ImageContent(_) => println!(""), ContentBlock::AudioContent(_) => println!("