1#![cfg_attr(rustfmt, rustfmt_skip)]
2#![expect(clippy::large_enum_variant)]
3#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
5pub struct Annotations {
6 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub audience: Option<Vec<Role>>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub priority: Option<f64>,
18 #[serde(flatten)]
20 pub extra: serde_json::Map<String, serde_json::Value>,
21}
22#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
24#[serde_with::serde_as]
25pub struct AudioContent {
26 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub annotations: Option<Annotations>,
29 #[serde_as(as = "Base64")]
31 pub data: Vec<u8>,
32 #[serde(rename = "mimeType")]
34 pub mime_type: String,
35 pub r#type: monostate::MustBe!("audio"),
36 #[serde(flatten)]
38 pub extra: serde_json::Map<String, serde_json::Value>,
39}
40#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
42#[serde_with::serde_as]
43pub struct BlobResourceContents {
44 #[serde_as(as = "Base64")]
46 pub blob: Vec<u8>,
47 #[serde(rename = "mimeType")]
49 #[serde(default, skip_serializing_if = "Option::is_none")]
50 pub mime_type: Option<String>,
51 pub uri: String,
53 #[serde(flatten)]
55 pub extra: serde_json::Map<String, serde_json::Value>,
56}
57#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
59pub struct CallToolRequestParams {
60 #[serde(default, skip_serializing_if = "Option::is_none")]
61 pub arguments: Option<serde_json::Map<String, serde_json::Value>>,
62 pub name: String,
63 #[serde(flatten)]
65 pub extra: serde_json::Map<String, serde_json::Value>,
66}
67#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
69pub struct CallToolRequest {
70 pub method: monostate::MustBe!("tools/call"),
71 pub params: CallToolRequestParams,
72 #[serde(flatten)]
74 pub extra: serde_json::Map<String, serde_json::Value>,
75}
76#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
78#[serde(untagged)]
79pub enum CallToolResultContent {
80 TextContent(TextContent),
82 ImageContent(ImageContent),
84 AudioContent(AudioContent),
86 EmbeddedResource(EmbeddedResource),
91}
92#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
103pub struct CallToolResult {
104 #[serde(rename = "_meta")]
106 #[serde(default, skip_serializing_if = "Option::is_none")]
107 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
108 pub content: Vec<CallToolResultContent>,
109 #[serde(rename = "isError")]
113 #[serde(default, skip_serializing_if = "Option::is_none")]
114 pub is_error: Option<bool>,
115 #[serde(flatten)]
117 pub extra: serde_json::Map<String, serde_json::Value>,
118}
119#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
121pub struct CancelledNotificationParams {
122 #[serde(default, skip_serializing_if = "Option::is_none")]
124 pub reason: Option<String>,
125 #[serde(rename = "requestId")]
129 pub request_id: RequestId,
130 #[serde(flatten)]
132 pub extra: serde_json::Map<String, serde_json::Value>,
133}
134#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
142pub struct CancelledNotification {
143 pub method: monostate::MustBe!("notifications/cancelled"),
144 pub params: CancelledNotificationParams,
145 #[serde(flatten)]
147 pub extra: serde_json::Map<String, serde_json::Value>,
148}
149#[derive(
151 Debug,
152 Clone,
153 PartialEq,
154 serde::Serialize,
155 serde::Deserialize,
156 Eq,
157 Hash,
158 Default
159)]
160pub struct ClientCapabilitiesRoots {
161 #[serde(rename = "listChanged")]
163 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub list_changed: Option<bool>,
165 #[serde(flatten)]
167 pub extra: serde_json::Map<String, serde_json::Value>,
168}
169#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
171pub struct ClientCapabilities {
172 #[serde(default, skip_serializing_if = "Option::is_none")]
174 pub experimental: Option<
175 indexmap::IndexMap<String, serde_json::Map<String, serde_json::Value>>,
176 >,
177 #[serde(default, skip_serializing_if = "Option::is_none")]
179 pub roots: Option<ClientCapabilitiesRoots>,
180 #[serde(default, skip_serializing_if = "Option::is_none")]
182 pub sampling: Option<serde_json::Map<String, serde_json::Value>>,
183 #[serde(flatten)]
185 pub extra: serde_json::Map<String, serde_json::Value>,
186}
187#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
189#[serde(untagged)]
190pub enum ClientNotification {
191 CancelledNotification(CancelledNotification),
199 InitializedNotification(InitializedNotification),
201 ProgressNotification(ProgressNotification),
203 RootsListChangedNotification(RootsListChangedNotification),
207}
208#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
210#[serde(untagged)]
211pub enum ClientRequest {
212 InitializeRequest(InitializeRequest),
214 PingRequest(PingRequest),
216 ListResourcesRequest(ListResourcesRequest),
218 ReadResourceRequest(ReadResourceRequest),
220 SubscribeRequest(SubscribeRequest),
222 UnsubscribeRequest(UnsubscribeRequest),
224 ListPromptsRequest(ListPromptsRequest),
226 GetPromptRequest(GetPromptRequest),
228 ListToolsRequest(ListToolsRequest),
230 CallToolRequest(CallToolRequest),
232 SetLevelRequest(SetLevelRequest),
234 CompleteRequest(CompleteRequest),
236}
237#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
239#[serde(untagged)]
240pub enum ClientResult {
241 Result(Result),
242 CreateMessageResult(CreateMessageResult),
244 ListRootsResult(ListRootsResult),
248}
249#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
251pub struct CompleteRequestParamsArgument {
252 pub name: String,
254 pub value: String,
256 #[serde(flatten)]
258 pub extra: serde_json::Map<String, serde_json::Value>,
259}
260#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
262#[serde(untagged)]
263pub enum CompleteRequestParamsRef {
264 PromptReference(PromptReference),
266 ResourceReference(ResourceReference),
268}
269#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
271pub struct CompleteRequestParams {
272 pub argument: CompleteRequestParamsArgument,
274 pub r#ref: CompleteRequestParamsRef,
275 #[serde(flatten)]
277 pub extra: serde_json::Map<String, serde_json::Value>,
278}
279#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
281pub struct CompleteRequest {
282 pub method: monostate::MustBe!("completion/complete"),
283 pub params: CompleteRequestParams,
284 #[serde(flatten)]
286 pub extra: serde_json::Map<String, serde_json::Value>,
287}
288#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
290pub struct CompleteResultCompletion {
291 #[serde(rename = "hasMore")]
293 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub has_more: Option<bool>,
295 #[serde(default, skip_serializing_if = "Option::is_none")]
297 pub total: Option<i64>,
298 pub values: Vec<String>,
300 #[serde(flatten)]
302 pub extra: serde_json::Map<String, serde_json::Value>,
303}
304#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
306pub struct CompleteResult {
307 #[serde(rename = "_meta")]
309 #[serde(default, skip_serializing_if = "Option::is_none")]
310 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
311 pub completion: CompleteResultCompletion,
312 #[serde(flatten)]
314 pub extra: serde_json::Map<String, serde_json::Value>,
315}
316#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
318pub enum CreateMessageRequestParamsIncludeContext {
319 #[serde(rename = "allServers")]
320 AllServers,
321 #[serde(rename = "none")]
322 None,
323 #[serde(rename = "thisServer")]
324 ThisServer,
325}
326#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
328pub struct CreateMessageRequestParams {
329 #[serde(rename = "includeContext")]
331 #[serde(default, skip_serializing_if = "Option::is_none")]
332 pub include_context: Option<CreateMessageRequestParamsIncludeContext>,
333 #[serde(rename = "maxTokens")]
335 pub max_tokens: i64,
336 pub messages: Vec<SamplingMessage>,
337 #[serde(default, skip_serializing_if = "Option::is_none")]
339 pub metadata: Option<serde_json::Map<String, serde_json::Value>>,
340 #[serde(rename = "modelPreferences")]
342 #[serde(default, skip_serializing_if = "Option::is_none")]
343 pub model_preferences: Option<ModelPreferences>,
344 #[serde(rename = "stopSequences")]
345 #[serde(default, skip_serializing_if = "Option::is_none")]
346 pub stop_sequences: Option<Vec<String>>,
347 #[serde(rename = "systemPrompt")]
349 #[serde(default, skip_serializing_if = "Option::is_none")]
350 pub system_prompt: Option<String>,
351 #[serde(default, skip_serializing_if = "Option::is_none")]
352 pub temperature: Option<f64>,
353 #[serde(flatten)]
355 pub extra: serde_json::Map<String, serde_json::Value>,
356}
357#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
359pub struct CreateMessageRequest {
360 pub method: monostate::MustBe!("sampling/createMessage"),
361 pub params: CreateMessageRequestParams,
362 #[serde(flatten)]
364 pub extra: serde_json::Map<String, serde_json::Value>,
365}
366#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
368#[serde(untagged)]
369pub enum CreateMessageResultContent {
370 TextContent(TextContent),
372 ImageContent(ImageContent),
374 AudioContent(AudioContent),
376}
377#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
379pub struct CreateMessageResult {
380 #[serde(rename = "_meta")]
382 #[serde(default, skip_serializing_if = "Option::is_none")]
383 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
384 pub content: CreateMessageResultContent,
385 pub model: String,
387 pub role: Role,
388 #[serde(rename = "stopReason")]
390 #[serde(default, skip_serializing_if = "Option::is_none")]
391 pub stop_reason: Option<String>,
392 #[serde(flatten)]
394 pub extra: serde_json::Map<String, serde_json::Value>,
395}
396#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
398#[serde(transparent)]
399pub struct Cursor(pub String);
400#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
402#[serde(untagged)]
403pub enum EmbeddedResourceResource {
404 TextResourceContents(TextResourceContents),
405 BlobResourceContents(BlobResourceContents),
406}
407#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
412pub struct EmbeddedResource {
413 #[serde(default, skip_serializing_if = "Option::is_none")]
415 pub annotations: Option<Annotations>,
416 pub resource: EmbeddedResourceResource,
417 pub r#type: monostate::MustBe!("resource"),
418 #[serde(flatten)]
420 pub extra: serde_json::Map<String, serde_json::Value>,
421}
422#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
424#[serde(transparent)]
425pub struct EmptyResult(pub Result);
426#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
428pub struct GetPromptRequestParams {
429 #[serde(default, skip_serializing_if = "Option::is_none")]
431 pub arguments: Option<indexmap::IndexMap<String, String>>,
432 pub name: String,
434 #[serde(flatten)]
436 pub extra: serde_json::Map<String, serde_json::Value>,
437}
438#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
440pub struct GetPromptRequest {
441 pub method: monostate::MustBe!("prompts/get"),
442 pub params: GetPromptRequestParams,
443 #[serde(flatten)]
445 pub extra: serde_json::Map<String, serde_json::Value>,
446}
447#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
449pub struct GetPromptResult {
450 #[serde(rename = "_meta")]
452 #[serde(default, skip_serializing_if = "Option::is_none")]
453 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
454 #[serde(default, skip_serializing_if = "Option::is_none")]
456 pub description: Option<String>,
457 pub messages: Vec<PromptMessage>,
458 #[serde(flatten)]
460 pub extra: serde_json::Map<String, serde_json::Value>,
461}
462#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
464#[serde_with::serde_as]
465pub struct ImageContent {
466 #[serde(default, skip_serializing_if = "Option::is_none")]
468 pub annotations: Option<Annotations>,
469 #[serde_as(as = "Base64")]
471 pub data: Vec<u8>,
472 #[serde(rename = "mimeType")]
474 pub mime_type: String,
475 pub r#type: monostate::MustBe!("image"),
476 #[serde(flatten)]
478 pub extra: serde_json::Map<String, serde_json::Value>,
479}
480#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
482pub struct Implementation {
483 pub name: String,
484 pub version: String,
485 #[serde(flatten)]
487 pub extra: serde_json::Map<String, serde_json::Value>,
488}
489#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
491pub struct InitializeRequestParams {
492 pub capabilities: ClientCapabilities,
493 #[serde(rename = "clientInfo")]
494 pub client_info: Implementation,
495 #[serde(rename = "protocolVersion")]
497 pub protocol_version: String,
498 #[serde(flatten)]
500 pub extra: serde_json::Map<String, serde_json::Value>,
501}
502#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
504pub struct InitializeRequest {
505 pub method: monostate::MustBe!("initialize"),
506 pub params: InitializeRequestParams,
507 #[serde(flatten)]
509 pub extra: serde_json::Map<String, serde_json::Value>,
510}
511#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
513pub struct InitializeResult {
514 #[serde(rename = "_meta")]
516 #[serde(default, skip_serializing_if = "Option::is_none")]
517 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
518 pub capabilities: ServerCapabilities,
519 #[serde(default, skip_serializing_if = "Option::is_none")]
523 pub instructions: Option<String>,
524 #[serde(rename = "protocolVersion")]
526 pub protocol_version: String,
527 #[serde(rename = "serverInfo")]
528 pub server_info: Implementation,
529 #[serde(flatten)]
531 pub extra: serde_json::Map<String, serde_json::Value>,
532}
533#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
535pub struct InitializedNotificationParams {
536 #[serde(rename = "_meta")]
538 #[serde(default, skip_serializing_if = "Option::is_none")]
539 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
540 #[serde(flatten)]
542 pub extra: serde_json::Map<String, serde_json::Value>,
543}
544#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
546pub struct InitializedNotification {
547 pub method: monostate::MustBe!("notifications/initialized"),
548 #[serde(default, skip_serializing_if = "Option::is_none")]
549 pub params: Option<InitializedNotificationParams>,
550 #[serde(flatten)]
552 pub extra: serde_json::Map<String, serde_json::Value>,
553}
554#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
556#[serde(untagged)]
557pub enum JsonrpcBatchRequestItem {
558 JSONRPCRequest(JSONRPCRequest),
560 JSONRPCNotification(JSONRPCNotification),
562}
563#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
565#[serde(transparent)]
566pub struct JSONRPCBatchRequest(pub Vec<JsonrpcBatchRequestItem>);
567#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
569#[serde(untagged)]
570pub enum JsonrpcBatchResponseItem {
571 JSONRPCResponse(JSONRPCResponse),
573 JSONRPCError(JSONRPCError),
575}
576#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
578#[serde(transparent)]
579pub struct JSONRPCBatchResponse(pub Vec<JsonrpcBatchResponseItem>);
580#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
582pub struct JsonrpcErrorError {
583 pub code: i64,
585 #[serde(default, skip_serializing_if = "Option::is_none")]
587 pub data: Option<serde_json::Value>,
588 pub message: String,
590 #[serde(flatten)]
592 pub extra: serde_json::Map<String, serde_json::Value>,
593}
594#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
596pub struct JSONRPCError {
597 pub error: JsonrpcErrorError,
598 pub id: RequestId,
599 pub jsonrpc: monostate::MustBe!("2.0"),
600 #[serde(flatten)]
602 pub extra: serde_json::Map<String, serde_json::Value>,
603}
604#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
606#[serde(untagged)]
607pub enum JSONRPCMessage {
608 JSONRPCRequest(JSONRPCRequest),
610 JSONRPCNotification(JSONRPCNotification),
612 JSONRPCBatchRequest(JSONRPCBatchRequest),
614 JSONRPCResponse(JSONRPCResponse),
616 JSONRPCError(JSONRPCError),
618 JSONRPCBatchResponse(JSONRPCBatchResponse),
620}
621#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
623pub struct JsonrpcNotificationParams {
624 #[serde(rename = "_meta")]
626 #[serde(default, skip_serializing_if = "Option::is_none")]
627 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
628 #[serde(flatten)]
630 pub extra: serde_json::Map<String, serde_json::Value>,
631}
632#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
634pub struct JSONRPCNotification {
635 pub jsonrpc: monostate::MustBe!("2.0"),
636 pub method: String,
637 #[serde(default, skip_serializing_if = "Option::is_none")]
638 pub params: Option<JsonrpcNotificationParams>,
639 #[serde(flatten)]
641 pub extra: serde_json::Map<String, serde_json::Value>,
642}
643#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
645pub struct JsonrpcRequestParamsMeta {
646 #[serde(rename = "progressToken")]
648 #[serde(default, skip_serializing_if = "Option::is_none")]
649 pub progress_token: Option<ProgressToken>,
650 #[serde(flatten)]
652 pub extra: serde_json::Map<String, serde_json::Value>,
653}
654#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
656pub struct JsonrpcRequestParams {
657 #[serde(rename = "_meta")]
658 #[serde(default, skip_serializing_if = "Option::is_none")]
659 pub meta: Option<JsonrpcRequestParamsMeta>,
660 #[serde(flatten)]
662 pub extra: serde_json::Map<String, serde_json::Value>,
663}
664#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
666pub struct JSONRPCRequest {
667 pub id: RequestId,
668 pub jsonrpc: monostate::MustBe!("2.0"),
669 pub method: String,
670 #[serde(default, skip_serializing_if = "Option::is_none")]
671 pub params: Option<JsonrpcRequestParams>,
672 #[serde(flatten)]
674 pub extra: serde_json::Map<String, serde_json::Value>,
675}
676#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
678pub struct JSONRPCResponse {
679 pub id: RequestId,
680 pub jsonrpc: monostate::MustBe!("2.0"),
681 pub result: Result,
682 #[serde(flatten)]
684 pub extra: serde_json::Map<String, serde_json::Value>,
685}
686#[derive(
688 Debug,
689 Clone,
690 PartialEq,
691 serde::Serialize,
692 serde::Deserialize,
693 Eq,
694 Hash,
695 Default
696)]
697pub struct ListPromptsRequestParams {
698 #[serde(default, skip_serializing_if = "Option::is_none")]
701 pub cursor: Option<String>,
702 #[serde(flatten)]
704 pub extra: serde_json::Map<String, serde_json::Value>,
705}
706#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
708pub struct ListPromptsRequest {
709 pub method: monostate::MustBe!("prompts/list"),
710 #[serde(default, skip_serializing_if = "Option::is_none")]
711 pub params: Option<ListPromptsRequestParams>,
712 #[serde(flatten)]
714 pub extra: serde_json::Map<String, serde_json::Value>,
715}
716#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
718pub struct ListPromptsResult {
719 #[serde(rename = "_meta")]
721 #[serde(default, skip_serializing_if = "Option::is_none")]
722 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
723 #[serde(rename = "nextCursor")]
726 #[serde(default, skip_serializing_if = "Option::is_none")]
727 pub next_cursor: Option<String>,
728 pub prompts: Vec<Prompt>,
729 #[serde(flatten)]
731 pub extra: serde_json::Map<String, serde_json::Value>,
732}
733#[derive(
735 Debug,
736 Clone,
737 PartialEq,
738 serde::Serialize,
739 serde::Deserialize,
740 Eq,
741 Hash,
742 Default
743)]
744pub struct ListResourceTemplatesRequestParams {
745 #[serde(default, skip_serializing_if = "Option::is_none")]
748 pub cursor: Option<String>,
749 #[serde(flatten)]
751 pub extra: serde_json::Map<String, serde_json::Value>,
752}
753#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
755pub struct ListResourceTemplatesRequest {
756 pub method: monostate::MustBe!("resources/templates/list"),
757 #[serde(default, skip_serializing_if = "Option::is_none")]
758 pub params: Option<ListResourceTemplatesRequestParams>,
759 #[serde(flatten)]
761 pub extra: serde_json::Map<String, serde_json::Value>,
762}
763#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
765pub struct ListResourceTemplatesResult {
766 #[serde(rename = "_meta")]
768 #[serde(default, skip_serializing_if = "Option::is_none")]
769 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
770 #[serde(rename = "nextCursor")]
773 #[serde(default, skip_serializing_if = "Option::is_none")]
774 pub next_cursor: Option<String>,
775 #[serde(rename = "resourceTemplates")]
776 pub resource_templates: Vec<ResourceTemplate>,
777 #[serde(flatten)]
779 pub extra: serde_json::Map<String, serde_json::Value>,
780}
781#[derive(
783 Debug,
784 Clone,
785 PartialEq,
786 serde::Serialize,
787 serde::Deserialize,
788 Eq,
789 Hash,
790 Default
791)]
792pub struct ListResourcesRequestParams {
793 #[serde(default, skip_serializing_if = "Option::is_none")]
796 pub cursor: Option<String>,
797 #[serde(flatten)]
799 pub extra: serde_json::Map<String, serde_json::Value>,
800}
801#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
803pub struct ListResourcesRequest {
804 pub method: monostate::MustBe!("resources/list"),
805 #[serde(default, skip_serializing_if = "Option::is_none")]
806 pub params: Option<ListResourcesRequestParams>,
807 #[serde(flatten)]
809 pub extra: serde_json::Map<String, serde_json::Value>,
810}
811#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
813pub struct ListResourcesResult {
814 #[serde(rename = "_meta")]
816 #[serde(default, skip_serializing_if = "Option::is_none")]
817 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
818 #[serde(rename = "nextCursor")]
821 #[serde(default, skip_serializing_if = "Option::is_none")]
822 pub next_cursor: Option<String>,
823 pub resources: Vec<Resource>,
824 #[serde(flatten)]
826 pub extra: serde_json::Map<String, serde_json::Value>,
827}
828#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
830pub struct ListRootsRequestParamsMeta {
831 #[serde(rename = "progressToken")]
833 #[serde(default, skip_serializing_if = "Option::is_none")]
834 pub progress_token: Option<ProgressToken>,
835 #[serde(flatten)]
837 pub extra: serde_json::Map<String, serde_json::Value>,
838}
839#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
841pub struct ListRootsRequestParams {
842 #[serde(rename = "_meta")]
843 #[serde(default, skip_serializing_if = "Option::is_none")]
844 pub meta: Option<ListRootsRequestParamsMeta>,
845 #[serde(flatten)]
847 pub extra: serde_json::Map<String, serde_json::Value>,
848}
849#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
857pub struct ListRootsRequest {
858 pub method: monostate::MustBe!("roots/list"),
859 #[serde(default, skip_serializing_if = "Option::is_none")]
860 pub params: Option<ListRootsRequestParams>,
861 #[serde(flatten)]
863 pub extra: serde_json::Map<String, serde_json::Value>,
864}
865#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
869pub struct ListRootsResult {
870 #[serde(rename = "_meta")]
872 #[serde(default, skip_serializing_if = "Option::is_none")]
873 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
874 pub roots: Vec<Root>,
875 #[serde(flatten)]
877 pub extra: serde_json::Map<String, serde_json::Value>,
878}
879#[derive(
881 Debug,
882 Clone,
883 PartialEq,
884 serde::Serialize,
885 serde::Deserialize,
886 Eq,
887 Hash,
888 Default
889)]
890pub struct ListToolsRequestParams {
891 #[serde(default, skip_serializing_if = "Option::is_none")]
894 pub cursor: Option<String>,
895 #[serde(flatten)]
897 pub extra: serde_json::Map<String, serde_json::Value>,
898}
899#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
901pub struct ListToolsRequest {
902 pub method: monostate::MustBe!("tools/list"),
903 #[serde(default, skip_serializing_if = "Option::is_none")]
904 pub params: Option<ListToolsRequestParams>,
905 #[serde(flatten)]
907 pub extra: serde_json::Map<String, serde_json::Value>,
908}
909#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
911pub struct ListToolsResult {
912 #[serde(rename = "_meta")]
914 #[serde(default, skip_serializing_if = "Option::is_none")]
915 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
916 #[serde(rename = "nextCursor")]
919 #[serde(default, skip_serializing_if = "Option::is_none")]
920 pub next_cursor: Option<String>,
921 pub tools: Vec<Tool>,
922 #[serde(flatten)]
924 pub extra: serde_json::Map<String, serde_json::Value>,
925}
926#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
931pub enum LoggingLevel {
932 #[serde(rename = "alert")]
933 Alert,
934 #[serde(rename = "critical")]
935 Critical,
936 #[serde(rename = "debug")]
937 Debug,
938 #[serde(rename = "emergency")]
939 Emergency,
940 #[serde(rename = "error")]
941 Error,
942 #[serde(rename = "info")]
943 Info,
944 #[serde(rename = "notice")]
945 Notice,
946 #[serde(rename = "warning")]
947 Warning,
948}
949#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
951pub struct LoggingMessageNotificationParams {
952 pub data: serde_json::Value,
954 pub level: LoggingLevel,
956 #[serde(default, skip_serializing_if = "Option::is_none")]
958 pub logger: Option<String>,
959 #[serde(flatten)]
961 pub extra: serde_json::Map<String, serde_json::Value>,
962}
963#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
965pub struct LoggingMessageNotification {
966 pub method: monostate::MustBe!("notifications/message"),
967 pub params: LoggingMessageNotificationParams,
968 #[serde(flatten)]
970 pub extra: serde_json::Map<String, serde_json::Value>,
971}
972#[derive(
977 Debug,
978 Clone,
979 PartialEq,
980 serde::Serialize,
981 serde::Deserialize,
982 Eq,
983 Hash,
984 Default
985)]
986pub struct ModelHint {
987 #[serde(default, skip_serializing_if = "Option::is_none")]
997 pub name: Option<String>,
998 #[serde(flatten)]
1000 pub extra: serde_json::Map<String, serde_json::Value>,
1001}
1002#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1014pub struct ModelPreferences {
1015 #[serde(rename = "costPriority")]
1019 #[serde(default, skip_serializing_if = "Option::is_none")]
1020 pub cost_priority: Option<f64>,
1021 #[serde(default, skip_serializing_if = "Option::is_none")]
1029 pub hints: Option<Vec<ModelHint>>,
1030 #[serde(rename = "intelligencePriority")]
1034 #[serde(default, skip_serializing_if = "Option::is_none")]
1035 pub intelligence_priority: Option<f64>,
1036 #[serde(rename = "speedPriority")]
1040 #[serde(default, skip_serializing_if = "Option::is_none")]
1041 pub speed_priority: Option<f64>,
1042 #[serde(flatten)]
1044 pub extra: serde_json::Map<String, serde_json::Value>,
1045}
1046#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1048pub struct NotificationParams {
1049 #[serde(rename = "_meta")]
1051 #[serde(default, skip_serializing_if = "Option::is_none")]
1052 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1053 #[serde(flatten)]
1055 pub extra: serde_json::Map<String, serde_json::Value>,
1056}
1057#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1059pub struct Notification {
1060 pub method: String,
1061 #[serde(default, skip_serializing_if = "Option::is_none")]
1062 pub params: Option<NotificationParams>,
1063 #[serde(flatten)]
1065 pub extra: serde_json::Map<String, serde_json::Value>,
1066}
1067#[derive(
1069 Debug,
1070 Clone,
1071 PartialEq,
1072 serde::Serialize,
1073 serde::Deserialize,
1074 Eq,
1075 Hash,
1076 Default
1077)]
1078pub struct PaginatedRequestParams {
1079 #[serde(default, skip_serializing_if = "Option::is_none")]
1082 pub cursor: Option<String>,
1083 #[serde(flatten)]
1085 pub extra: serde_json::Map<String, serde_json::Value>,
1086}
1087#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1089pub struct PaginatedRequest {
1090 pub method: String,
1091 #[serde(default, skip_serializing_if = "Option::is_none")]
1092 pub params: Option<PaginatedRequestParams>,
1093 #[serde(flatten)]
1095 pub extra: serde_json::Map<String, serde_json::Value>,
1096}
1097#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1099pub struct PaginatedResult {
1100 #[serde(rename = "_meta")]
1102 #[serde(default, skip_serializing_if = "Option::is_none")]
1103 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1104 #[serde(rename = "nextCursor")]
1107 #[serde(default, skip_serializing_if = "Option::is_none")]
1108 pub next_cursor: Option<String>,
1109 #[serde(flatten)]
1111 pub extra: serde_json::Map<String, serde_json::Value>,
1112}
1113#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1115pub struct PingRequestParamsMeta {
1116 #[serde(rename = "progressToken")]
1118 #[serde(default, skip_serializing_if = "Option::is_none")]
1119 pub progress_token: Option<ProgressToken>,
1120 #[serde(flatten)]
1122 pub extra: serde_json::Map<String, serde_json::Value>,
1123}
1124#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1126pub struct PingRequestParams {
1127 #[serde(rename = "_meta")]
1128 #[serde(default, skip_serializing_if = "Option::is_none")]
1129 pub meta: Option<PingRequestParamsMeta>,
1130 #[serde(flatten)]
1132 pub extra: serde_json::Map<String, serde_json::Value>,
1133}
1134#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1136pub struct PingRequest {
1137 pub method: monostate::MustBe!("ping"),
1138 #[serde(default, skip_serializing_if = "Option::is_none")]
1139 pub params: Option<PingRequestParams>,
1140 #[serde(flatten)]
1142 pub extra: serde_json::Map<String, serde_json::Value>,
1143}
1144#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1146pub struct ProgressNotificationParams {
1147 #[serde(default, skip_serializing_if = "Option::is_none")]
1149 pub message: Option<String>,
1150 pub progress: f64,
1152 #[serde(rename = "progressToken")]
1154 pub progress_token: ProgressToken,
1155 #[serde(default, skip_serializing_if = "Option::is_none")]
1157 pub total: Option<f64>,
1158 #[serde(flatten)]
1160 pub extra: serde_json::Map<String, serde_json::Value>,
1161}
1162#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1164pub struct ProgressNotification {
1165 pub method: monostate::MustBe!("notifications/progress"),
1166 pub params: ProgressNotificationParams,
1167 #[serde(flatten)]
1169 pub extra: serde_json::Map<String, serde_json::Value>,
1170}
1171#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1173#[serde(untagged)]
1174pub enum ProgressToken {
1175 String(String),
1176 Integer(i64),
1177}
1178#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1180pub struct Prompt {
1181 #[serde(default, skip_serializing_if = "Option::is_none")]
1183 pub arguments: Option<Vec<PromptArgument>>,
1184 #[serde(default, skip_serializing_if = "Option::is_none")]
1186 pub description: Option<String>,
1187 pub name: String,
1189 #[serde(flatten)]
1191 pub extra: serde_json::Map<String, serde_json::Value>,
1192}
1193#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1195pub struct PromptArgument {
1196 #[serde(default, skip_serializing_if = "Option::is_none")]
1198 pub description: Option<String>,
1199 pub name: String,
1201 #[serde(default, skip_serializing_if = "Option::is_none")]
1203 pub required: Option<bool>,
1204 #[serde(flatten)]
1206 pub extra: serde_json::Map<String, serde_json::Value>,
1207}
1208#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1210pub struct PromptListChangedNotificationParams {
1211 #[serde(rename = "_meta")]
1213 #[serde(default, skip_serializing_if = "Option::is_none")]
1214 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1215 #[serde(flatten)]
1217 pub extra: serde_json::Map<String, serde_json::Value>,
1218}
1219#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1221pub struct PromptListChangedNotification {
1222 pub method: monostate::MustBe!("notifications/prompts/list_changed"),
1223 #[serde(default, skip_serializing_if = "Option::is_none")]
1224 pub params: Option<PromptListChangedNotificationParams>,
1225 #[serde(flatten)]
1227 pub extra: serde_json::Map<String, serde_json::Value>,
1228}
1229#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1231#[serde(untagged)]
1232pub enum PromptMessageContent {
1233 TextContent(TextContent),
1235 ImageContent(ImageContent),
1237 AudioContent(AudioContent),
1239 EmbeddedResource(EmbeddedResource),
1244}
1245#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1250pub struct PromptMessage {
1251 pub content: PromptMessageContent,
1252 pub role: Role,
1253 #[serde(flatten)]
1255 pub extra: serde_json::Map<String, serde_json::Value>,
1256}
1257#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1259pub struct PromptReference {
1260 pub name: String,
1262 pub r#type: monostate::MustBe!("ref/prompt"),
1263 #[serde(flatten)]
1265 pub extra: serde_json::Map<String, serde_json::Value>,
1266}
1267#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1269pub struct ReadResourceRequestParams {
1270 pub uri: String,
1272 #[serde(flatten)]
1274 pub extra: serde_json::Map<String, serde_json::Value>,
1275}
1276#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1278pub struct ReadResourceRequest {
1279 pub method: monostate::MustBe!("resources/read"),
1280 pub params: ReadResourceRequestParams,
1281 #[serde(flatten)]
1283 pub extra: serde_json::Map<String, serde_json::Value>,
1284}
1285#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1287#[serde(untagged)]
1288pub enum ReadResourceResultContents {
1289 TextResourceContents(TextResourceContents),
1290 BlobResourceContents(BlobResourceContents),
1291}
1292#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1294pub struct ReadResourceResult {
1295 #[serde(rename = "_meta")]
1297 #[serde(default, skip_serializing_if = "Option::is_none")]
1298 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1299 pub contents: Vec<ReadResourceResultContents>,
1300 #[serde(flatten)]
1302 pub extra: serde_json::Map<String, serde_json::Value>,
1303}
1304#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1306pub struct RequestParamsMeta {
1307 #[serde(rename = "progressToken")]
1309 #[serde(default, skip_serializing_if = "Option::is_none")]
1310 pub progress_token: Option<ProgressToken>,
1311 #[serde(flatten)]
1313 pub extra: serde_json::Map<String, serde_json::Value>,
1314}
1315#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1317pub struct RequestParams {
1318 #[serde(rename = "_meta")]
1319 #[serde(default, skip_serializing_if = "Option::is_none")]
1320 pub meta: Option<RequestParamsMeta>,
1321 #[serde(flatten)]
1323 pub extra: serde_json::Map<String, serde_json::Value>,
1324}
1325#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1327pub struct Request {
1328 pub method: String,
1329 #[serde(default, skip_serializing_if = "Option::is_none")]
1330 pub params: Option<RequestParams>,
1331 #[serde(flatten)]
1333 pub extra: serde_json::Map<String, serde_json::Value>,
1334}
1335#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1337#[serde(untagged)]
1338pub enum RequestId {
1339 String(String),
1340 Integer(i64),
1341}
1342#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1344pub struct Resource {
1345 #[serde(default, skip_serializing_if = "Option::is_none")]
1347 pub annotations: Option<Annotations>,
1348 #[serde(default, skip_serializing_if = "Option::is_none")]
1352 pub description: Option<String>,
1353 #[serde(rename = "mimeType")]
1355 #[serde(default, skip_serializing_if = "Option::is_none")]
1356 pub mime_type: Option<String>,
1357 pub name: String,
1361 pub uri: String,
1363 #[serde(flatten)]
1365 pub extra: serde_json::Map<String, serde_json::Value>,
1366}
1367#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1369pub struct ResourceContents {
1370 #[serde(rename = "mimeType")]
1372 #[serde(default, skip_serializing_if = "Option::is_none")]
1373 pub mime_type: Option<String>,
1374 pub uri: String,
1376 #[serde(flatten)]
1378 pub extra: serde_json::Map<String, serde_json::Value>,
1379}
1380#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1382pub struct ResourceListChangedNotificationParams {
1383 #[serde(rename = "_meta")]
1385 #[serde(default, skip_serializing_if = "Option::is_none")]
1386 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1387 #[serde(flatten)]
1389 pub extra: serde_json::Map<String, serde_json::Value>,
1390}
1391#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1393pub struct ResourceListChangedNotification {
1394 pub method: monostate::MustBe!("notifications/resources/list_changed"),
1395 #[serde(default, skip_serializing_if = "Option::is_none")]
1396 pub params: Option<ResourceListChangedNotificationParams>,
1397 #[serde(flatten)]
1399 pub extra: serde_json::Map<String, serde_json::Value>,
1400}
1401#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1403pub struct ResourceReference {
1404 pub r#type: monostate::MustBe!("ref/resource"),
1405 pub uri: String,
1407 #[serde(flatten)]
1409 pub extra: serde_json::Map<String, serde_json::Value>,
1410}
1411#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1413pub struct ResourceTemplate {
1414 #[serde(default, skip_serializing_if = "Option::is_none")]
1416 pub annotations: Option<Annotations>,
1417 #[serde(default, skip_serializing_if = "Option::is_none")]
1421 pub description: Option<String>,
1422 #[serde(rename = "mimeType")]
1424 #[serde(default, skip_serializing_if = "Option::is_none")]
1425 pub mime_type: Option<String>,
1426 pub name: String,
1430 #[serde(rename = "uriTemplate")]
1432 pub uri_template: String,
1433 #[serde(flatten)]
1435 pub extra: serde_json::Map<String, serde_json::Value>,
1436}
1437#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1439pub struct ResourceUpdatedNotificationParams {
1440 pub uri: String,
1442 #[serde(flatten)]
1444 pub extra: serde_json::Map<String, serde_json::Value>,
1445}
1446#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1448pub struct ResourceUpdatedNotification {
1449 pub method: monostate::MustBe!("notifications/resources/updated"),
1450 pub params: ResourceUpdatedNotificationParams,
1451 #[serde(flatten)]
1453 pub extra: serde_json::Map<String, serde_json::Value>,
1454}
1455#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1457pub struct Result {
1458 #[serde(rename = "_meta")]
1460 #[serde(default, skip_serializing_if = "Option::is_none")]
1461 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1462 #[serde(flatten)]
1464 pub extra: serde_json::Map<String, serde_json::Value>,
1465}
1466#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1468pub enum Role {
1469 #[serde(rename = "assistant")]
1470 Assistant,
1471 #[serde(rename = "user")]
1472 User,
1473}
1474#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1476pub struct Root {
1477 #[serde(default, skip_serializing_if = "Option::is_none")]
1481 pub name: Option<String>,
1482 pub uri: String,
1486 #[serde(flatten)]
1488 pub extra: serde_json::Map<String, serde_json::Value>,
1489}
1490#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1492pub struct RootsListChangedNotificationParams {
1493 #[serde(rename = "_meta")]
1495 #[serde(default, skip_serializing_if = "Option::is_none")]
1496 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1497 #[serde(flatten)]
1499 pub extra: serde_json::Map<String, serde_json::Value>,
1500}
1501#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1505pub struct RootsListChangedNotification {
1506 pub method: monostate::MustBe!("notifications/roots/list_changed"),
1507 #[serde(default, skip_serializing_if = "Option::is_none")]
1508 pub params: Option<RootsListChangedNotificationParams>,
1509 #[serde(flatten)]
1511 pub extra: serde_json::Map<String, serde_json::Value>,
1512}
1513#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1515#[serde(untagged)]
1516pub enum SamplingMessageContent {
1517 TextContent(TextContent),
1519 ImageContent(ImageContent),
1521 AudioContent(AudioContent),
1523}
1524#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1526pub struct SamplingMessage {
1527 pub content: SamplingMessageContent,
1528 pub role: Role,
1529 #[serde(flatten)]
1531 pub extra: serde_json::Map<String, serde_json::Value>,
1532}
1533#[derive(
1535 Debug,
1536 Clone,
1537 PartialEq,
1538 serde::Serialize,
1539 serde::Deserialize,
1540 Eq,
1541 Hash,
1542 Default
1543)]
1544pub struct ServerCapabilitiesPrompts {
1545 #[serde(rename = "listChanged")]
1547 #[serde(default, skip_serializing_if = "Option::is_none")]
1548 pub list_changed: Option<bool>,
1549 #[serde(flatten)]
1551 pub extra: serde_json::Map<String, serde_json::Value>,
1552}
1553#[derive(
1555 Debug,
1556 Clone,
1557 PartialEq,
1558 serde::Serialize,
1559 serde::Deserialize,
1560 Eq,
1561 Hash,
1562 Default
1563)]
1564pub struct ServerCapabilitiesResources {
1565 #[serde(rename = "listChanged")]
1567 #[serde(default, skip_serializing_if = "Option::is_none")]
1568 pub list_changed: Option<bool>,
1569 #[serde(default, skip_serializing_if = "Option::is_none")]
1571 pub subscribe: Option<bool>,
1572 #[serde(flatten)]
1574 pub extra: serde_json::Map<String, serde_json::Value>,
1575}
1576#[derive(
1578 Debug,
1579 Clone,
1580 PartialEq,
1581 serde::Serialize,
1582 serde::Deserialize,
1583 Eq,
1584 Hash,
1585 Default
1586)]
1587pub struct ServerCapabilitiesTools {
1588 #[serde(rename = "listChanged")]
1590 #[serde(default, skip_serializing_if = "Option::is_none")]
1591 pub list_changed: Option<bool>,
1592 #[serde(flatten)]
1594 pub extra: serde_json::Map<String, serde_json::Value>,
1595}
1596#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1598pub struct ServerCapabilities {
1599 #[serde(default, skip_serializing_if = "Option::is_none")]
1601 pub completions: Option<serde_json::Map<String, serde_json::Value>>,
1602 #[serde(default, skip_serializing_if = "Option::is_none")]
1604 pub experimental: Option<
1605 indexmap::IndexMap<String, serde_json::Map<String, serde_json::Value>>,
1606 >,
1607 #[serde(default, skip_serializing_if = "Option::is_none")]
1609 pub logging: Option<serde_json::Map<String, serde_json::Value>>,
1610 #[serde(default, skip_serializing_if = "Option::is_none")]
1612 pub prompts: Option<ServerCapabilitiesPrompts>,
1613 #[serde(default, skip_serializing_if = "Option::is_none")]
1615 pub resources: Option<ServerCapabilitiesResources>,
1616 #[serde(default, skip_serializing_if = "Option::is_none")]
1618 pub tools: Option<ServerCapabilitiesTools>,
1619 #[serde(flatten)]
1621 pub extra: serde_json::Map<String, serde_json::Value>,
1622}
1623#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1625#[serde(untagged)]
1626pub enum ServerNotification {
1627 CancelledNotification(CancelledNotification),
1635 ProgressNotification(ProgressNotification),
1637 ResourceListChangedNotification(ResourceListChangedNotification),
1639 ResourceUpdatedNotification(ResourceUpdatedNotification),
1641 PromptListChangedNotification(PromptListChangedNotification),
1643 ToolListChangedNotification(ToolListChangedNotification),
1645 LoggingMessageNotification(LoggingMessageNotification),
1647}
1648#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1650#[serde(untagged)]
1651pub enum ServerRequest {
1652 PingRequest(PingRequest),
1654 CreateMessageRequest(CreateMessageRequest),
1656 ListRootsRequest(ListRootsRequest),
1664}
1665#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1667#[serde(untagged)]
1668pub enum ServerResult {
1669 Result(Result),
1670 InitializeResult(InitializeResult),
1672 ListResourcesResult(ListResourcesResult),
1674 ReadResourceResult(ReadResourceResult),
1676 ListPromptsResult(ListPromptsResult),
1678 GetPromptResult(GetPromptResult),
1680 ListToolsResult(ListToolsResult),
1682 CallToolResult(CallToolResult),
1693 CompleteResult(CompleteResult),
1695}
1696#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1698pub struct SetLevelRequestParams {
1699 pub level: LoggingLevel,
1701 #[serde(flatten)]
1703 pub extra: serde_json::Map<String, serde_json::Value>,
1704}
1705#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1707pub struct SetLevelRequest {
1708 pub method: monostate::MustBe!("logging/setLevel"),
1709 pub params: SetLevelRequestParams,
1710 #[serde(flatten)]
1712 pub extra: serde_json::Map<String, serde_json::Value>,
1713}
1714#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1716pub struct SubscribeRequestParams {
1717 pub uri: String,
1719 #[serde(flatten)]
1721 pub extra: serde_json::Map<String, serde_json::Value>,
1722}
1723#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1725pub struct SubscribeRequest {
1726 pub method: monostate::MustBe!("resources/subscribe"),
1727 pub params: SubscribeRequestParams,
1728 #[serde(flatten)]
1730 pub extra: serde_json::Map<String, serde_json::Value>,
1731}
1732#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1734pub struct TextContent {
1735 #[serde(default, skip_serializing_if = "Option::is_none")]
1737 pub annotations: Option<Annotations>,
1738 pub text: String,
1740 pub r#type: monostate::MustBe!("text"),
1741 #[serde(flatten)]
1743 pub extra: serde_json::Map<String, serde_json::Value>,
1744}
1745#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1747pub struct TextResourceContents {
1748 #[serde(rename = "mimeType")]
1750 #[serde(default, skip_serializing_if = "Option::is_none")]
1751 pub mime_type: Option<String>,
1752 pub text: String,
1754 pub uri: String,
1756 #[serde(flatten)]
1758 pub extra: serde_json::Map<String, serde_json::Value>,
1759}
1760#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1762pub struct ToolInputSchema {
1763 #[serde(default, skip_serializing_if = "Option::is_none")]
1764 pub properties: Option<
1765 indexmap::IndexMap<String, serde_json::Map<String, serde_json::Value>>,
1766 >,
1767 #[serde(default, skip_serializing_if = "Option::is_none")]
1768 pub required: Option<Vec<String>>,
1769 pub r#type: monostate::MustBe!("object"),
1770 #[serde(flatten)]
1772 pub extra: serde_json::Map<String, serde_json::Value>,
1773}
1774#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1776pub struct Tool {
1777 #[serde(default, skip_serializing_if = "Option::is_none")]
1779 pub annotations: Option<ToolAnnotations>,
1780 #[serde(default, skip_serializing_if = "Option::is_none")]
1784 pub description: Option<String>,
1785 #[serde(rename = "inputSchema")]
1787 pub input_schema: ToolInputSchema,
1788 pub name: String,
1790 #[serde(flatten)]
1792 pub extra: serde_json::Map<String, serde_json::Value>,
1793}
1794#[derive(
1803 Debug,
1804 Clone,
1805 PartialEq,
1806 serde::Serialize,
1807 serde::Deserialize,
1808 Eq,
1809 Hash,
1810 Default
1811)]
1812pub struct ToolAnnotations {
1813 #[serde(rename = "destructiveHint")]
1820 #[serde(default, skip_serializing_if = "Option::is_none")]
1821 pub destructive_hint: Option<bool>,
1822 #[serde(rename = "idempotentHint")]
1829 #[serde(default, skip_serializing_if = "Option::is_none")]
1830 pub idempotent_hint: Option<bool>,
1831 #[serde(rename = "openWorldHint")]
1838 #[serde(default, skip_serializing_if = "Option::is_none")]
1839 pub open_world_hint: Option<bool>,
1840 #[serde(rename = "readOnlyHint")]
1844 #[serde(default, skip_serializing_if = "Option::is_none")]
1845 pub read_only_hint: Option<bool>,
1846 #[serde(default, skip_serializing_if = "Option::is_none")]
1848 pub title: Option<String>,
1849 #[serde(flatten)]
1851 pub extra: serde_json::Map<String, serde_json::Value>,
1852}
1853#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
1855pub struct ToolListChangedNotificationParams {
1856 #[serde(rename = "_meta")]
1858 #[serde(default, skip_serializing_if = "Option::is_none")]
1859 pub meta: Option<serde_json::Map<String, serde_json::Value>>,
1860 #[serde(flatten)]
1862 pub extra: serde_json::Map<String, serde_json::Value>,
1863}
1864#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1866pub struct ToolListChangedNotification {
1867 pub method: monostate::MustBe!("notifications/tools/list_changed"),
1868 #[serde(default, skip_serializing_if = "Option::is_none")]
1869 pub params: Option<ToolListChangedNotificationParams>,
1870 #[serde(flatten)]
1872 pub extra: serde_json::Map<String, serde_json::Value>,
1873}
1874#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Eq, Hash)]
1876pub struct UnsubscribeRequestParams {
1877 pub uri: String,
1879 #[serde(flatten)]
1881 pub extra: serde_json::Map<String, serde_json::Value>,
1882}
1883#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
1885pub struct UnsubscribeRequest {
1886 pub method: monostate::MustBe!("resources/unsubscribe"),
1887 pub params: UnsubscribeRequestParams,
1888 #[serde(flatten)]
1890 pub extra: serde_json::Map<String, serde_json::Value>,
1891}