#[non_exhaustive]pub enum ServerResult {
Show 18 variants
DiscoverResult(DiscoverResult),
InitializeResult(InitializeResult),
CompleteResult(CompleteResult),
GetPromptResult(GetPromptResult),
ListPromptsResult(ListPromptsResult),
ListResourcesResult(ListResourcesResult),
ListResourceTemplatesResult(ListResourceTemplatesResult),
ReadResourceResult(ReadResourceResult),
SubscriptionsListenResult(SubscriptionsListenResult),
ListToolsResult(ListToolsResult),
ElicitResult(ElicitResult),
CreateTaskResult(CreateTaskResult),
GetTaskResult(GetTaskResult),
CallToolResult(CallToolResult),
InputRequiredResult(InputRequiredResult),
TaskAckResult(TaskAckResult),
EmptyResult(EmptyObject),
CustomResult(CustomResult),
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
DiscoverResult(DiscoverResult)
InitializeResult(InitializeResult)
CompleteResult(CompleteResult)
GetPromptResult(GetPromptResult)
ListPromptsResult(ListPromptsResult)
ListResourcesResult(ListResourcesResult)
ListResourceTemplatesResult(ListResourceTemplatesResult)
ReadResourceResult(ReadResourceResult)
SubscriptionsListenResult(SubscriptionsListenResult)
ListToolsResult(ListToolsResult)
ElicitResult(ElicitResult)
CreateTaskResult(CreateTaskResult)
GetTaskResult(GetTaskResult)
CallToolResult(CallToolResult)
InputRequiredResult(InputRequiredResult)
TaskAckResult(TaskAckResult)
EmptyResult(EmptyObject)
CustomResult(CustomResult)
Implementations§
Source§impl ServerResult
impl ServerResult
pub fn empty(_: ()) -> ServerResult
Sourcepub fn task_ack(_: ()) -> ServerResult
pub fn task_ack(_: ()) -> ServerResult
Empty tasks/update / tasks/cancel acknowledgement carrying the
SEP-2322 resultType: "complete" discriminator (SEP-2663).
Sourcepub fn strip_result_type_for_legacy_peer(&mut self)
pub fn strip_result_type_for_legacy_peer(&mut self)
Strip the SEP-2322 resultType: "complete" discriminator so the result
keeps the wire shape that predates protocol version 2026-07-28.
The server handler calls this before responding to a peer that
negotiated an older protocol version, where the field did not exist and
strict peers may reject it. Only the "complete" value is stripped:
results whose discriminator carries meaning ("input_required",
"task") are already gated to 2026-07-28+ sessions, and custom
extension values are preserved.
§Examples
use rmcp::model::{CallToolResult, ServerResult};
let mut result = ServerResult::CallToolResult(CallToolResult::success(vec![]));
result.strip_result_type_for_legacy_peer();
let json = serde_json::to_value(&result).unwrap();
assert!(json.get("resultType").is_none());Sourcepub fn fill_missing_cache_hints(&mut self)
pub fn fill_missing_cache_hints(&mut self)
Fill in the SEP-2549 caching hints a cacheable result is missing.
Protocol version 2026-07-28 requires ttlMs and cacheScope on every
complete tools/list, prompts/list, resources/list,
resources/templates/list, and resources/read result. The server
handler calls this before responding to a peer on that version, so a
handler that builds its result with Default::default() still sends a
conformant result.
Missing hints get the most conservative values, ttlMs: 0 (immediately
stale) and cacheScope: "private", the same values
DiscoverResult::new uses. Hints the handler set are kept.
§Examples
use rmcp::model::{CacheScope, ListResourcesResult, ServerResult};
let mut result = ServerResult::ListResourcesResult(ListResourcesResult::default());
result.fill_missing_cache_hints();
let ServerResult::ListResourcesResult(result) = result else {
unreachable!()
};
assert_eq!(result.ttl_ms, Some(0));
assert_eq!(result.cache_scope, Some(CacheScope::Private));Trait Implementations§
Source§impl Clone for ServerResult
impl Clone for ServerResult
Source§fn clone(&self) -> ServerResult
fn clone(&self) -> ServerResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ServerResult
impl Debug for ServerResult
Source§impl<'de> Deserialize<'de> for ServerResult
impl<'de> Deserialize<'de> for ServerResult
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ServerResult, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ServerResult, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<CallToolResponse> for ServerResult
impl From<CallToolResponse> for ServerResult
Source§fn from(response: CallToolResponse) -> ServerResult
fn from(response: CallToolResponse) -> ServerResult
Source§impl From<CallToolResult> for ServerResult
impl From<CallToolResult> for ServerResult
Source§fn from(value: CallToolResult) -> ServerResult
fn from(value: CallToolResult) -> ServerResult
Source§impl From<CompleteResult> for ServerResult
impl From<CompleteResult> for ServerResult
Source§fn from(value: CompleteResult) -> ServerResult
fn from(value: CompleteResult) -> ServerResult
Source§impl From<CreateTaskResult> for ServerResult
impl From<CreateTaskResult> for ServerResult
Source§fn from(value: CreateTaskResult) -> ServerResult
fn from(value: CreateTaskResult) -> ServerResult
Source§impl From<CustomResult> for ServerResult
impl From<CustomResult> for ServerResult
Source§fn from(value: CustomResult) -> ServerResult
fn from(value: CustomResult) -> ServerResult
Source§impl From<DiscoverResult> for ServerResult
impl From<DiscoverResult> for ServerResult
Source§fn from(value: DiscoverResult) -> ServerResult
fn from(value: DiscoverResult) -> ServerResult
Source§impl From<ElicitResult> for ServerResult
impl From<ElicitResult> for ServerResult
Source§fn from(value: ElicitResult) -> ServerResult
fn from(value: ElicitResult) -> ServerResult
Source§impl From<EmptyObject> for ServerResult
impl From<EmptyObject> for ServerResult
Source§fn from(value: EmptyObject) -> ServerResult
fn from(value: EmptyObject) -> ServerResult
Source§impl From<GetPromptResponse> for ServerResult
impl From<GetPromptResponse> for ServerResult
Source§fn from(response: GetPromptResponse) -> ServerResult
fn from(response: GetPromptResponse) -> ServerResult
Source§impl From<GetPromptResult> for ServerResult
impl From<GetPromptResult> for ServerResult
Source§fn from(value: GetPromptResult) -> ServerResult
fn from(value: GetPromptResult) -> ServerResult
Source§impl From<GetTaskResult> for ServerResult
impl From<GetTaskResult> for ServerResult
Source§fn from(value: GetTaskResult) -> ServerResult
fn from(value: GetTaskResult) -> ServerResult
Source§impl From<InitializeResult> for ServerResult
impl From<InitializeResult> for ServerResult
Source§fn from(value: InitializeResult) -> ServerResult
fn from(value: InitializeResult) -> ServerResult
Source§impl From<InputRequiredResult> for ServerResult
impl From<InputRequiredResult> for ServerResult
Source§fn from(value: InputRequiredResult) -> ServerResult
fn from(value: InputRequiredResult) -> ServerResult
Source§impl From<ListPromptsResult> for ServerResult
impl From<ListPromptsResult> for ServerResult
Source§fn from(value: ListPromptsResult) -> ServerResult
fn from(value: ListPromptsResult) -> ServerResult
Source§impl From<ListResourceTemplatesResult> for ServerResult
impl From<ListResourceTemplatesResult> for ServerResult
Source§fn from(value: ListResourceTemplatesResult) -> ServerResult
fn from(value: ListResourceTemplatesResult) -> ServerResult
Source§impl From<ListResourcesResult> for ServerResult
impl From<ListResourcesResult> for ServerResult
Source§fn from(value: ListResourcesResult) -> ServerResult
fn from(value: ListResourcesResult) -> ServerResult
Source§impl From<ListToolsResult> for ServerResult
impl From<ListToolsResult> for ServerResult
Source§fn from(value: ListToolsResult) -> ServerResult
fn from(value: ListToolsResult) -> ServerResult
Source§impl From<ReadResourceResponse> for ServerResult
impl From<ReadResourceResponse> for ServerResult
Source§fn from(response: ReadResourceResponse) -> ServerResult
fn from(response: ReadResourceResponse) -> ServerResult
Source§impl From<ReadResourceResult> for ServerResult
impl From<ReadResourceResult> for ServerResult
Source§fn from(value: ReadResourceResult) -> ServerResult
fn from(value: ReadResourceResult) -> ServerResult
Source§impl From<SubscriptionsListenResult> for ServerResult
impl From<SubscriptionsListenResult> for ServerResult
Source§fn from(value: SubscriptionsListenResult) -> ServerResult
fn from(value: SubscriptionsListenResult) -> ServerResult
Source§impl From<TaskAckResult> for ServerResult
impl From<TaskAckResult> for ServerResult
Source§fn from(value: TaskAckResult) -> ServerResult
fn from(value: TaskAckResult) -> ServerResult
Source§impl JsonSchema for ServerResult
impl JsonSchema for ServerResult
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl Serialize for ServerResult
impl Serialize for ServerResult
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl !RefUnwindSafe for ServerResult
impl !UnwindSafe for ServerResult
impl Freeze for ServerResult
impl Send for ServerResult
impl Sync for ServerResult
impl Unpin for ServerResult
impl UnsafeUnpin for ServerResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more