///|
/// Client Info — sent during initialization
pub(all) struct ClientInfo {
name : String
title : String?
version : String
} derive(Debug, Eq)
///|
/// Client Capabilities — declared during initialization
pub(all) struct ClientCapabilities {
roots : RootCapabilities?
sampling : SamplingCapabilities?
elicitation : ElicitationCapabilities?
/// Optional protocol extensions, per 2026-07-28 versioning: a map of
/// extension identifiers (following `_meta` key naming rules) to
/// per-extension settings objects.
extensions : Map[String, Json]?
} derive(Debug, Eq)
///|
/// Root Capabilities — client can provide filesystem roots
pub(all) struct RootCapabilities {
list_changed : Bool
} derive(Debug, Eq)
///|
/// Sampling Capabilities — client supports LLM sampling requests
pub(all) struct SamplingCapabilities {} derive(Debug, Eq)
///|
/// Elicitation Capabilities — client supports user interaction requests
pub(all) struct ElicitationCapabilities {
form : Bool
} derive(Debug, Eq)
///|
/// Root — a filesystem root exposed by the client for `roots/list`
pub(all) struct Root {
uri : String
name : String?
} derive(Debug, Eq)
///|
/// SamplingMessage — a message within a sampling/createMessage request
pub(all) struct SamplingMessage {
role : String
content : ContentItem
} derive(Debug, Eq)
///|
/// CreateMessageRequest — server asks client to sample an LLM
pub(all) struct CreateMessageRequest {
messages : Array[SamplingMessage]
max_tokens : Int
system_prompt : String?
include_context : String?
temperature : Double?
stop_sequences : Array[String]?
metadata : Json?
} derive(Debug, Eq)
///|
/// CreateMessageResult — client's response to a sampling request
pub(all) struct CreateMessageResult {
role : String
model : String
content : ContentItem
stop_reason : String?
} derive(Debug, Eq)
///|
/// ElicitationRequest — server asks client to interact with the user
pub(all) struct ElicitationRequest {
message : String
requested_schema : Json
} derive(Debug, Eq)
///|
/// ElicitationResult — client's response to an elicitation request
pub(all) struct ElicitationResult {
action : String
content : Json?
} derive(Debug, Eq)
///|
/// ProgressNotification — params for `notifications/progress`
pub(all) struct ProgressNotification {
progress_token : String
progress : Double
total : Double?
message : String?
} derive(Debug, Eq)
///|
/// CancelledNotification — params for `notifications/cancelled`
pub(all) struct CancelledNotification {
request_id : RequestId
reason : String?
} derive(Debug, Eq)
///|
/// ResourceUpdatedNotification — params for `notifications/resources/updated`
pub(all) struct ResourceUpdatedNotification {
uri : String
} derive(Debug, Eq)