turbomcp_protocol/types/
prompts.rs1use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8
9use super::{
10    content::Content,
11    core::{Cursor, Role},
12};
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct Prompt {
17    pub name: String,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
22    pub title: Option<String>,
23
24    #[serde(skip_serializing_if = "Option::is_none")]
26    pub description: Option<String>,
27
28    #[serde(skip_serializing_if = "Option::is_none")]
30    pub arguments: Option<Vec<PromptArgument>>,
31
32    #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
34    pub meta: Option<HashMap<String, serde_json::Value>>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct PromptArgument {
40    pub name: String,
42
43    #[serde(skip_serializing_if = "Option::is_none")]
45    pub title: Option<String>,
46
47    #[serde(skip_serializing_if = "Option::is_none")]
49    pub description: Option<String>,
50
51    #[serde(skip_serializing_if = "Option::is_none")]
53    pub required: Option<bool>,
54}
55
56pub type PromptInput = HashMap<String, serde_json::Value>;
58
59#[derive(Debug, Clone, Serialize, Deserialize, Default)]
61pub struct ListPromptsRequest {
62    #[serde(skip_serializing_if = "Option::is_none")]
66    pub cursor: Option<Cursor>,
67    #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
69    pub _meta: Option<serde_json::Value>,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct ListPromptsResult {
75    pub prompts: Vec<Prompt>,
77    #[serde(rename = "nextCursor", skip_serializing_if = "Option::is_none")]
79    pub next_cursor: Option<Cursor>,
80    #[serde(skip_serializing_if = "Option::is_none")]
82    pub _meta: Option<serde_json::Value>,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct GetPromptRequest {
88    pub name: String,
90    #[serde(skip_serializing_if = "Option::is_none")]
92    pub arguments: Option<PromptInput>,
93    #[serde(skip_serializing_if = "Option::is_none")]
95    pub _meta: Option<serde_json::Value>,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct GetPromptResult {
101    #[serde(skip_serializing_if = "Option::is_none")]
103    pub description: Option<String>,
104    pub messages: Vec<PromptMessage>,
106    #[serde(skip_serializing_if = "Option::is_none")]
108    pub _meta: Option<serde_json::Value>,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct PromptMessage {
114    pub role: Role,
116    pub content: Content,
118}