Skip to main content

objectiveai_sdk/mcp/shared/
annotations.rs

1//! Annotations for content blocks, providing clients additional context.
2
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6/// The role of a message sender.
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema)]
8#[serde(rename_all = "lowercase")]
9#[schemars(rename = "mcp.shared.Role")]
10pub enum Role {
11    #[schemars(title = "User")]
12    User,
13    #[schemars(title = "Assistant")]
14    Assistant,
15}
16
17/// Optional annotations providing clients additional context about content.
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
19#[schemars(rename = "mcp.shared.Annotations")]
20pub struct Annotations {
21    /// Intended audience(s) for the content.
22    #[serde(skip_serializing_if = "Option::is_none")]
23    #[schemars(extend("omitempty" = true))]
24    pub audience: Option<Vec<Role>>,
25    /// Importance hint, from 0 (least) to 1 (most).
26    #[serde(skip_serializing_if = "Option::is_none")]
27    #[schemars(extend("omitempty" = true))]
28    pub priority: Option<f64>,
29    /// ISO 8601 timestamp for the most recent modification.
30    #[serde(skip_serializing_if = "Option::is_none")]
31    #[schemars(extend("omitempty" = true))]
32    #[serde(rename = "lastModified")]
33    pub last_modified: Option<String>,
34}