feat!: relax tool result structuredContent type (SEP-2106) (#933)

Re-applies #919 (reverted by #932): ToolResultContent.structured_content
becomes Option<Value> so non-object structured content is accepted,
matching CallToolResult and SEP-2106.

BREAKING CHANGE: ToolResultContent.structured_content changes from
Option<JsonObject> to Option<Value>.
This commit is contained in:
Dale Seo 2026-07-08 14:14:07 -04:00 • committed by GitHub
commit ba00b15097
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -10,7 +10,7 @@
// ToolUseContent/ToolResultContent are SEP-2577-deprecated; internal references are expected.
#![expect(deprecated)]
use serde::{Deserialize, Serialize};
use serde_json::json;
use serde_json::{Value, json};
use super::{Annotations, Meta, resource::ResourceContents};
@ -207,7 +207,7 @@ pub struct ToolResultContent {
pub tool_use_id: String,
pub content: Vec<ContentBlock>,
#[serde(skip_serializing_if = "Option::is_none")]
pub structured_content: Option<super::JsonObject>,
pub structured_content: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_error: Option<bool>,
}