Skip to main content

objectiveai_sdk/mcp/tool/
content_block.rs

1//! MCP content block enum.
2//!
3//! A content block is the union of all content types that can appear in
4//! prompts, tool results, and sampling messages.
5
6use schemars::JsonSchema;
7use serde::{Deserialize, Serialize};
8
9/// A content block that can be used in prompts and tool results.
10#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
11#[serde(tag = "type")]
12#[schemars(rename = "mcp.tool.ContentBlock")]
13pub enum ContentBlock {
14    /// Text content.
15    #[serde(rename = "text")]
16    #[schemars(title = "Text")]
17    Text(super::TextContent),
18    /// Image content (base64-encoded).
19    #[serde(rename = "image")]
20    #[schemars(title = "Image")]
21    Image(super::ImageContent),
22    /// Audio content (base64-encoded).
23    #[serde(rename = "audio")]
24    #[schemars(title = "Audio")]
25    Audio(super::AudioContent),
26    /// A resource link.
27    #[serde(rename = "resource_link")]
28    #[schemars(title = "ResourceLink")]
29    ResourceLink(super::ResourceLink),
30    /// An embedded resource.
31    #[serde(rename = "resource")]
32    #[schemars(title = "EmbeddedResource")]
33    EmbeddedResource(super::EmbeddedResource),
34}