diff --git a/build.gradle.kts b/build.gradle.kts index 616b514e..f7f3ef4c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,8 +38,11 @@ kover { reports { filters { includes.classes("io.modelcontextprotocol.kotlin.sdk.*") - excludes.classes("io.modelcontextprotocol.kotlin.sdk.models.*") // temporary - excludes.classes("io.modelcontextprotocol.kotlin.sdk.models.infrastructure.*") // generated + excludes { + annotatedBy("kotlin.Deprecated") + classes("io.modelcontextprotocol.kotlin.sdk.models.*") // temporary + classes("io.modelcontextprotocol.kotlin.sdk.models.infrastructure.*") // generated + } } total { log { diff --git a/kotlin-sdk-client/api/kotlin-sdk-client.api b/kotlin-sdk-client/api/kotlin-sdk-client.api index 46a7b60d..7a1e0fad 100644 --- a/kotlin-sdk-client/api/kotlin-sdk-client.api +++ b/kotlin-sdk-client/api/kotlin-sdk-client.api @@ -1,53 +1,53 @@ public class io/modelcontextprotocol/kotlin/sdk/client/Client : io/modelcontextprotocol/kotlin/sdk/shared/Protocol { - public fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/client/ClientOptions;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/client/ClientOptions;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/client/ClientOptions;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/client/ClientOptions;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun addRoot (Ljava/lang/String;Ljava/lang/String;)V public final fun addRoots (Ljava/util/List;)V protected final fun assertCapability (Ljava/lang/String;Ljava/lang/String;)V - protected fun assertCapabilityForMethod (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - protected fun assertNotificationCapability (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public fun assertRequestHandlerCapability (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public final fun callTool (Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest;ZLio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun callTool (Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ZLio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun callTool$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest;ZLio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static synthetic fun callTool$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ZLio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun complete (Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun complete$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + protected fun assertCapabilityForMethod (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + protected fun assertNotificationCapability (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public fun assertRequestHandlerCapability (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public final fun callTool (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun callTool (Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun callTool$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static synthetic fun callTool$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun complete (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun complete$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public fun connect (Lio/modelcontextprotocol/kotlin/sdk/shared/Transport;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun getPrompt (Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun getPrompt$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun getServerCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; + public final fun getPrompt (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun getPrompt$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun getServerCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; public final fun getServerInstructions ()Ljava/lang/String; - public final fun getServerVersion ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; - public final fun listPrompts (Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun listPrompts$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun listResourceTemplates (Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun listResourceTemplates$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun listResources (Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun listResources$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun listTools (Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun listTools$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun getServerVersion ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; + public final fun listPrompts (Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun listPrompts$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun listResourceTemplates (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun listResourceTemplates$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun listResources (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun listResources$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun listTools (Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun listTools$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun ping (Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun ping$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun readResource (Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun readResource$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun readResource (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun readResource$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun removeRoot (Ljava/lang/String;)Z public final fun removeRoots (Ljava/util/List;)I public final fun sendRootsListChanged (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun setElicitationHandler (Lkotlin/jvm/functions/Function1;)V - public final fun setLoggingLevel (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun setLoggingLevel$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun subscribeResource (Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun subscribeResource$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun unsubscribeResource (Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun unsubscribeResource$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun setLoggingLevel (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun setLoggingLevel$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun subscribeResource (Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun subscribeResource$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun unsubscribeResource (Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun unsubscribeResource$default (Lio/modelcontextprotocol/kotlin/sdk/client/Client;Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } public final class io/modelcontextprotocol/kotlin/sdk/client/ClientOptions : io/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions { public fun ()V - public fun (Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Z)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;Z)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; } public final class io/modelcontextprotocol/kotlin/sdk/client/KtorClientKt { @@ -61,14 +61,14 @@ public final class io/modelcontextprotocol/kotlin/sdk/client/SseClientTransport public synthetic fun (Lio/ktor/client/HttpClient;Ljava/lang/String;Lkotlin/time/Duration;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public synthetic fun (Lio/ktor/client/HttpClient;Ljava/lang/String;Lkotlin/time/Duration;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class io/modelcontextprotocol/kotlin/sdk/client/StdioClientTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport { public fun (Lkotlinx/io/Source;Lkotlinx/io/Sink;)V public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -78,9 +78,9 @@ public final class io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClien public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getProtocolVersion ()Ljava/lang/String; public final fun getSessionId ()Ljava/lang/String; - public final fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun send$default (Lio/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTransport;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun send$default (Lio/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTransport;Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun setProtocolVersion (Ljava/lang/String;)V public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun terminateSession (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/Client.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/Client.kt index 8eb8957a..f0283c91 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/Client.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/Client.kt @@ -1,63 +1,59 @@ package io.modelcontextprotocol.kotlin.sdk.client import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.CallToolRequest -import io.modelcontextprotocol.kotlin.sdk.CallToolResult -import io.modelcontextprotocol.kotlin.sdk.CallToolResultBase -import io.modelcontextprotocol.kotlin.sdk.ClientCapabilities -import io.modelcontextprotocol.kotlin.sdk.CompatibilityCallToolResult -import io.modelcontextprotocol.kotlin.sdk.CompleteRequest -import io.modelcontextprotocol.kotlin.sdk.CompleteResult -import io.modelcontextprotocol.kotlin.sdk.CreateElicitationRequest -import io.modelcontextprotocol.kotlin.sdk.CreateElicitationResult -import io.modelcontextprotocol.kotlin.sdk.EmptyRequestResult -import io.modelcontextprotocol.kotlin.sdk.GetPromptRequest -import io.modelcontextprotocol.kotlin.sdk.GetPromptResult -import io.modelcontextprotocol.kotlin.sdk.Implementation -import io.modelcontextprotocol.kotlin.sdk.InitializeRequest -import io.modelcontextprotocol.kotlin.sdk.InitializeResult -import io.modelcontextprotocol.kotlin.sdk.InitializedNotification -import io.modelcontextprotocol.kotlin.sdk.LATEST_PROTOCOL_VERSION -import io.modelcontextprotocol.kotlin.sdk.ListPromptsRequest -import io.modelcontextprotocol.kotlin.sdk.ListPromptsResult -import io.modelcontextprotocol.kotlin.sdk.ListResourceTemplatesRequest -import io.modelcontextprotocol.kotlin.sdk.ListResourceTemplatesResult -import io.modelcontextprotocol.kotlin.sdk.ListResourcesRequest -import io.modelcontextprotocol.kotlin.sdk.ListResourcesResult -import io.modelcontextprotocol.kotlin.sdk.ListRootsRequest -import io.modelcontextprotocol.kotlin.sdk.ListRootsResult -import io.modelcontextprotocol.kotlin.sdk.ListToolsRequest -import io.modelcontextprotocol.kotlin.sdk.ListToolsResult -import io.modelcontextprotocol.kotlin.sdk.LoggingLevel -import io.modelcontextprotocol.kotlin.sdk.LoggingMessageNotification.SetLevelRequest -import io.modelcontextprotocol.kotlin.sdk.Method -import io.modelcontextprotocol.kotlin.sdk.PingRequest -import io.modelcontextprotocol.kotlin.sdk.ReadResourceRequest -import io.modelcontextprotocol.kotlin.sdk.ReadResourceResult -import io.modelcontextprotocol.kotlin.sdk.Root -import io.modelcontextprotocol.kotlin.sdk.RootsListChangedNotification -import io.modelcontextprotocol.kotlin.sdk.SUPPORTED_PROTOCOL_VERSIONS -import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities -import io.modelcontextprotocol.kotlin.sdk.SubscribeRequest -import io.modelcontextprotocol.kotlin.sdk.UnsubscribeRequest import io.modelcontextprotocol.kotlin.sdk.shared.Protocol import io.modelcontextprotocol.kotlin.sdk.shared.ProtocolOptions import io.modelcontextprotocol.kotlin.sdk.shared.RequestOptions import io.modelcontextprotocol.kotlin.sdk.shared.Transport +import io.modelcontextprotocol.kotlin.sdk.types.CallToolRequest +import io.modelcontextprotocol.kotlin.sdk.types.CallToolRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.CallToolResult +import io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities +import io.modelcontextprotocol.kotlin.sdk.types.CompleteRequest +import io.modelcontextprotocol.kotlin.sdk.types.CompleteResult +import io.modelcontextprotocol.kotlin.sdk.types.ElicitRequest +import io.modelcontextprotocol.kotlin.sdk.types.ElicitResult +import io.modelcontextprotocol.kotlin.sdk.types.EmptyResult +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequest +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptResult +import io.modelcontextprotocol.kotlin.sdk.types.Implementation +import io.modelcontextprotocol.kotlin.sdk.types.InitializeRequest +import io.modelcontextprotocol.kotlin.sdk.types.InitializeRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.InitializeResult +import io.modelcontextprotocol.kotlin.sdk.types.InitializedNotification +import io.modelcontextprotocol.kotlin.sdk.types.LATEST_PROTOCOL_VERSION +import io.modelcontextprotocol.kotlin.sdk.types.ListPromptsRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListPromptsResult +import io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesResult +import io.modelcontextprotocol.kotlin.sdk.types.ListResourcesRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListResourcesResult +import io.modelcontextprotocol.kotlin.sdk.types.ListRootsRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListRootsResult +import io.modelcontextprotocol.kotlin.sdk.types.ListToolsRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListToolsResult +import io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel +import io.modelcontextprotocol.kotlin.sdk.types.Method +import io.modelcontextprotocol.kotlin.sdk.types.PingRequest +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequest +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceResult +import io.modelcontextprotocol.kotlin.sdk.types.RequestMeta +import io.modelcontextprotocol.kotlin.sdk.types.Root +import io.modelcontextprotocol.kotlin.sdk.types.RootsListChangedNotification +import io.modelcontextprotocol.kotlin.sdk.types.SUPPORTED_PROTOCOL_VERSIONS +import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities +import io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequest +import io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.SubscribeRequest +import io.modelcontextprotocol.kotlin.sdk.types.UnsubscribeRequest +import io.modelcontextprotocol.kotlin.sdk.types.toJson import kotlinx.atomicfu.atomic import kotlinx.atomicfu.getAndUpdate import kotlinx.atomicfu.update import kotlinx.collections.immutable.minus import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.toPersistentSet -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonNull import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.JsonPrimitive -import kotlinx.serialization.json.add -import kotlinx.serialization.json.buildJsonArray -import kotlinx.serialization.json.buildJsonObject import kotlin.coroutines.cancellation.CancellationException private val logger = KotlinLogging.logger {} @@ -152,9 +148,11 @@ public open class Client(private val clientInfo: Implementation, options: Client try { val message = InitializeRequest( - protocolVersion = LATEST_PROTOCOL_VERSION, - capabilities = capabilities, - clientInfo = clientInfo, + InitializeRequestParams( + protocolVersion = LATEST_PROTOCOL_VERSION, + capabilities = capabilities, + clientInfo = clientInfo, + ), ) val result = request(message) @@ -293,8 +291,7 @@ public open class Client(private val clientInfo: Implementation, options: Client * @param options Optional request options. * @throws IllegalStateException If the server does not support the ping method (unlikely). */ - public suspend fun ping(options: RequestOptions? = null): EmptyRequestResult = - request(PingRequest(), options) + public suspend fun ping(options: RequestOptions? = null): EmptyResult = request(PingRequest(), options) /** * Sends a completion request to the server, typically to generate or complete some content. @@ -314,8 +311,8 @@ public open class Client(private val clientInfo: Implementation, options: Client * @param options Optional request options. * @throws IllegalStateException If the server does not support logging. */ - public suspend fun setLoggingLevel(level: LoggingLevel, options: RequestOptions? = null): EmptyRequestResult = - request(SetLevelRequest(level), options) + public suspend fun setLoggingLevel(level: LoggingLevel, options: RequestOptions? = null): EmptyResult = + request(SetLevelRequest(SetLevelRequestParams(level)), options) /** * Retrieves a prompt by name from the server. @@ -387,10 +384,8 @@ public open class Client(private val clientInfo: Implementation, options: Client * @param options Optional request options. * @throws IllegalStateException If the server does not support resource subscriptions. */ - public suspend fun subscribeResource( - request: SubscribeRequest, - options: RequestOptions? = null, - ): EmptyRequestResult = request(request, options) + public suspend fun subscribeResource(request: SubscribeRequest, options: RequestOptions? = null): EmptyResult = + request(request, options) /** * Unsubscribes from resource changes on the server. @@ -399,10 +394,8 @@ public open class Client(private val clientInfo: Implementation, options: Client * @param options Optional request options. * @throws IllegalStateException If the server does not support resource subscriptions. */ - public suspend fun unsubscribeResource( - request: UnsubscribeRequest, - options: RequestOptions? = null, - ): EmptyRequestResult = request(request, options) + public suspend fun unsubscribeResource(request: UnsubscribeRequest, options: RequestOptions? = null): EmptyResult = + request(request, options) /** * Calls a tool on the server by name, passing the specified arguments and metadata. @@ -413,7 +406,6 @@ public open class Client(private val clientInfo: Implementation, options: Client * - Optional prefix: dot-separated labels followed by slash (e.g., "api.example.com/") * - Name: alphanumeric start/end, may contain hyphens, underscores, dots, alphanumerics * - Reserved prefixes starting with "mcp" or "modelcontextprotocol" are forbidden - * @param compatibility Whether to use compatibility mode for older protocol versions. * @param options Optional request options. * @return The result of the tool call, or `null` if none. * @throws IllegalStateException If the server does not support tools. @@ -422,40 +414,33 @@ public open class Client(private val clientInfo: Implementation, options: Client name: String, arguments: Map, meta: Map = emptyMap(), - compatibility: Boolean = false, options: RequestOptions? = null, - ): CallToolResultBase? { + ): CallToolResult { validateMetaKeys(meta.keys) - val jsonArguments = convertToJsonMap(arguments) - val jsonMeta = convertToJsonMap(meta) + val jsonArguments = arguments.toJson() + val jsonMeta = meta.toJson() val request = CallToolRequest( - name = name, - arguments = JsonObject(jsonArguments), - _meta = JsonObject(jsonMeta), + CallToolRequestParams( + name = name, + arguments = JsonObject(jsonArguments), + meta = RequestMeta(JsonObject(jsonMeta)), + ), ) - return callTool(request, compatibility, options) + return callTool(request, options) } /** * Calls a tool on the server using a [CallToolRequest] object. * * @param request The request object containing the tool name and arguments. - * @param compatibility Whether to use compatibility mode for older protocol versions. * @param options Optional request options. * @return The result of the tool call, or `null` if none. * @throws IllegalStateException If the server does not support tools. */ - public suspend fun callTool( - request: CallToolRequest, - compatibility: Boolean = false, - options: RequestOptions? = null, - ): CallToolResultBase? = if (compatibility) { - request(request, options) - } else { - request(request, options) - } + public suspend fun callTool(request: CallToolRequest, options: RequestOptions? = null): CallToolResult = + request(request, options) /** * Lists all available tools on the server. @@ -570,14 +555,14 @@ public open class Client(private val clientInfo: Implementation, options: Client * @param handler The elicitation handler. * @throws IllegalStateException if the client does not support elicitation. */ - public fun setElicitationHandler(handler: (CreateElicitationRequest) -> CreateElicitationResult) { + public fun setElicitationHandler(handler: (ElicitRequest) -> ElicitResult) { if (capabilities.elicitation == null) { logger.error { "Failed to set elicitation handler: Client does not support elicitation" } throw IllegalStateException("Client does not support elicitation.") } logger.info { "Setting the elicitation handler" } - setRequestHandler(Method.Defined.ElicitationCreate) { request, _ -> + setRequestHandler(Method.Defined.ElicitationCreate) { request, _ -> handler(request) } } @@ -637,67 +622,4 @@ public open class Client(private val clientInfo: Implementation, options: Client } } } - - private fun convertToJsonMap(map: Map): Map = map.mapValues { (key, value) -> - try { - convertToJsonElement(value) - } catch (e: Exception) { - logger.warn { "Failed to convert value for key '$key': ${e.message}. Using string representation." } - JsonPrimitive(value.toString()) - } - } - - @OptIn(ExperimentalUnsignedTypes::class, ExperimentalSerializationApi::class) - private fun convertToJsonElement(value: Any?): JsonElement = when (value) { - null -> JsonNull - - is JsonElement -> value - - is String -> JsonPrimitive(value) - - is Number -> JsonPrimitive(value) - - is Boolean -> JsonPrimitive(value) - - is Char -> JsonPrimitive(value.toString()) - - is Enum<*> -> JsonPrimitive(value.name) - - is Map<*, *> -> buildJsonObject { value.forEach { (k, v) -> put(k.toString(), convertToJsonElement(v)) } } - - is Collection<*> -> buildJsonArray { value.forEach { add(convertToJsonElement(it)) } } - - is Array<*> -> buildJsonArray { value.forEach { add(convertToJsonElement(it)) } } - - // Primitive arrays - is IntArray -> buildJsonArray { value.forEach { add(it) } } - - is LongArray -> buildJsonArray { value.forEach { add(it) } } - - is FloatArray -> buildJsonArray { value.forEach { add(it) } } - - is DoubleArray -> buildJsonArray { value.forEach { add(it) } } - - is BooleanArray -> buildJsonArray { value.forEach { add(it) } } - - is ShortArray -> buildJsonArray { value.forEach { add(it) } } - - is ByteArray -> buildJsonArray { value.forEach { add(it) } } - - is CharArray -> buildJsonArray { value.forEach { add(it.toString()) } } - - // Unsigned arrays - is UIntArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } - - is ULongArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } - - is UShortArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } - - is UByteArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } - - else -> { - logger.debug { "Converting unknown type ${value::class} to string: $value" } - JsonPrimitive(value.toString()) - } - } } diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/KtorClient.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/KtorClient.kt index ccc1496e..fe92e15f 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/KtorClient.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/KtorClient.kt @@ -2,9 +2,9 @@ package io.modelcontextprotocol.kotlin.sdk.client import io.ktor.client.HttpClient import io.ktor.client.request.HttpRequestBuilder -import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.LIB_VERSION import io.modelcontextprotocol.kotlin.sdk.shared.IMPLEMENTATION_NAME +import io.modelcontextprotocol.kotlin.sdk.types.Implementation import kotlin.time.Duration /** diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/SSEClientTransport.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/SSEClientTransport.kt index c0bcd546..f2b7d3dd 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/SSEClientTransport.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/SSEClientTransport.kt @@ -14,9 +14,9 @@ import io.ktor.http.Url import io.ktor.http.append import io.ktor.http.isSuccess import io.ktor.http.protocolWithAuthority -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport -import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.McpJson import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineName diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StdioClientTransport.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StdioClientTransport.kt index 583cec63..6e272eb3 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StdioClientTransport.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StdioClientTransport.kt @@ -1,11 +1,11 @@ package io.modelcontextprotocol.kotlin.sdk.client import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage import io.modelcontextprotocol.kotlin.sdk.internal.IODispatcher import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport import io.modelcontextprotocol.kotlin.sdk.shared.ReadBuffer import io.modelcontextprotocol.kotlin.sdk.shared.serializeMessage +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTransport.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTransport.kt index f0939a3c..a4028745 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTransport.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTransport.kt @@ -21,13 +21,13 @@ import io.ktor.http.HttpStatusCode import io.ktor.http.contentType import io.ktor.http.isSuccess import io.ktor.utils.io.readUTF8Line -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage -import io.modelcontextprotocol.kotlin.sdk.JSONRPCNotification -import io.modelcontextprotocol.kotlin.sdk.JSONRPCRequest -import io.modelcontextprotocol.kotlin.sdk.JSONRPCResponse -import io.modelcontextprotocol.kotlin.sdk.RequestId import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport -import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCNotification +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCRequest +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCResponse +import io.modelcontextprotocol.kotlin.sdk.types.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.RequestId import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpMcpKtorClientExtensions.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpMcpKtorClientExtensions.kt index 1a600a3a..b64a2206 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpMcpKtorClientExtensions.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpMcpKtorClientExtensions.kt @@ -2,9 +2,9 @@ package io.modelcontextprotocol.kotlin.sdk.client import io.ktor.client.HttpClient import io.ktor.client.request.HttpRequestBuilder -import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.LIB_VERSION import io.modelcontextprotocol.kotlin.sdk.shared.IMPLEMENTATION_NAME +import io.modelcontextprotocol.kotlin.sdk.types.Implementation import kotlin.time.Duration /** diff --git a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/WebSocketMcpKtorClientExtensions.kt b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/WebSocketMcpKtorClientExtensions.kt index 86479533..a0df47c8 100644 --- a/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/WebSocketMcpKtorClientExtensions.kt +++ b/kotlin-sdk-client/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/client/WebSocketMcpKtorClientExtensions.kt @@ -3,9 +3,9 @@ package io.modelcontextprotocol.kotlin.sdk.client import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.HttpClient import io.ktor.client.request.HttpRequestBuilder -import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.LIB_VERSION import io.modelcontextprotocol.kotlin.sdk.shared.IMPLEMENTATION_NAME +import io.modelcontextprotocol.kotlin.sdk.types.Implementation private val logger = KotlinLogging.logger {} diff --git a/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/MockMcp.kt b/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldSchemaMockMcp.kt similarity index 98% rename from kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/MockMcp.kt rename to kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldSchemaMockMcp.kt index eef77f16..eb2760b3 100644 --- a/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/MockMcp.kt +++ b/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldSchemaMockMcp.kt @@ -7,8 +7,8 @@ import io.ktor.http.ContentType import io.ktor.http.HttpMethod import io.ktor.http.HttpStatusCode import io.ktor.sse.ServerSentEvent -import io.modelcontextprotocol.kotlin.sdk.JSONRPCRequest -import io.modelcontextprotocol.kotlin.sdk.RequestId +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCRequest +import io.modelcontextprotocol.kotlin.sdk.types.RequestId import kotlinx.coroutines.flow.Flow import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject diff --git a/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTest.kt b/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldStreamableHttpClientTest.kt similarity index 97% rename from kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTest.kt rename to kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldStreamableHttpClientTest.kt index 010b79ae..33897e6b 100644 --- a/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTest.kt +++ b/kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldStreamableHttpClientTest.kt @@ -6,6 +6,7 @@ import io.ktor.http.HttpMethod import io.ktor.http.HttpStatusCode import io.ktor.sse.ServerSentEvent import io.modelcontextprotocol.kotlin.sdk.ClientCapabilities +import io.modelcontextprotocol.kotlin.sdk.EmptyJsonObject import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.Tool import kotlinx.coroutines.delay @@ -30,7 +31,7 @@ import kotlin.uuid.Uuid @OptIn(ExperimentalUuidApi::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) @Suppress("LongMethod") -internal class StreamableHttpClientTest : AbstractStreamableHttpClientTest() { +internal class OldStreamableHttpClientTest : AbstractStreamableHttpClientTest() { @Test fun `test streamableHttpClient`() = runBlocking { @@ -148,6 +149,7 @@ internal class StreamableHttpClientTest : AbstractStreamableHttpClientTest() { required = listOf("temperature"), ), annotations = null, + _meta = EmptyJsonObject, ) mockMcp.mockUnsubscribeRequest(sessionId = sessionId) diff --git a/kotlin-sdk-core/api/kotlin-sdk-core.api b/kotlin-sdk-core/api/kotlin-sdk-core.api index 0c56876d..e474e64f 100644 --- a/kotlin-sdk-core/api/kotlin-sdk-core.api +++ b/kotlin-sdk-core/api/kotlin-sdk-core.api @@ -1,11 +1,524 @@ -public final class io/modelcontextprotocol/kotlin/sdk/Annotations { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Annotations$Companion; - public fun (Ljava/util/List;Ljava/lang/String;Ljava/lang/Double;)V +public final class io/modelcontextprotocol/kotlin/sdk/CallToolResult { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CallToolResult; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/CallToolResultBase { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CallToolResultBase$Companion; + public abstract fun getContent ()Ljava/util/List; + public abstract fun getStructuredContent ()Lkotlinx/serialization/json/JsonObject; + public fun isError ()Ljava/lang/Boolean; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CallToolResultBase$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CallToolResultBase$DefaultImpls { + public static fun isError (Lio/modelcontextprotocol/kotlin/sdk/CallToolResultBase;)Ljava/lang/Boolean; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CancelledNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification; + public final fun Params (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; + public final fun Roots (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; + public static synthetic fun Roots$default (Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$Companion; + public fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getContent ()Ljava/util/List; + public final fun getStructuredContent ()Lkotlinx/serialization/json/JsonObject; + public final fun getToolResult ()Lkotlinx/serialization/json/JsonObject; + public final fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun isError ()Ljava/lang/Boolean; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CompleteRequest { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest; + public final fun Argument (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CompleteResult { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompleteResult; + public final fun Completion (Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; + public static synthetic fun Completion$default (Lio/modelcontextprotocol/kotlin/sdk/CompleteResult;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest; + public final fun RequestedSchema (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; + public static synthetic fun RequestedSchema$default (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; + public final fun getAccept ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public final fun getCancel ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public final fun getDecline ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; +} + +public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageRequest { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest; + public final fun getIncludeContext ()Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext$Companion; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/ErrorCode { + public abstract fun getCode ()I +} + +public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; + public final fun getConnectionClosed ()I + public final fun getInternalError ()I + public final fun getInvalidParams ()I + public final fun getInvalidRequest ()I + public final fun getMethodNotFound ()I + public final fun getParseError ()I + public final fun getRequestTimeout ()I +} + +public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown : io/modelcontextprotocol/kotlin/sdk/ErrorCode { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$Companion; + public fun (I)V + public final fun component1 ()I + public final fun copy (I)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown;IILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown; + public fun equals (Ljava/lang/Object;)Z + public fun getCode ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification; + public final fun Params (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/LibVersionKt { + public static final field LIB_VERSION Ljava/lang/String; +} + +public final class io/modelcontextprotocol/kotlin/sdk/LoggingLevel { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; + public final fun getAlert ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getCritical ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getDebug ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getEmergency ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getError ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getInfo ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getNotice ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun getWarning ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; +} + +public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification; + public final fun Params (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; + public final fun SetLevelRequest (Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/Method { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Method$Companion; + public abstract fun getValue ()Ljava/lang/String; +} + +public final class io/modelcontextprotocol/kotlin/sdk/Method$Companion { + public final fun Custom (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom; +} + +public final class io/modelcontextprotocol/kotlin/sdk/Method$Defined { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; + public final fun getCompletionComplete ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getElicitationCreate ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getInitialize ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getLoggingSetLevel ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsCancelled ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsInitialized ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsMessage ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsProgress ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsPromptsListChanged ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsResourcesListChanged ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsResourcesUpdated ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsRootsListChanged ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getNotificationsToolsListChanged ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getPing ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getPromptsGet ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getPromptsList ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getResourcesList ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getResourcesRead ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getResourcesSubscribe ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getResourcesTemplatesList ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getResourcesUnsubscribe ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getRootsList ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getSamplingCreateMessage ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getToolsCall ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public final fun getToolsList ()Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/ProgressBase { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ProgressBase$Companion; + public abstract fun getMessage ()Ljava/lang/String; + public abstract fun getProgress ()D + public abstract fun getTotal ()Ljava/lang/Double; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ProgressBase$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ProgressNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; + public final fun Params (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;DLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;DLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification; + public final fun Params (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/RequestId { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/RequestId; + public final fun NumberId-Nt6Vbyc (J)J + public final fun StringId-QNUQp7g (Ljava/lang/String;)Ljava/lang/String; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification; + public final fun Params (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification; + public final fun Params (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/Role { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Role; + public final fun getAssistant ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public final fun getUser ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; +} + +public final class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification; + public final fun Params (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; + public final fun Prompts (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; + public static synthetic fun Prompts$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; + public final fun Resources (Ljava/lang/Boolean;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; + public static synthetic fun Resources$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; + public final fun Tools (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; + public static synthetic fun Tools$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; +} + +public final class io/modelcontextprotocol/kotlin/sdk/Tool { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Tool; + public final fun Input (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public static synthetic fun Input$default (Lio/modelcontextprotocol/kotlin/sdk/Tool;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public final fun Output (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public static synthetic fun Output$default (Lio/modelcontextprotocol/kotlin/sdk/Tool;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; +} + +public final class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification; + public final fun Params (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public static synthetic fun Params$default (Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/TypesKt { + public static final field JSONRPC_VERSION Ljava/lang/String; + public static final field LATEST_PROTOCOL_VERSION Ljava/lang/String; + public static final fun CallToolResult (Ljava/util/List;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static synthetic fun CallToolResult$default (Ljava/util/List;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static final fun CancelledNotification (Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification; + public static final fun ClientCapabilities (Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; + public static synthetic fun ClientCapabilities$default (Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; + public static final fun CompleteRequest (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest; + public static final fun CompleteResult (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult; + public static synthetic fun CompleteResult$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult; + public static final fun CreateElicitationRequest (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest; + public static final fun CreateElicitationResult (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult; + public static synthetic fun CreateElicitationResult$default (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult; + public static final fun CreateMessageRequest (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest; + public static final fun InitializedNotification (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification; + public static synthetic fun InitializedNotification$default (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification; + public static final fun LoggingMessageNotification (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification; + public static final fun ProgressNotification (Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification; + public static final fun PromptListChangedNotification (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification; + public static final fun ResourceListChangedNotification (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification; + public static synthetic fun ResourceListChangedNotification$default (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification; + public static final fun ResourceUpdatedNotification (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification; + public static final fun RootsListChangedNotification (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification; + public static synthetic fun RootsListChangedNotification$default (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification; + public static final fun ServerCapabilities (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; + public static synthetic fun ServerCapabilities$default (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; + public static final fun Tool (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/Tool; + public static synthetic fun Tool$default (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Tool; + public static final fun ToolListChangedNotification (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification; + public static final fun getSUPPORTED_PROTOCOL_VERSIONS ()Ljava/util/List; + public static final fun toJSON (Lio/modelcontextprotocol/kotlin/sdk/types/Notification;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification; + public static final fun toJSON (Lio/modelcontextprotocol/kotlin/sdk/types/Request;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest; +} + +public final class io/modelcontextprotocol/kotlin/sdk/Types_utilKt { + public static final fun error (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static synthetic fun error$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static final fun getEmptyJsonObject ()Lkotlinx/serialization/json/JsonObject; + public static final fun ok (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static synthetic fun ok$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; +} + +public final class io/modelcontextprotocol/kotlin/sdk/UnknownContent { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownContent$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/UnknownContent; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownContent;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownContent; + public fun equals (Ljava/lang/Object;)Z + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownContent$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownContent; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownContent;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/UnknownContent$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Method; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification;Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification; + public fun equals (Ljava/lang/Object;)Z + public final fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; + public final fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/UnknownReference { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownReference$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/UnknownReference; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownReference; + public fun equals (Ljava/lang/Object;)Z + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownReference$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownReference; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownReference;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/UnknownReference$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/internal/Utils_jvmKt { + public static final fun getIODispatcher ()Lkotlinx/coroutines/CoroutineDispatcher; +} + +public abstract class io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport : io/modelcontextprotocol/kotlin/sdk/shared/Transport { + public fun ()V + protected final fun get_onClose ()Lkotlin/jvm/functions/Function0; + protected final fun get_onError ()Lkotlin/jvm/functions/Function1; + protected final fun get_onMessage ()Lkotlin/jvm/functions/Function2; + public fun onClose (Lkotlin/jvm/functions/Function0;)V + public fun onError (Lkotlin/jvm/functions/Function1;)V + public fun onMessage (Lkotlin/jvm/functions/Function2;)V +} + +public abstract class io/modelcontextprotocol/kotlin/sdk/shared/Protocol { + public fun (Lio/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions;)V + protected abstract fun assertCapabilityForMethod (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + protected abstract fun assertNotificationCapability (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public abstract fun assertRequestHandlerCapability (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public final fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun connect (Lio/modelcontextprotocol/kotlin/sdk/shared/Transport;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getFallbackNotificationHandler ()Lkotlin/jvm/functions/Function2; + public final fun getFallbackRequestHandler ()Lkotlin/jvm/functions/Function3; + public final fun getNotificationHandlers ()Ljava/util/Map; + public final fun getOptions ()Lio/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions; + public final fun getProgressHandlers ()Ljava/util/Map; + public final fun getRequestHandlers ()Ljava/util/Map; + public final fun getResponseHandlers ()Ljava/util/Map; + public final fun getTransport ()Lio/modelcontextprotocol/kotlin/sdk/shared/Transport; + public final fun notification (Lio/modelcontextprotocol/kotlin/sdk/types/Notification;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun onClose ()V + public fun onError (Ljava/lang/Throwable;)V + public final fun removeNotificationHandler (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public final fun removeRequestHandler (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public final fun request (Lio/modelcontextprotocol/kotlin/sdk/types/Request;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun request$default (Lio/modelcontextprotocol/kotlin/sdk/shared/Protocol;Lio/modelcontextprotocol/kotlin/sdk/types/Request;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun setFallbackNotificationHandler (Lkotlin/jvm/functions/Function2;)V + public final fun setFallbackRequestHandler (Lkotlin/jvm/functions/Function3;)V + public final fun setNotificationHandler (Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lkotlin/jvm/functions/Function1;)V + public final fun setRequestHandlerInternal (Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lkotlin/jvm/functions/Function3;)V +} + +public final class io/modelcontextprotocol/kotlin/sdk/shared/ProtocolKt { + public static final field IMPLEMENTATION_NAME Ljava/lang/String; + public static final fun getDEFAULT_REQUEST_TIMEOUT ()J + public static final fun getMcpJson ()Lkotlinx/serialization/json/Json; +} + +public class io/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions { + public synthetic fun (ZJILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (ZJLkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getEnforceStrictCapabilities ()Z + public final fun getTimeout-UwyO8pc ()J + public final fun setEnforceStrictCapabilities (Z)V + public final fun setTimeout-LRDsOJo (J)V +} + +public final class io/modelcontextprotocol/kotlin/sdk/shared/ReadBuffer { + public fun ()V + public final fun append ([B)V + public final fun clear ()V + public final fun readMessage ()Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage; +} + +public final class io/modelcontextprotocol/kotlin/sdk/shared/ReadBufferKt { + public static final fun serializeMessage (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;)Ljava/lang/String; +} + +public final class io/modelcontextprotocol/kotlin/sdk/shared/RequestHandlerExtra { + public fun ()V +} + +public final class io/modelcontextprotocol/kotlin/sdk/shared/RequestOptions { + public synthetic fun (Lkotlin/jvm/functions/Function1;JILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Lkotlin/jvm/functions/Function1;JLkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlin/jvm/functions/Function1; + public final fun component2-UwyO8pc ()J + public final fun copy-HG0u8IE (Lkotlin/jvm/functions/Function1;J)Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions; + public static synthetic fun copy-HG0u8IE$default (Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/jvm/functions/Function1;JILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getOnProgress ()Lkotlin/jvm/functions/Function1; + public final fun getTimeout-UwyO8pc ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/shared/Transport { + public abstract fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun onClose (Lkotlin/jvm/functions/Function0;)V + public abstract fun onError (Lkotlin/jvm/functions/Function1;)V + public abstract fun onMessage (Lkotlin/jvm/functions/Function2;)V + public abstract fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract class io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport { + public fun ()V + public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + protected abstract fun getSession ()Lio/ktor/websocket/WebSocketSession; + protected abstract fun initializeSession (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransportKt { + public static final field MCP_SUBPROTOCOL Ljava/lang/String; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/Annotations { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Annotations$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/lang/Double;Ljava/lang/String;)V + public synthetic fun (Ljava/util/List;Ljava/lang/Double;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/util/List; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Ljava/lang/Double; - public final fun copy (Ljava/util/List;Ljava/lang/String;Ljava/lang/Double;)Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Annotations;Ljava/util/List;Ljava/lang/String;Ljava/lang/Double;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Annotations; + public final fun component2 ()Ljava/lang/Double; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Ljava/util/List;Ljava/lang/Double;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Ljava/lang/Double;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; public fun equals (Ljava/lang/Object;)Z public final fun getAudience ()Ljava/util/List; public final fun getLastModified ()Ljava/lang/String; @@ -14,2228 +527,2680 @@ public final class io/modelcontextprotocol/kotlin/sdk/Annotations { public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Annotations$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Annotations$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Annotations$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Annotations$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Annotations; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Annotations$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Annotations$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/AudioContent : io/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/AudioContent$Companion; - public static final field TYPE Ljava/lang/String; - public fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/AudioContent : io/modelcontextprotocol/kotlin/sdk/types/MediaContent { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)Lio/modelcontextprotocol/kotlin/sdk/AudioContent; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/AudioContent;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/AudioContent; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component4 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent; public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; public final fun getData ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getMimeType ()Ljava/lang/String; - public fun getType ()Ljava/lang/String; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/AudioContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/AudioContent$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/AudioContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/AudioContent; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/AudioContent;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/AudioContent;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/AudioContent$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/AudioContent$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/BlobResourceContents : io/modelcontextprotocol/kotlin/sdk/ResourceContents { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams : io/modelcontextprotocol/kotlin/sdk/types/NotificationParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams$Companion; + public fun ()V + public fun (Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams$Companion; + public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-mJxasco (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public static synthetic fun copy-mJxasco$default (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents : io/modelcontextprotocol/kotlin/sdk/types/ResourceContents { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; public final fun component3 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents; + public final fun component4 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents; public fun equals (Ljava/lang/Object;)Z public final fun getBlob ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun getMimeType ()Ljava/lang/String; public fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/BlobResourceContents$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/BlobResourceContents;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/BlobResourceContents$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/BlobResourceContents$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CallToolRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest$Companion; - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest; +public final class io/modelcontextprotocol/kotlin/sdk/types/CallToolRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest;Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest; public fun equals (Ljava/lang/Object;)Z public final fun getArguments ()Lkotlinx/serialization/json/JsonObject; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getName ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CallToolRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CallToolRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CallToolRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CallToolRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CallToolRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CallToolResult : io/modelcontextprotocol/kotlin/sdk/CallToolResultBase { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion; - public fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun getContent ()Ljava/util/List; - public fun getStructuredContent ()Lkotlinx/serialization/json/JsonObject; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; - public fun isError ()Ljava/lang/Boolean; +public final class io/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams$Companion; + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lkotlinx/serialization/json/JsonObject; + public final fun component3-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-EDEVuBg (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams; + public static synthetic fun copy-EDEVuBg$default (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getArguments ()Lkotlinx/serialization/json/JsonObject; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun getName ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CallToolResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CallToolRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/CallToolResultBase : io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CallToolResultBase$Companion; - public abstract fun getContent ()Ljava/util/List; - public abstract fun getStructuredContent ()Lkotlinx/serialization/json/JsonObject; - public fun isError ()Ljava/lang/Boolean; +public final class io/modelcontextprotocol/kotlin/sdk/types/CallToolResult : io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion; + public fun (Ljava/util/List;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/util/List;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/Boolean; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun component4 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult;Ljava/util/List;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public fun equals (Ljava/lang/Object;)Z + public final fun getContent ()Ljava/util/List; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getStructuredContent ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public final fun isError ()Ljava/lang/Boolean; + public fun toString ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/CallToolResultBase$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CallToolResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CallToolResultBase$DefaultImpls { - public static fun isError (Lio/modelcontextprotocol/kotlin/sdk/CallToolResultBase;)Ljava/lang/Boolean; +public final class io/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CancelledNotification : io/modelcontextprotocol/kotlin/sdk/ClientNotification, io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification;Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/CancelledNotification : io/modelcontextprotocol/kotlin/sdk/types/ClientNotification, io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification;Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CancelledNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CancelledNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CancelledNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CancelledNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; +public final class io/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams : io/modelcontextprotocol/kotlin/sdk/types/NotificationParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; public final fun component2 ()Ljava/lang/String; public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params;Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getReason ()Ljava/lang/String; - public final fun getRequestId ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getRequestId ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CancelledNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CancelledNotificationParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; public final fun component4 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; + public final fun copy (Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; public fun equals (Ljava/lang/Object;)Z public final fun getElicitation ()Lkotlinx/serialization/json/JsonObject; public final fun getExperimental ()Lkotlinx/serialization/json/JsonObject; - public final fun getRoots ()Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots; + public final fun getRoots ()Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; public final fun getSampling ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Companion { + public final fun getElicitation ()Lkotlinx/serialization/json/JsonObject; + public final fun getSampling ()Lkotlinx/serialization/json/JsonObject; public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots$Companion; + public fun ()V public fun (Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/Boolean; - public final fun copy (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots; + public final fun copy (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; public fun equals (Ljava/lang/Object;)Z public final fun getListChanged ()Ljava/lang/Boolean; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ClientCapabilities$Roots$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities$Roots$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ClientNotification : io/modelcontextprotocol/kotlin/sdk/Notification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ClientNotification$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ClientNotification : io/modelcontextprotocol/kotlin/sdk/types/Notification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ClientNotification$Companion; } -public final class io/modelcontextprotocol/kotlin/sdk/ClientNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ClientRequest : io/modelcontextprotocol/kotlin/sdk/Request { +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ClientRequest : io/modelcontextprotocol/kotlin/sdk/types/Request { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ClientRequest$Companion; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ClientResult : io/modelcontextprotocol/kotlin/sdk/RequestResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ClientResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientRequest$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ClientResult$Companion { +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ClientResult : io/modelcontextprotocol/kotlin/sdk/types/RequestResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ClientResult$Companion; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ClientResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult : io/modelcontextprotocol/kotlin/sdk/CallToolResultBase { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$Companion; - public fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun getContent ()Ljava/util/List; - public fun getStructuredContent ()Lkotlinx/serialization/json/JsonObject; - public final fun getToolResult ()Lkotlinx/serialization/json/JsonObject; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; - public fun isError ()Ljava/lang/Boolean; +public final class io/modelcontextprotocol/kotlin/sdk/types/CommonKt { + public static final field LATEST_PROTOCOL_VERSION Ljava/lang/String; + public static final fun ProgressToken (J)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public static final fun ProgressToken (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public static final fun getSUPPORTED_PROTOCOL_VERSIONS ()Ljava/util/List; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$$serializer; +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest; + public fun equals (Ljava/lang/Object;)Z + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompatibilityCallToolResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/Reference;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/Reference;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Reference; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument; - public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Reference;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest;Lio/modelcontextprotocol/kotlin/sdk/Reference;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest; +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Companion; + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument;Lio/modelcontextprotocol/kotlin/sdk/types/Reference;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument;Lio/modelcontextprotocol/kotlin/sdk/types/Reference;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/Reference; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context; + public final fun component4-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-6R815Ik (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument;Lio/modelcontextprotocol/kotlin/sdk/types/Reference;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams; + public static synthetic fun copy-6R815Ik$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument;Lio/modelcontextprotocol/kotlin/sdk/types/Reference;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getArgument ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument; + public final fun getContext ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun getRef ()Lio/modelcontextprotocol/kotlin/sdk/types/Reference; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument; public fun equals (Ljava/lang/Object;)Z - public final fun getArgument ()Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getRef ()Lio/modelcontextprotocol/kotlin/sdk/Reference; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getName ()Ljava/lang/String; + public final fun getValue ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Argument$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context$Companion; + public fun ()V + public fun (Ljava/util/Map;)V + public synthetic fun (Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/Map; + public final fun copy (Ljava/util/Map;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context;Ljava/util/Map;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context; + public fun equals (Ljava/lang/Object;)Z + public final fun getArguments ()Ljava/util/Map; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteRequestParams$Context$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteResult : io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; + public final fun component2 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult; + public fun equals (Ljava/lang/Object;)Z + public final fun getCompletion ()Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CompleteResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion$Companion; + public fun (Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)V + public synthetic fun (Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/Integer; + public final fun component3 ()Ljava/lang/Boolean; + public final fun copy (Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; + public fun equals (Ljava/lang/Object;)Z + public final fun getHasMore ()Ljava/lang/Boolean; + public final fun getTotal ()Ljava/lang/Integer; + public final fun getValues ()Ljava/util/List; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CompleteRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument; - public fun equals (Ljava/lang/Object;)Z - public final fun getName ()Ljava/lang/String; - public final fun getValue ()Ljava/lang/String; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; +public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Completion$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument$$serializer; - public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ContentBlock : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ContentBlock$Companion; + public abstract fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteRequest$Argument$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ContentBlock$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ContentTypes : java/lang/Enum { + public static final field AUDIO Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes$Companion; + public static final field EMBEDDED_RESOURCE Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public static final field IMAGE Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public static final field RESOURCE_LINK Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public static final field TEXT Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ContentTypes$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteResult : io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CompleteResult; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CompleteResult;Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CompleteResult; +public final class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest : io/modelcontextprotocol/kotlin/sdk/types/ServerRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest;Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest; public fun equals (Ljava/lang/Object;)Z - public final fun getCompletion ()Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CompleteResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CompleteResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CompleteResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion$Companion; - public fun (Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)V - public final fun getHasMore ()Ljava/lang/Boolean; - public final fun getTotal ()Ljava/lang/Integer; - public final fun getValues ()Ljava/util/List; +public final class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams$Companion; + public synthetic fun (ILjava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext;Ljava/lang/Double;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (ILjava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext;Ljava/lang/Double;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()I + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; + public final fun component6 ()Ljava/lang/Double; + public final fun component7 ()Ljava/util/List; + public final fun component8 ()Lkotlinx/serialization/json/JsonObject; + public final fun component9-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-qtvSJzw (ILjava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext;Ljava/lang/Double;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams; + public static synthetic fun copy-qtvSJzw$default (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams;ILjava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext;Ljava/lang/Double;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getIncludeContext ()Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; + public final fun getMaxTokens ()I + public final fun getMessages ()Ljava/util/List; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun getMetadata ()Lkotlinx/serialization/json/JsonObject; + public final fun getModelPreferences ()Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences; + public final fun getStopSequences ()Ljava/util/List; + public final fun getSystemPrompt ()Ljava/lang/String; + public final fun getTemperature ()Ljava/lang/Double; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CompleteResult$Completion$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest : io/modelcontextprotocol/kotlin/sdk/ServerRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$Companion; - public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema; - public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest; +public final class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult : io/modelcontextprotocol/kotlin/sdk/types/ClientResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult$Companion; + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent; + public final fun component3 ()Ljava/lang/String; + public final fun component4-6olV-UY ()Ljava/lang/String; + public final fun component5 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-ctVX1tw (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult; + public static synthetic fun copy-ctVX1tw$default (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult;Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult; public fun equals (Ljava/lang/Object;)Z - public final fun getMessage ()Ljava/lang/String; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getRequestedSchema ()Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getContent ()Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getModel ()Ljava/lang/String; + public final fun getRole ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public final fun getStopReason-6olV-UY ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CreateMessageResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema$Companion; - public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun component2 ()Ljava/util/List; - public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema; +public final class io/modelcontextprotocol/kotlin/sdk/types/CustomNotification : io/modelcontextprotocol/kotlin/sdk/types/ClientNotification, io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification;Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification; public fun equals (Ljava/lang/Object;)Z - public final fun getProperties ()Lkotlinx/serialization/json/JsonObject; - public final fun getRequired ()Ljava/util/List; - public final fun getType ()Ljava/lang/String; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CustomNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CustomNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CustomNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult : io/modelcontextprotocol/kotlin/sdk/ClientResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult; - public fun equals (Ljava/lang/Object;)Z - public final fun getAction ()Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; - public final fun getContent ()Lkotlinx/serialization/json/JsonObject; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; +public class io/modelcontextprotocol/kotlin/sdk/types/CustomRequest : io/modelcontextprotocol/kotlin/sdk/types/Request { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/CustomRequest$Companion; + public synthetic fun (ILio/modelcontextprotocol/kotlin/sdk/types/Method;Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Method;Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;)V + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public static final synthetic fun write$Self (Lio/modelcontextprotocol/kotlin/sdk/types/CustomRequest;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/CustomRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/CustomRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/CustomRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/CustomRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action : java/lang/Enum { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action$Companion; - public static final field accept Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; - public static final field cancel Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; - public static final field decline Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; - public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action; -} - -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Action$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/CustomRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateElicitationResult$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageRequest : io/modelcontextprotocol/kotlin/sdk/ServerRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$Companion; - public fun (Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext;Ljava/lang/Double;ILjava/util/List;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext;Ljava/lang/Double;ILjava/util/List;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/util/List; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; - public final fun component4 ()Ljava/lang/Double; - public final fun component5 ()I - public final fun component6 ()Ljava/util/List; - public final fun component7 ()Lkotlinx/serialization/json/JsonObject; - public final fun component8 ()Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences; - public final fun component9 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext;Ljava/lang/Double;ILjava/util/List;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest;Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext;Ljava/lang/Double;ILjava/util/List;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest; +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequest : io/modelcontextprotocol/kotlin/sdk/types/ServerRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest; public fun equals (Ljava/lang/Object;)Z - public final fun getIncludeContext ()Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; - public final fun getMaxTokens ()I - public final fun getMessages ()Ljava/util/List; - public final fun getMetadata ()Lkotlinx/serialization/json/JsonObject; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getModelPreferences ()Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences; - public final fun getStopSequences ()Ljava/util/List; - public final fun getSystemPrompt ()Ljava/lang/String; - public final fun getTemperature ()Ljava/lang/Double; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext : java/lang/Enum { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext$Companion; - public static final field allServers Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; - public static final field none Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; - public static final field thisServer Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; - public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext; -} - -public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageRequest$IncludeContext$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageResult : io/modelcontextprotocol/kotlin/sdk/ClientResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult$Companion; - public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/StopReason;Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/StopReason;Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$Companion; + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/StopReason; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/Role; - public final fun component4 ()Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal; - public final fun component5 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/StopReason;Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/StopReason;Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; + public final fun component3-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-EDEVuBg (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams; + public static synthetic fun copy-EDEVuBg$default (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams; public fun equals (Ljava/lang/Object;)Z - public final fun getContent ()Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal; - public final fun getModel ()Ljava/lang/String; - public final fun getRole ()Lio/modelcontextprotocol/kotlin/sdk/Role; - public final fun getStopReason ()Lio/modelcontextprotocol/kotlin/sdk/StopReason; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getMessage ()Ljava/lang/String; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun getRequestedSchema ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CreateMessageResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CreateMessageResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CustomMeta : io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CustomMeta$Companion; - public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema$Companion; + public fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlinx/serialization/json/JsonObject; + public final fun component2 ()Ljava/util/List; + public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; + public fun equals (Ljava/lang/Object;)Z + public final fun getProperties ()Lkotlinx/serialization/json/JsonObject; + public final fun getRequired ()Ljava/util/List; + public final fun getType ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CustomMeta$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CustomMeta$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CustomMeta; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CustomMeta;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CustomMeta$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public class io/modelcontextprotocol/kotlin/sdk/CustomRequest : io/modelcontextprotocol/kotlin/sdk/Request { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/CustomRequest$Companion; - public synthetic fun (ILio/modelcontextprotocol/kotlin/sdk/Method;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V - public fun (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public static final synthetic fun write$Self (Lio/modelcontextprotocol/kotlin/sdk/CustomRequest;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitResult : io/modelcontextprotocol/kotlin/sdk/types/ClientResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public final fun component2 ()Lkotlinx/serialization/json/JsonObject; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult; + public fun equals (Ljava/lang/Object;)Z + public final fun getAction ()Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public final fun getContent ()Lkotlinx/serialization/json/JsonObject; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/CustomRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/CustomRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ElicitResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/CustomRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/CustomRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/CustomRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action : java/lang/Enum { + public static final field Accept Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public static final field Cancel Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action$Companion; + public static final field Decline Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Action$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/EmbeddedResource : io/modelcontextprotocol/kotlin/sdk/PromptMessageContent { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource$Companion; - public static final field TYPE Ljava/lang/String; - public fun (Lio/modelcontextprotocol/kotlin/sdk/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ResourceContents; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource;Lio/modelcontextprotocol/kotlin/sdk/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource; +public final class io/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource : io/modelcontextprotocol/kotlin/sdk/types/ContentBlock { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource; public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun getResource ()Lio/modelcontextprotocol/kotlin/sdk/ResourceContents; - public fun getType ()Ljava/lang/String; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getResource ()Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/EmbeddedResource$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/EmbeddedResource;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/EmbeddedResource$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/EmptyRequestResult : io/modelcontextprotocol/kotlin/sdk/ClientResult, io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/EmptyResult : io/modelcontextprotocol/kotlin/sdk/types/ClientResult, io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult$Companion; public fun ()V public fun (Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult; + public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult; public fun equals (Ljava/lang/Object;)Z - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/EmptyRequestResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/EmptyResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/EmptyRequestResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/EmptyResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/EmptyRequestResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/EmptyResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ErrorCode { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Companion; - public abstract fun getCode ()I -} - -public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; +public final class io/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest;Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest; + public fun equals (Ljava/lang/Object;)Z + public final fun getArguments ()Ljava/util/Map; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public final fun getName ()Ljava/lang/String; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined : java/lang/Enum, io/modelcontextprotocol/kotlin/sdk/ErrorCode { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined$Companion; - public static final field ConnectionClosed Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static final field InternalError Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static final field InvalidParams Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static final field InvalidRequest Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static final field MethodNotFound Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static final field ParseError Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static final field RequestTimeout Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public fun getCode ()I - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; - public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Defined$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown : io/modelcontextprotocol/kotlin/sdk/ErrorCode { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$Companion; - public fun (I)V - public final fun component1 ()I - public final fun copy (I)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown;IILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown; +public final class io/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams$Companion; + public synthetic fun (Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/util/Map; + public final fun component3-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-EDEVuBg (Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams; + public static synthetic fun copy-EDEVuBg$default (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams;Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams; public fun equals (Ljava/lang/Object;)Z - public fun getCode ()I + public final fun getArguments ()Ljava/util/Map; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun getName ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ErrorCode$Unknown$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/GetPromptRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/GetPromptRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest$Companion; - public fun (Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/util/Map; +public final class io/modelcontextprotocol/kotlin/sdk/types/GetPromptResult : io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult$Companion; + public fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest;Ljava/lang/String;Ljava/util/Map;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest; + public final fun copy (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult;Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult; public fun equals (Ljava/lang/Object;)Z - public final fun getArguments ()Ljava/util/Map; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getName ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getDescription ()Ljava/lang/String; + public final fun getMessages ()Ljava/util/List; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/GetPromptRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/GetPromptResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/GetPromptRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/GetPromptRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/GetPromptResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/GetPromptResult : io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/GetPromptResult$Companion; - public fun (Ljava/lang/String;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getDescription ()Ljava/lang/String; - public final fun getMessages ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; +public final class io/modelcontextprotocol/kotlin/sdk/types/Icon { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme;)Lio/modelcontextprotocol/kotlin/sdk/types/Icon; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Icon;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Icon; + public fun equals (Ljava/lang/Object;)Z + public final fun getMimeType ()Ljava/lang/String; + public final fun getSizes ()Ljava/util/List; + public final fun getSrc ()Ljava/lang/String; + public final fun getTheme ()Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/GetPromptResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/GetPromptResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Icon$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Icon$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/GetPromptResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Icon; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/GetPromptResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Icon;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/GetPromptResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Icon$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/Icon$Theme : java/lang/Enum { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme$Companion; + public static final field Dark Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme; + public static final field Light Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/Icon$Theme; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/Icon$Theme$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ImageContent : io/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ImageContent$Companion; - public static final field TYPE Ljava/lang/String; - public fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/ImageContent : io/modelcontextprotocol/kotlin/sdk/types/MediaContent { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)Lio/modelcontextprotocol/kotlin/sdk/ImageContent; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ImageContent;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ImageContent; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component4 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent; public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; public final fun getData ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getMimeType ()Ljava/lang/String; - public fun getType ()Ljava/lang/String; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ImageContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ImageContent$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ImageContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ImageContent; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ImageContent;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ImageContent;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ImageContent$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ImageContent$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Implementation { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Implementation$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/Implementation { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Implementation$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/Implementation; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Implementation; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/util/List; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; public fun equals (Ljava/lang/Object;)Z + public final fun getIcons ()Ljava/util/List; public final fun getName ()Ljava/lang/String; + public final fun getTitle ()Ljava/lang/String; public final fun getVersion ()Ljava/lang/String; + public final fun getWebsiteUrl ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Implementation$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Implementation$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Implementation$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Implementation$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Implementation; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Implementation;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Implementation$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Implementation$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializeRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest$Companion; - public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; - public final fun component4 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest; +public final class io/modelcontextprotocol/kotlin/sdk/types/IncludeContext : java/lang/Enum { + public static final field AllServers Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext$Companion; + public static final field None Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; + public static final field ThisServer Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/IncludeContext; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/IncludeContext$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest;Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest; public fun equals (Ljava/lang/Object;)Z - public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; - public final fun getClientInfo ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getProtocolVersion ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/InitializeRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/InitializeRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/InitializeRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializeRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializeResult : io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/InitializeResult$Companion; - public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams$Companion; + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; - public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; - public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/InitializeResult; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/InitializeResult;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/InitializeResult; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; + public final fun component4-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-6R815Ik (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams; + public static synthetic fun copy-6R815Ik$default (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams; public fun equals (Ljava/lang/Object;)Z - public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; - public final fun getInstructions ()Ljava/lang/String; + public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; + public final fun getClientInfo ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; public final fun getProtocolVersion ()Ljava/lang/String; - public final fun getServerInfo ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/InitializeResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/InitializeResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/InitializeResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/InitializeResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializeResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification : io/modelcontextprotocol/kotlin/sdk/ClientNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Companion; - public fun ()V - public fun (Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification;Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeResult : io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult$Companion; + public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; + public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; + public final fun getInstructions ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getProtocolVersion ()Ljava/lang/String; + public final fun getServerInfo ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/InitializeResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializedNotification : io/modelcontextprotocol/kotlin/sdk/types/ClientNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification; public fun equals (Ljava/lang/Object;)Z - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/InitializedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/InitializedNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/InitializedNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCError : io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ErrorCode; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError; +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCError : io/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RPCError;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/RPCError; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RPCError;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RPCError;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError; public fun equals (Ljava/lang/Object;)Z - public final fun getCode ()Lio/modelcontextprotocol/kotlin/sdk/ErrorCode; - public final fun getData ()Lkotlinx/serialization/json/JsonObject; - public final fun getMessage ()Ljava/lang/String; + public final fun getError ()Lio/modelcontextprotocol/kotlin/sdk/types/RPCError; + public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public fun getJsonrpc ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/JSONRPCError$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCError$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCError;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCError$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCError$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage$Companion; + public abstract fun getJsonrpc ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCNotification : io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification$Companion; - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification : io/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification$Companion; + public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)V + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Lkotlinx/serialization/json/JsonElement; - public final fun component3 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification; + public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification; public fun equals (Ljava/lang/Object;)Z - public final fun getJsonrpc ()Ljava/lang/String; + public fun getJsonrpc ()Ljava/lang/String; public final fun getMethod ()Ljava/lang/String; public final fun getParams ()Lkotlinx/serialization/json/JsonElement; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/JSONRPCNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCRequest : io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest : io/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; public final fun component2 ()Ljava/lang/String; public final fun component3 ()Lkotlinx/serialization/json/JsonElement; - public final fun component4 ()Ljava/lang/String; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest;Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest; public fun equals (Ljava/lang/Object;)Z - public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; - public final fun getJsonrpc ()Ljava/lang/String; + public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public fun getJsonrpc ()Ljava/lang/String; public final fun getMethod ()Ljava/lang/String; public final fun getParams ()Lkotlinx/serialization/json/JsonElement; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/JSONRPCRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCResponse : io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/RequestResult;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/RequestResult;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/RequestResult;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse;Lio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/RequestResult;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse; - public final fun getError ()Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError; - public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; - public final fun getJsonrpc ()Ljava/lang/String; - public final fun getResult ()Lio/modelcontextprotocol/kotlin/sdk/RequestResult; +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse : io/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse; + public fun equals (Ljava/lang/Object;)Z + public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public fun getJsonrpc ()Ljava/lang/String; + public final fun getResult ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/JSONRPCResponse$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCResponse;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCResponse$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/JSONRPCResponse$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LibVersionKt { - public static final field LIB_VERSION Ljava/lang/String; +public final class io/modelcontextprotocol/kotlin/sdk/types/JsonRpcKt { + public static final field JSONRPC_VERSION Ljava/lang/String; + public static final fun RequestId (J)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public static final fun RequestId (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public static final fun fromJSON (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest;)Lio/modelcontextprotocol/kotlin/sdk/types/Request; + public static final fun toJSON (Lio/modelcontextprotocol/kotlin/sdk/types/Notification;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCNotification; + public static final fun toJSON (Lio/modelcontextprotocol/kotlin/sdk/types/Request;)Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCRequest; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/JsonUtilsKt { + public static final fun getEmptyJsonObject ()Lkotlinx/serialization/json/JsonObject; + public static final fun getMcpJson ()Lkotlinx/serialization/json/Json; + public static final fun toJson (Ljava/util/Map;)Ljava/util/Map; } -public final class io/modelcontextprotocol/kotlin/sdk/ListPromptsRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/PaginatedRequest { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest, io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest$Companion; public fun ()V - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest;Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest; public fun equals (Ljava/lang/Object;)Z - public fun getCursor ()Ljava/lang/String; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListPromptsRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListPromptsRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListPromptsRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListPromptsResult : io/modelcontextprotocol/kotlin/sdk/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListPromptsResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult : io/modelcontextprotocol/kotlin/sdk/types/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult$Companion; public fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult;Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun getNextCursor ()Ljava/lang/String; public final fun getPrompts ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListPromptsResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListPromptsResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListPromptsResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListPromptsResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListPromptsResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/PaginatedRequest { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest$Companion; - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest, io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest$Companion; + public fun ()V + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest;Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest; public fun equals (Ljava/lang/Object;)Z - public fun getCursor ()Ljava/lang/String; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult : io/modelcontextprotocol/kotlin/sdk/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult : io/modelcontextprotocol/kotlin/sdk/types/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult$Companion; public fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult;Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun getNextCursor ()Ljava/lang/String; public final fun getResourceTemplates ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourceTemplatesResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourcesRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/PaginatedRequest { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest, io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest$Companion; public fun ()V - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest;Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest; public fun equals (Ljava/lang/Object;)Z - public fun getCursor ()Ljava/lang/String; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListResourcesRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListResourcesRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourcesRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourcesResult : io/modelcontextprotocol/kotlin/sdk/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListResourcesResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult : io/modelcontextprotocol/kotlin/sdk/types/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult$Companion; public fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult;Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun getNextCursor ()Ljava/lang/String; public final fun getResources ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListResourcesResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListResourcesResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListResourcesResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListResourcesResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListResourcesResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListRootsRequest : io/modelcontextprotocol/kotlin/sdk/ServerRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListRootsRequest$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest : io/modelcontextprotocol/kotlin/sdk/types/ServerRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest;Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest; + public fun equals (Ljava/lang/Object;)Z + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListRootsRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListRootsRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListRootsRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListRootsRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListRootsRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListRootsResult : io/modelcontextprotocol/kotlin/sdk/ClientResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListRootsResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListRootsResult : io/modelcontextprotocol/kotlin/sdk/types/ClientResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult$Companion; public fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getRoots ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListRootsResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListRootsResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListRootsResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListRootsResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListRootsResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListRootsResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListRootsResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListToolsRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/PaginatedRequest { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest, io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest$Companion; public fun ()V - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest;Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest; public fun equals (Ljava/lang/Object;)Z - public fun getCursor ()Ljava/lang/String; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListToolsRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListToolsRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListToolsRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListToolsResult : io/modelcontextprotocol/kotlin/sdk/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ListToolsResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ListToolsResult : io/modelcontextprotocol/kotlin/sdk/types/PaginatedResult, io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult$Companion; public fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult;Ljava/util/List;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult; + public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun getNextCursor ()Ljava/lang/String; public final fun getTools ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ListToolsResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ListToolsResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ListToolsResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ListToolsResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ListToolsResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ListToolsResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ListToolsResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingLevel : java/lang/Enum { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel$Companion; - public static final field alert Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field critical Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field debug Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field emergency Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field error Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field info Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field notice Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static final field warning Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; +public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingLevel : java/lang/Enum { + public static final field Alert Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel$Companion; + public static final field Critical Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Debug Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Emergency Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Error Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Info Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Notice Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static final field Warning Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingLevel$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingLevel$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification;Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification : io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Lkotlinx/serialization/json/JsonElement; +public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams : io/modelcontextprotocol/kotlin/sdk/types/NotificationParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun component2 ()Lkotlinx/serialization/json/JsonElement; + public final fun component3 ()Ljava/lang/String; public final fun component4 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params;Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonElement;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; public fun equals (Ljava/lang/Object;)Z public final fun getData ()Lkotlinx/serialization/json/JsonElement; - public final fun getLevel ()Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; + public final fun getLevel ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; public final fun getLogger ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotificationParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest;Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest; - public fun equals (Ljava/lang/Object;)Z - public final fun getLevel ()Lio/modelcontextprotocol/kotlin/sdk/LoggingLevel; - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; +public final class io/modelcontextprotocol/kotlin/sdk/types/McpException : java/lang/Exception { + public fun (ILjava/lang/String;Lkotlinx/serialization/json/JsonElement;)V + public synthetic fun (ILjava/lang/String;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getCode ()I + public final fun getData ()Lkotlinx/serialization/json/JsonElement; + public fun getMessage ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest$$serializer; - public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/MediaContent : io/modelcontextprotocol/kotlin/sdk/types/ContentBlock { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent$Companion; } -public final class io/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification$SetLevelRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/MediaContent$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/McpError : java/lang/Exception { - public fun (ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getCode ()I - public final fun getData ()Lkotlinx/serialization/json/JsonObject; - public fun getMessage ()Ljava/lang/String; -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/Method { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Method$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/Method { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Method$Companion; public abstract fun getValue ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/Method$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Method$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Method$Custom : io/modelcontextprotocol/kotlin/sdk/Method { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Method$Custom$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/Method$Custom : io/modelcontextprotocol/kotlin/sdk/types/Method { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom$Companion; public fun (Ljava/lang/String;)V public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/Method$Custom; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Method$Custom;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Method$Custom; + public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom; public fun equals (Ljava/lang/Object;)Z public fun getValue ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Method$Custom$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Method$Custom$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Method$Custom$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Method$Custom; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Method$Custom;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Method$Custom;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Method$Custom$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Method$Custom$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Method$Defined : java/lang/Enum, io/modelcontextprotocol/kotlin/sdk/Method { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Method$Defined$Companion; - public static final field CompletionComplete Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ElicitationCreate Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field Initialize Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field LoggingSetLevel Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsCancelled Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsInitialized Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsMessage Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsProgress Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsPromptsListChanged Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsResourcesListChanged Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsResourcesUpdated Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsRootsListChanged Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field NotificationsToolsListChanged Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field Ping Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field PromptsGet Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field PromptsList Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ResourcesList Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ResourcesRead Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ResourcesSubscribe Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ResourcesTemplatesList Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ResourcesUnsubscribe Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field RootsList Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field SamplingCreateMessage Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ToolsCall Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static final field ToolsList Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; +public final class io/modelcontextprotocol/kotlin/sdk/types/Method$Defined : java/lang/Enum, io/modelcontextprotocol/kotlin/sdk/types/Method { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined$Companion; + public static final field CompletionComplete Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ElicitationCreate Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field Initialize Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field LoggingSetLevel Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsCancelled Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsInitialized Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsMessage Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsProgress Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsPromptsListChanged Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsResourcesListChanged Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsResourcesUpdated Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsRootsListChanged Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field NotificationsToolsListChanged Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field Ping Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field PromptsGet Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field PromptsList Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ResourcesList Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ResourcesRead Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ResourcesSubscribe Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ResourcesTemplatesList Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ResourcesUnsubscribe Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field RootsList Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field SamplingCreateMessage Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ToolsCall Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static final field ToolsList Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; public static fun getEntries ()Lkotlin/enums/EnumEntries; public fun getValue ()Ljava/lang/String; - public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; - public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/Method$Defined; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/Method$Defined; } -public final class io/modelcontextprotocol/kotlin/sdk/Method$Defined$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Method$Defined$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ModelHint { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ModelHint$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ModelHint { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint$Companion; public fun (Ljava/lang/String;)V public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/ModelHint; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ModelHint;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ModelHint; + public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint; public fun equals (Ljava/lang/Object;)Z public final fun getName ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ModelHint$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ModelHint$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ModelHint$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ModelHint; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ModelHint;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ModelHint;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ModelHint$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ModelHint$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ModelPreferences { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ModelPreferences { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences$Companion; + public fun ()V public fun (Ljava/util/List;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;)V + public synthetic fun (Ljava/util/List;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Ljava/lang/Double; + public final fun component3 ()Ljava/lang/Double; + public final fun component4 ()Ljava/lang/Double; + public final fun copy (Ljava/util/List;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;)Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences;Ljava/util/List;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences; + public fun equals (Ljava/lang/Object;)Z public final fun getCostPriority ()Ljava/lang/Double; public final fun getHints ()Ljava/util/List; public final fun getIntelligencePriority ()Ljava/lang/Double; public final fun getSpeedPriority ()Ljava/lang/Double; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ModelPreferences$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ModelPreferences$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ModelPreferences;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ModelPreferences;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ModelPreferences$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ModelPreferences$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/Notification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Notification$Companion; + public abstract fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public abstract fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/Notification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/Notification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Notification$Companion; - public abstract fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public abstract fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/NotificationParams : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams$Companion; } -public final class io/modelcontextprotocol/kotlin/sdk/Notification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/NotificationParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/NotificationParams : io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/NotificationParams$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest : io/modelcontextprotocol/kotlin/sdk/types/Request { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest$Companion; + public abstract fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; } -public final class io/modelcontextprotocol/kotlin/sdk/NotificationParams$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/PaginatedRequest : io/modelcontextprotocol/kotlin/sdk/Request, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PaginatedRequest$Companion; - public abstract fun getCursor ()Ljava/lang/String; - public abstract fun get_meta ()Lkotlinx/serialization/json/JsonObject; +public final class io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams$Companion; + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-D-90kyg (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public static synthetic fun copy-D-90kyg$default (Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getCursor ()Ljava/lang/String; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PaginatedRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PaginatedRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/PaginatedResult : io/modelcontextprotocol/kotlin/sdk/RequestResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PaginatedResult$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/PaginatedResult : io/modelcontextprotocol/kotlin/sdk/types/RequestResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PaginatedResult$Companion; public abstract fun getNextCursor ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/PaginatedResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PaginatedResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PingRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/ServerRequest { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PingRequest$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/PingRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest, io/modelcontextprotocol/kotlin/sdk/types/ServerRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest$Companion; public fun ()V - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest;Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest; + public fun equals (Ljava/lang/Object;)Z + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/PingRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PingRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/PingRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/PingRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/PingRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PingRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PingRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public class io/modelcontextprotocol/kotlin/sdk/Progress : io/modelcontextprotocol/kotlin/sdk/ProgressBase { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Progress$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/Progress { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Progress$Companion; public fun (DLjava/lang/Double;Ljava/lang/String;)V - public synthetic fun (IDLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V - public fun getMessage ()Ljava/lang/String; - public fun getProgress ()D - public fun getTotal ()Ljava/lang/Double; - public static final synthetic fun write$Self (Lio/modelcontextprotocol/kotlin/sdk/Progress;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V + public synthetic fun (DLjava/lang/Double;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getMessage ()Ljava/lang/String; + public final fun getProgress ()D + public final fun getTotal ()Ljava/lang/Double; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Progress$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Progress$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Progress$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Progress$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Progress; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Progress; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Progress;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Progress;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Progress$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ProgressBase { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ProgressBase$Companion; - public abstract fun getMessage ()Ljava/lang/String; - public abstract fun getProgress ()D - public abstract fun getTotal ()Ljava/lang/Double; -} - -public final class io/modelcontextprotocol/kotlin/sdk/ProgressBase$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Progress$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ProgressNotification : io/modelcontextprotocol/kotlin/sdk/ClientNotification, io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification;Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/ProgressNotification : io/modelcontextprotocol/kotlin/sdk/types/ClientNotification, io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification;Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ProgressNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ProgressNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ProgressNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ProgressNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams, io/modelcontextprotocol/kotlin/sdk/ProgressBase { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params$Companion; - public fun (DLio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (DLio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()D - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; +public final class io/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams : io/modelcontextprotocol/kotlin/sdk/types/NotificationParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;DLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;DLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public final fun component2 ()D public final fun component3 ()Ljava/lang/Double; public final fun component4 ()Ljava/lang/String; public final fun component5 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (DLio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params;DLio/modelcontextprotocol/kotlin/sdk/RequestId;Ljava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;DLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams;Lio/modelcontextprotocol/kotlin/sdk/types/RequestId;DLjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; public fun equals (Ljava/lang/Object;)Z - public fun getMessage ()Ljava/lang/String; - public fun getProgress ()D - public final fun getProgressToken ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; - public fun getTotal ()Ljava/lang/Double; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getMessage ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getProgress ()D + public final fun getProgressToken ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public final fun getTotal ()Ljava/lang/Double; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ProgressNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ProgressNotificationParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Prompt { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Prompt$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/Prompt : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Prompt$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/util/List; + public final fun component6 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/Prompt; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Prompt;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Prompt; + public fun equals (Ljava/lang/Object;)Z public final fun getArguments ()Ljava/util/List; public final fun getDescription ()Ljava/lang/String; + public final fun getIcons ()Ljava/util/List; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getName ()Ljava/lang/String; + public final fun getTitle ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Prompt$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Prompt$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Prompt$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Prompt$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Prompt; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Prompt; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Prompt;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Prompt;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Prompt$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Prompt$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptArgument { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptArgument$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptArgument { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; public final fun component3 ()Ljava/lang/Boolean; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/PromptArgument; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/PromptArgument;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/PromptArgument; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument; public fun equals (Ljava/lang/Object;)Z public final fun getDescription ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getRequired ()Ljava/lang/Boolean; + public final fun getTitle ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/PromptArgument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PromptArgument$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/PromptArgument$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/PromptArgument; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/PromptArgument;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/PromptArgument;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptArgument$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptArgument$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification : io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification$Companion; public fun ()V - public fun (Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptListChangedNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params$Companion; - public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params; +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/ContentBlock;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentBlock; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/ContentBlock;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage;Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/ContentBlock;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage; public fun equals (Ljava/lang/Object;)Z - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getContent ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentBlock; + public final fun getRole ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/PromptMessage$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/PromptMessage;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptListChangedNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptMessage$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptMessage$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContent;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Role; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContent; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContent;)Lio/modelcontextprotocol/kotlin/sdk/PromptMessage; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/PromptMessage;Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContent;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/PromptMessage; +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptReference : io/modelcontextprotocol/kotlin/sdk/types/Reference { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference; public fun equals (Ljava/lang/Object;)Z - public final fun getContent ()Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContent; - public final fun getRole ()Lio/modelcontextprotocol/kotlin/sdk/Role; + public final fun getName ()Ljava/lang/String; + public final fun getTitle ()Ljava/lang/String; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/PromptMessage$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PromptMessage$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/PromptReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/PromptMessage; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/PromptMessage;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/PromptReference;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptMessage$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/PromptReference$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/PromptMessageContent { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContent$Companion; - public abstract fun getType ()Ljava/lang/String; +public final class io/modelcontextprotocol/kotlin/sdk/types/RPCError { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RPCError$Companion; + public fun (ILjava/lang/String;Lkotlinx/serialization/json/JsonElement;)V + public synthetic fun (ILjava/lang/String;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()I + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lkotlinx/serialization/json/JsonElement; + public final fun copy (ILjava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lio/modelcontextprotocol/kotlin/sdk/types/RPCError; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/RPCError;ILjava/lang/String;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/RPCError; + public fun equals (Ljava/lang/Object;)Z + public final fun getCode ()I + public final fun getData ()Lkotlinx/serialization/json/JsonElement; + public final fun getMessage ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptMessageContent$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/RPCError$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/RPCError$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/RPCError; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/RPCError;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal : io/modelcontextprotocol/kotlin/sdk/PromptMessageContent { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/RPCError$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; +public final class io/modelcontextprotocol/kotlin/sdk/types/RPCError$ErrorCode { + public static final field CONNECTION_CLOSED I + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/RPCError$ErrorCode; + public static final field INTERNAL_ERROR I + public static final field INVALID_PARAMS I + public static final field INVALID_REQUEST I + public static final field METHOD_NOT_FOUND I + public static final field PARSE_ERROR I + public static final field REQUEST_TIMEOUT I } -public final class io/modelcontextprotocol/kotlin/sdk/PromptReference : io/modelcontextprotocol/kotlin/sdk/Reference { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/PromptReference$Companion; - public static final field TYPE Ljava/lang/String; - public fun (Ljava/lang/String;)V - public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/PromptReference; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/PromptReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/PromptReference; +public final class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest;Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest; public fun equals (Ljava/lang/Object;)Z - public final fun getName ()Ljava/lang/String; - public fun getType ()Ljava/lang/String; + public final fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public final fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/PromptReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/PromptReference$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/PromptReference; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/PromptReference;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/PromptReference$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ReadResourceRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest$Companion; - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams$Companion; public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest; + public final fun component2-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-D-90kyg (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams; + public static synthetic fun copy-D-90kyg$default (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; public final fun getUri ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ReadResourceRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ReadResourceRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ReadResourceRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ReadResourceResult : io/modelcontextprotocol/kotlin/sdk/ServerResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ReadResourceResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult : io/modelcontextprotocol/kotlin/sdk/types/ServerResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult$Companion; public fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/util/List; + public final fun component2 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult; + public fun equals (Ljava/lang/Object;)Z public final fun getContents ()Ljava/util/List; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ReadResourceResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ReadResourceResult$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ReadResourceResult; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ReadResourceResult;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ReadResourceResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/Reference { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Reference$Companion; + public abstract fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/Reference$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/Reference { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Reference$Companion; - public abstract fun getType ()Ljava/lang/String; +public final class io/modelcontextprotocol/kotlin/sdk/types/ReferenceType : java/lang/Enum { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType$Companion; + public static final field Prompt Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; + public static final field ResourceTemplate Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; } -public final class io/modelcontextprotocol/kotlin/sdk/Reference$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ReferenceType$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/Request { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Request$Companion; - public abstract fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/Request { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Request$Companion; + public abstract fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public abstract fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; } -public final class io/modelcontextprotocol/kotlin/sdk/Request$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Request$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/RequestId { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/RequestId$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/RequestId { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$Companion; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestId$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestId$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestId$NumberId : io/modelcontextprotocol/kotlin/sdk/RequestId { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId$Companion; - public fun (J)V - public final fun component1 ()J - public final fun copy (J)Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId;JILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId; +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestId$NumberId : io/modelcontextprotocol/kotlin/sdk/types/RequestId { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$NumberId$Companion; + public static final synthetic fun box-impl (J)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$NumberId; + public static fun constructor-impl (J)J public fun equals (Ljava/lang/Object;)Z + public static fun equals-impl (JLjava/lang/Object;)Z + public static final fun equals-impl0 (JJ)Z public final fun getValue ()J public fun hashCode ()I + public static fun hashCode-impl (J)I public fun toString ()Ljava/lang/String; + public static fun toString-impl (J)Ljava/lang/String; + public final synthetic fun unbox-impl ()J } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/RequestId$NumberId$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/RequestId$NumberId$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$NumberId$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun deserialize-Nt6Vbyc (Lkotlinx/serialization/encoding/Decoder;)J public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/RequestId$NumberId;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public final fun serialize-T5IKJsA (Lkotlinx/serialization/encoding/Encoder;J)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestId$NumberId$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestId$NumberId$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestId$StringId : io/modelcontextprotocol/kotlin/sdk/RequestId { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId$Companion; - public fun (Ljava/lang/String;)V - public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId; +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestId$StringId : io/modelcontextprotocol/kotlin/sdk/types/RequestId { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$StringId$Companion; + public static final synthetic fun box-impl (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$StringId; + public static fun constructor-impl (Ljava/lang/String;)Ljava/lang/String; public fun equals (Ljava/lang/Object;)Z + public static fun equals-impl (Ljava/lang/String;Ljava/lang/Object;)Z + public static final fun equals-impl0 (Ljava/lang/String;Ljava/lang/String;)Z public final fun getValue ()Ljava/lang/String; public fun hashCode ()I + public static fun hashCode-impl (Ljava/lang/String;)I public fun toString ()Ljava/lang/String; + public static fun toString-impl (Ljava/lang/String;)Ljava/lang/String; + public final synthetic fun unbox-impl ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/RequestId$StringId$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/RequestId$StringId$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/RequestId$StringId$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun deserialize-QNUQp7g (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/RequestId$StringId;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public final fun serialize-i2Jt6-s (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestId$StringId$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestId$StringId$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestIdSerializer : kotlinx/serialization/KSerializer { - public fun ()V - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/RequestId; +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RequestMeta$Companion; + public static final synthetic fun box-impl (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/RequestMeta; + public static fun constructor-impl (Lkotlinx/serialization/json/JsonObject;)Lkotlinx/serialization/json/JsonObject; + public fun equals (Ljava/lang/Object;)Z + public static fun equals-impl (Lkotlinx/serialization/json/JsonObject;Ljava/lang/Object;)Z + public static final fun equals-impl0 (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Z + public static final fun get-impl (Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;)Lkotlinx/serialization/json/JsonElement; + public final fun getJson ()Lkotlinx/serialization/json/JsonObject; + public static final fun getProgressToken-impl (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/RequestId; + public fun hashCode ()I + public static fun hashCode-impl (Lkotlinx/serialization/json/JsonObject;)I + public fun toString ()Ljava/lang/String; + public static fun toString-impl (Lkotlinx/serialization/json/JsonObject;)Ljava/lang/String; + public final synthetic fun unbox-impl ()Lkotlinx/serialization/json/JsonObject; +} + +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/RequestMeta$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/RequestMeta$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/RequestId;)V + public final fun deserialize-6WR2xV8 (Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonObject; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public final fun serialize-qqtNtwg (Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonObject;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestMeta$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams$Companion; + public abstract fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/RequestResult : io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/RequestResult$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestParams$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/RequestResult : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RequestResult$Companion; } -public final class io/modelcontextprotocol/kotlin/sdk/RequestResult$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/RequestResult$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Resource { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Resource$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/Resource : io/modelcontextprotocol/kotlin/sdk/types/ResourceLike { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Resource$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; public final fun component3 ()Ljava/lang/String; public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Ljava/lang/String; - public final fun component6 ()Ljava/lang/Long; - public final fun component7 ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)Lio/modelcontextprotocol/kotlin/sdk/Resource; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Resource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Resource; + public final fun component5 ()Ljava/lang/Long; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component8 ()Ljava/util/List; + public final fun component9 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/Resource; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Resource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Resource; public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; public final fun getDescription ()Ljava/lang/String; + public final fun getIcons ()Ljava/util/List; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getMimeType ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getSize ()Ljava/lang/Long; @@ -2245,106 +3210,134 @@ public final class io/modelcontextprotocol/kotlin/sdk/Resource { public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Resource$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Resource$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Resource$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Resource$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Resource; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Resource; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Resource;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Resource;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Resource$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Resource$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ResourceContents { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceContents$Companion; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ResourceContents : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceContents$Companion; public abstract fun getMimeType ()Ljava/lang/String; public abstract fun getUri ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceContents$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceContents$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Companion; - public fun ()V - public fun (Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ResourceLike : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLike$Companion; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceLike$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceLink : io/modelcontextprotocol/kotlin/sdk/types/ContentBlock, io/modelcontextprotocol/kotlin/sdk/types/ResourceLike { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/Long; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/util/List; + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component9 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun getDescription ()Ljava/lang/String; + public final fun getIcons ()Ljava/util/List; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getMimeType ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public final fun getSize ()Ljava/lang/Long; + public final fun getTitle ()Ljava/lang/String; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; + public final fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ResourceLink$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceLink;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceLink$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification : io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification; public fun equals (Ljava/lang/Object;)Z - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceListChangedNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; public final fun component3 ()Ljava/lang/String; public final fun component4 ()Ljava/lang/String; public final fun component5 ()Ljava/lang/String; - public final fun component6 ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate; + public final fun component6 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component7 ()Ljava/util/List; + public final fun component8 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate; public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; public final fun getDescription ()Ljava/lang/String; + public final fun getIcons ()Ljava/util/List; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getMimeType ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getTitle ()Ljava/lang/String; @@ -2353,313 +3346,292 @@ public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate { public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceTemplate$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference : io/modelcontextprotocol/kotlin/sdk/Reference { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$Companion; - public static final field TYPE Ljava/lang/String; +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference : io/modelcontextprotocol/kotlin/sdk/types/Reference { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference$Companion; public fun (Ljava/lang/String;)V public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference; + public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference; public fun equals (Ljava/lang/Object;)Z - public fun getType ()Ljava/lang/String; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ReferenceType; public final fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceTemplateReference$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification;Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification : io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams : io/modelcontextprotocol/kotlin/sdk/types/NotificationParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams$Companion; public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params; + public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getUri ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotificationParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Role : java/lang/Enum { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Role$Companion; - public static final field assistant Lio/modelcontextprotocol/kotlin/sdk/Role; - public static final field user Lio/modelcontextprotocol/kotlin/sdk/Role; +public final class io/modelcontextprotocol/kotlin/sdk/types/Role : java/lang/Enum { + public static final field Assistant Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Role$Companion; + public static final field User Lio/modelcontextprotocol/kotlin/sdk/types/Role; public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/Role; - public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/Role; + public static fun valueOf (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public static fun values ()[Lio/modelcontextprotocol/kotlin/sdk/types/Role; } -public final class io/modelcontextprotocol/kotlin/sdk/Role$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Role$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Root { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Root$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/Root : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Root$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/Root; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Root;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Root; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/Root; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Root;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Root; public fun equals (Ljava/lang/Object;)Z + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; public final fun getName ()Ljava/lang/String; public final fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Root$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Root$$serializer; - public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Root; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Root;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; -} - -public final class io/modelcontextprotocol/kotlin/sdk/Root$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public final class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification : io/modelcontextprotocol/kotlin/sdk/ClientNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Companion; - public fun ()V - public fun (Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification; - public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final synthetic class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Root$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Root$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Root; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Root;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Root$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification : io/modelcontextprotocol/kotlin/sdk/types/ClientNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification; public fun equals (Ljava/lang/Object;)Z - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/RootsListChangedNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/SamplingMessage { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Role; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;)Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage;Lio/modelcontextprotocol/kotlin/sdk/Role;Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage; +public final class io/modelcontextprotocol/kotlin/sdk/types/SamplingMessage { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;)Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage;Lio/modelcontextprotocol/kotlin/sdk/types/Role;Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage; public fun equals (Ljava/lang/Object;)Z - public final fun getContent ()Lio/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal; - public final fun getRole ()Lio/modelcontextprotocol/kotlin/sdk/Role; + public final fun getContent ()Lio/modelcontextprotocol/kotlin/sdk/types/MediaContent; + public final fun getRole ()Lio/modelcontextprotocol/kotlin/sdk/types/Role; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/SamplingMessage$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/SamplingMessage$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/SamplingMessage;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessage;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/SamplingMessage$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/SamplingMessage$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun component3 ()Lkotlinx/serialization/json/JsonObject; - public final fun component4 ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts; - public final fun component5 ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources; - public final fun component6 ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools; - public final fun copy (Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; + public final fun component3 ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; + public final fun component4 ()Lkotlinx/serialization/json/JsonObject; + public final fun component5 ()Lkotlinx/serialization/json/JsonObject; + public final fun component6 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; public fun equals (Ljava/lang/Object;)Z + public final fun getCompletions ()Lkotlinx/serialization/json/JsonObject; public final fun getExperimental ()Lkotlinx/serialization/json/JsonObject; public final fun getLogging ()Lkotlinx/serialization/json/JsonObject; - public final fun getPrompts ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts; - public final fun getResources ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources; - public final fun getSampling ()Lkotlinx/serialization/json/JsonObject; - public final fun getTools ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools; + public final fun getPrompts ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; + public final fun getResources ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; + public final fun getTools ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Companion { + public final fun getCompletions ()Lkotlinx/serialization/json/JsonObject; + public final fun getLogging ()Lkotlinx/serialization/json/JsonObject; public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts$Companion; + public fun ()V public fun (Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/Boolean; - public final fun copy (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts; + public final fun copy (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; public fun equals (Ljava/lang/Object;)Z public final fun getListChanged ()Ljava/lang/Boolean; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Prompts$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Prompts$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources$Companion; + public fun ()V public fun (Ljava/lang/Boolean;Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/Boolean; public final fun component2 ()Ljava/lang/Boolean; - public final fun copy (Ljava/lang/Boolean;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources; + public final fun copy (Ljava/lang/Boolean;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; public fun equals (Ljava/lang/Object;)Z public final fun getListChanged ()Ljava/lang/Boolean; public final fun getSubscribe ()Ljava/lang/Boolean; @@ -2667,703 +3639,538 @@ public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resourc public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Resources$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Resources$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools$Companion; + public fun ()V public fun (Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/Boolean; - public final fun copy (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools; + public final fun copy (Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; public fun equals (Ljava/lang/Object;)Z public final fun getListChanged ()Ljava/lang/Boolean; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools$$serializer; - public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; -} - -public final class io/modelcontextprotocol/kotlin/sdk/ServerCapabilities$Tools$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ServerNotification : io/modelcontextprotocol/kotlin/sdk/Notification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ServerNotification$Companion; -} - -public final class io/modelcontextprotocol/kotlin/sdk/ServerNotification$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ServerRequest : io/modelcontextprotocol/kotlin/sdk/Request { -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/ServerResult : io/modelcontextprotocol/kotlin/sdk/RequestResult { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ServerResult$Companion; -} - -public final class io/modelcontextprotocol/kotlin/sdk/ServerResult$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/StopReason { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/StopReason$Companion; - public abstract fun getValue ()Ljava/lang/String; -} - -public final class io/modelcontextprotocol/kotlin/sdk/StopReason$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - -public final class io/modelcontextprotocol/kotlin/sdk/StopReason$EndTurn : io/modelcontextprotocol/kotlin/sdk/StopReason { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/StopReason$EndTurn; - public fun equals (Ljava/lang/Object;)Z - public fun getValue ()Ljava/lang/String; - public fun hashCode ()I - public final fun serializer ()Lkotlinx/serialization/KSerializer; - public fun toString ()Ljava/lang/String; -} - -public final class io/modelcontextprotocol/kotlin/sdk/StopReason$MaxTokens : io/modelcontextprotocol/kotlin/sdk/StopReason { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/StopReason$MaxTokens; - public fun equals (Ljava/lang/Object;)Z - public fun getValue ()Ljava/lang/String; - public fun hashCode ()I - public final fun serializer ()Lkotlinx/serialization/KSerializer; - public fun toString ()Ljava/lang/String; -} - -public final class io/modelcontextprotocol/kotlin/sdk/StopReason$Other : io/modelcontextprotocol/kotlin/sdk/StopReason { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/StopReason$Other$Companion; - public static final synthetic fun box-impl (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/StopReason$Other; - public static fun constructor-impl (Ljava/lang/String;)Ljava/lang/String; - public fun equals (Ljava/lang/Object;)Z - public static fun equals-impl (Ljava/lang/String;Ljava/lang/Object;)Z - public static final fun equals-impl0 (Ljava/lang/String;Ljava/lang/String;)Z - public fun getValue ()Ljava/lang/String; - public fun hashCode ()I - public static fun hashCode-impl (Ljava/lang/String;)I - public fun toString ()Ljava/lang/String; - public static fun toString-impl (Ljava/lang/String;)Ljava/lang/String; - public final synthetic fun unbox-impl ()Ljava/lang/String; -} - -public final synthetic class io/modelcontextprotocol/kotlin/sdk/StopReason$Other$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/StopReason$Other$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public final fun deserialize-vvjsQ-s (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public final fun serialize-AuY3eX0 (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/StopReason$Other$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities$Tools$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/StopReason$StopSequence : io/modelcontextprotocol/kotlin/sdk/StopReason { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/StopReason$StopSequence; - public fun equals (Ljava/lang/Object;)Z - public fun getValue ()Ljava/lang/String; - public fun hashCode ()I +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ServerNotification : io/modelcontextprotocol/kotlin/sdk/types/Notification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerNotification$Companion; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; - public fun toString ()Ljava/lang/String; } -public final class io/modelcontextprotocol/kotlin/sdk/SubscribeRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest$Companion; - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ServerRequest : io/modelcontextprotocol/kotlin/sdk/types/Request { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerRequest$Companion; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerRequest$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ServerResult : io/modelcontextprotocol/kotlin/sdk/types/RequestResult { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ServerResult$Companion; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/ServerResult$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest;Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun getUri ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/SubscribeRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/SubscribeRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/SubscribeRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/TextContent : io/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/TextContent$Companion; - public static final field TYPE Ljava/lang/String; - public fun ()V - public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)V - public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;)Lio/modelcontextprotocol/kotlin/sdk/TextContent; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/TextContent;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Annotations;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/TextContent; +public final class io/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams$Companion; + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public final fun component2-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-D-90kyg (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams; + public static synthetic fun copy-D-90kyg$default (Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams;Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams; public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/Annotations; - public final fun getText ()Ljava/lang/String; - public fun getType ()Ljava/lang/String; + public final fun getLevel ()Lio/modelcontextprotocol/kotlin/sdk/types/LoggingLevel; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/TextContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/TextContent$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/TextContent; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/TextContent;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/TextContent$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/SetLevelRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/TextResourceContents : io/modelcontextprotocol/kotlin/sdk/ResourceContents { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents; +public final class io/modelcontextprotocol/kotlin/sdk/types/StopReason { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/StopReason$Companion; + public static final synthetic fun box-impl (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/types/StopReason; + public static fun constructor-impl (Ljava/lang/String;)Ljava/lang/String; public fun equals (Ljava/lang/Object;)Z - public fun getMimeType ()Ljava/lang/String; - public final fun getText ()Ljava/lang/String; - public fun getUri ()Ljava/lang/String; + public static fun equals-impl (Ljava/lang/String;Ljava/lang/Object;)Z + public static final fun equals-impl0 (Ljava/lang/String;Ljava/lang/String;)Z + public final fun getValue ()Ljava/lang/String; public fun hashCode ()I + public static fun hashCode-impl (Ljava/lang/String;)I public fun toString ()Ljava/lang/String; + public static fun toString-impl (Ljava/lang/String;)Ljava/lang/String; + public final synthetic fun unbox-impl ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/TextResourceContents$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/StopReason$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/StopReason$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun deserialize-_6z6jHk (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/TextResourceContents;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public final fun serialize-OgWWgxw (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/TextResourceContents$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/StopReason$Companion { + public final fun getEndTurn--MeDoko ()Ljava/lang/String; + public final fun getMaxTokens--MeDoko ()Ljava/lang/String; + public final fun getStopSequence--MeDoko ()Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Tool : io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Tool$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Ljava/lang/String; - public final fun component4 ()Lio/modelcontextprotocol/kotlin/sdk/Tool$Input; - public final fun component5 ()Lio/modelcontextprotocol/kotlin/sdk/Tool$Output; - public final fun component6 ()Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations; - public final fun component7 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/Tool; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Tool;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Tool; - public fun equals (Ljava/lang/Object;)Z - public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations; - public final fun getDescription ()Ljava/lang/String; - public final fun getInputSchema ()Lio/modelcontextprotocol/kotlin/sdk/Tool$Input; - public final fun getName ()Ljava/lang/String; - public final fun getOutputSchema ()Lio/modelcontextprotocol/kotlin/sdk/Tool$Output; - public final fun getTitle ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; +public final class io/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest; + public fun equals (Ljava/lang/Object;)Z + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Tool$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Tool$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Tool; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Tool;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Tool$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Tool$Input { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Tool$Input$Companion; - public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun component2 ()Ljava/util/List; - public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/Tool$Input; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Tool$Input; +public final class io/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams$Companion; + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-D-90kyg (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams; + public static synthetic fun copy-D-90kyg$default (Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams; public fun equals (Ljava/lang/Object;)Z - public final fun getProperties ()Lkotlinx/serialization/json/JsonObject; - public final fun getRequired ()Ljava/util/List; - public final fun getType ()Ljava/lang/String; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Tool$Input$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Tool$Input$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Tool$Input; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Tool$Input$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/SubscribeRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Tool$Output { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Tool$Output$Companion; - public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun component2 ()Ljava/util/List; - public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/Tool$Output; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/Tool$Output; +public final class io/modelcontextprotocol/kotlin/sdk/types/TextContent : io/modelcontextprotocol/kotlin/sdk/types/MediaContent { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/TextContent$Companion; + public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/TextContent; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/TextContent;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/Annotations;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/TextContent; public fun equals (Ljava/lang/Object;)Z - public final fun getProperties ()Lkotlinx/serialization/json/JsonObject; - public final fun getRequired ()Ljava/util/List; - public final fun getType ()Ljava/lang/String; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/Annotations; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getText ()Ljava/lang/String; + public fun getType ()Lio/modelcontextprotocol/kotlin/sdk/types/ContentTypes; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/Tool$Output$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/Tool$Output$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/TextContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/TextContent$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/Tool$Output; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/TextContent; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/TextContent;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/Tool$Output$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/TextContent$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ToolAnnotations { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations$Companion; - public fun (Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/TextResourceContents : io/modelcontextprotocol/kotlin/sdk/types/ResourceContents { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/lang/Boolean; - public final fun component3 ()Ljava/lang/Boolean; - public final fun component4 ()Ljava/lang/Boolean; - public final fun component5 ()Ljava/lang/Boolean; - public final fun copy (Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents; public fun equals (Ljava/lang/Object;)Z - public final fun getDestructiveHint ()Ljava/lang/Boolean; - public final fun getIdempotentHint ()Ljava/lang/Boolean; - public final fun getOpenWorldHint ()Ljava/lang/Boolean; - public final fun getReadOnlyHint ()Ljava/lang/Boolean; - public final fun getTitle ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public fun getMimeType ()Ljava/lang/String; + public final fun getText ()Ljava/lang/String; + public fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ToolAnnotations$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/TextResourceContents$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/TextResourceContents;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ToolAnnotations$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/TextResourceContents$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Companion; - public fun ()V - public fun (Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params;)Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/Tool : io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/Tool$Companion; + public fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations; + public final fun component7 ()Ljava/util/List; + public final fun component8 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/Tool; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/Tool;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/util/List;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/Tool; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params; + public final fun getAnnotations ()Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations; + public final fun getDescription ()Ljava/lang/String; + public final fun getIcons ()Ljava/util/List; + public final fun getInputSchema ()Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public final fun getName ()Ljava/lang/String; + public final fun getOutputSchema ()Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public final fun getTitle ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/Tool$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/Tool$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/Tool; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/Tool;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/Tool$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params : io/modelcontextprotocol/kotlin/sdk/NotificationParams { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params$Companion; +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations$Companion; public fun ()V - public fun (Lkotlinx/serialization/json/JsonObject;)V - public synthetic fun (Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params; + public fun (Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/Boolean; + public final fun component3 ()Ljava/lang/Boolean; + public final fun component4 ()Ljava/lang/Boolean; + public final fun component5 ()Ljava/lang/Boolean; + public final fun copy (Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations; public fun equals (Ljava/lang/Object;)Z - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; + public final fun getDestructiveHint ()Ljava/lang/Boolean; + public final fun getIdempotentHint ()Ljava/lang/Boolean; + public final fun getOpenWorldHint ()Ljava/lang/Boolean; + public final fun getReadOnlyHint ()Ljava/lang/Boolean; + public final fun getTitle ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/ToolListChangedNotification$Params$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/TypesKt { - public static final field JSONRPC_VERSION Ljava/lang/String; - public static final field LATEST_PROTOCOL_VERSION Ljava/lang/String; - public static final fun getSUPPORTED_PROTOCOL_VERSIONS ()[Ljava/lang/String; - public static final fun toJSON (Lio/modelcontextprotocol/kotlin/sdk/Notification;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCNotification; - public static final fun toJSON (Lio/modelcontextprotocol/kotlin/sdk/Request;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCRequest; -} - -public final class io/modelcontextprotocol/kotlin/sdk/Types_utilKt { - public static final fun error (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult; - public static synthetic fun error$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult; - public static final fun getEmptyJsonObject ()Lkotlinx/serialization/json/JsonObject; - public static final fun ok (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult; - public static synthetic fun ok$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult; -} - -public final class io/modelcontextprotocol/kotlin/sdk/UnknownContent : io/modelcontextprotocol/kotlin/sdk/PromptMessageContentMultimodal { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownContent$Companion; - public fun (Ljava/lang/String;)V - public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/UnknownContent; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownContent;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownContent; +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification : io/modelcontextprotocol/kotlin/sdk/types/ServerNotification { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification$Companion; + public fun ()V + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification;Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification; public fun equals (Ljava/lang/Object;)Z - public fun getType ()Ljava/lang/String; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/BaseNotificationParams; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/NotificationParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownContent$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownContent$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownContent; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownContent;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownContent$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolListChangedNotification$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification : io/modelcontextprotocol/kotlin/sdk/ClientNotification, io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/ServerNotification, io/modelcontextprotocol/kotlin/sdk/ServerRequest { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$Companion; - public fun (Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/NotificationParams;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/NotificationParams;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/NotificationParams;)Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification;Lio/modelcontextprotocol/kotlin/sdk/Method;Lio/modelcontextprotocol/kotlin/sdk/NotificationParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification; +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolSchema { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema$Companion; + public fun ()V + public fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)V + public synthetic fun (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlinx/serialization/json/JsonObject; + public final fun component2 ()Ljava/util/List; + public final fun copy (Lkotlinx/serialization/json/JsonObject;Ljava/util/List;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Lkotlinx/serialization/json/JsonObject;Ljava/util/List;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; - public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/NotificationParams; + public final fun getProperties ()Lkotlinx/serialization/json/JsonObject; + public final fun getRequired ()Ljava/util/List; + public final fun getType ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/ToolSchema$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownMethodRequestOrNotification$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolSchema$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownReference : io/modelcontextprotocol/kotlin/sdk/Reference { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownReference$Companion; - public fun (Ljava/lang/String;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/ToolsKt { + public static final fun error (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static synthetic fun error$default (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static final fun success (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; + public static synthetic fun success$default (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult; +} + +public final class io/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents : io/modelcontextprotocol/kotlin/sdk/types/ResourceContents { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/UnknownReference; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownReference; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Lkotlinx/serialization/json/JsonObject; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents; public fun equals (Ljava/lang/Object;)Z - public fun getType ()Ljava/lang/String; + public fun getMeta ()Lkotlinx/serialization/json/JsonObject; + public fun getMimeType ()Ljava/lang/String; + public fun getUri ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownReference$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownReference; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownReference;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownReference$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownResourceContents : io/modelcontextprotocol/kotlin/sdk/ResourceContents { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents$Companion; - public fun (Ljava/lang/String;Ljava/lang/String;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/lang/String; - public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents; +public final class io/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest : io/modelcontextprotocol/kotlin/sdk/types/ClientRequest { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest$Companion; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest;Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest; public fun equals (Ljava/lang/Object;)Z - public fun getMimeType ()Ljava/lang/String; - public fun getUri ()Ljava/lang/String; + public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/types/Method; + public synthetic fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/RequestParams; + public fun getParams ()Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnknownResourceContents$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnknownResourceContents;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnknownResourceContents$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest : io/modelcontextprotocol/kotlin/sdk/ClientRequest, io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest$Companion; - public fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V +public final class io/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams : io/modelcontextprotocol/kotlin/sdk/types/RequestParams { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams$Companion; public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lkotlinx/serialization/json/JsonObject; - public final fun copy (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest; + public final fun component2-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; + public final fun copy-D-90kyg (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams; + public static synthetic fun copy-D-90kyg$default (Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams; public fun equals (Ljava/lang/Object;)Z - public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; + public fun getMeta-VI-3G7E ()Lkotlinx/serialization/json/JsonObject; public final fun getUri ()Ljava/lang/String; - public fun get_meta ()Lkotlinx/serialization/json/JsonObject; public fun hashCode ()I public fun toString ()Ljava/lang/String; } -public final synthetic class io/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest$$serializer; +public final synthetic class io/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams$$serializer; public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest;)V + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/UnsubscribeRequest$Companion { +public final class io/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequestParams$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class io/modelcontextprotocol/kotlin/sdk/WithMeta { - public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/WithMeta$Companion; - public abstract fun get_meta ()Lkotlinx/serialization/json/JsonObject; +public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/WithMeta { + public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/types/WithMeta$Companion; + public abstract fun getMeta ()Lkotlinx/serialization/json/JsonObject; } -public final class io/modelcontextprotocol/kotlin/sdk/WithMeta$Companion { - public final fun getEmpty ()Lio/modelcontextprotocol/kotlin/sdk/CustomMeta; +public final class io/modelcontextprotocol/kotlin/sdk/types/WithMeta$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class io/modelcontextprotocol/kotlin/sdk/internal/Utils_jvmKt { - public static final fun getIODispatcher ()Lkotlinx/coroutines/CoroutineDispatcher; -} - -public abstract class io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport : io/modelcontextprotocol/kotlin/sdk/shared/Transport { - public fun ()V - protected final fun get_onClose ()Lkotlin/jvm/functions/Function0; - protected final fun get_onError ()Lkotlin/jvm/functions/Function1; - protected final fun get_onMessage ()Lkotlin/jvm/functions/Function2; - public fun onClose (Lkotlin/jvm/functions/Function0;)V - public fun onError (Lkotlin/jvm/functions/Function1;)V - public fun onMessage (Lkotlin/jvm/functions/Function2;)V -} - -public abstract class io/modelcontextprotocol/kotlin/sdk/shared/Protocol { - public fun (Lio/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions;)V - protected abstract fun assertCapabilityForMethod (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - protected abstract fun assertNotificationCapability (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public abstract fun assertRequestHandlerCapability (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public final fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun connect (Lio/modelcontextprotocol/kotlin/sdk/shared/Transport;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun getFallbackNotificationHandler ()Lkotlin/jvm/functions/Function2; - public final fun getFallbackRequestHandler ()Lkotlin/jvm/functions/Function3; - public final fun getNotificationHandlers ()Ljava/util/Map; - public final fun getOptions ()Lio/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions; - public final fun getProgressHandlers ()Ljava/util/Map; - public final fun getRequestHandlers ()Ljava/util/Map; - public final fun getResponseHandlers ()Ljava/util/Map; - public final fun getTransport ()Lio/modelcontextprotocol/kotlin/sdk/shared/Transport; - public final fun notification (Lio/modelcontextprotocol/kotlin/sdk/Notification;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun onClose ()V - public fun onError (Ljava/lang/Throwable;)V - public final fun removeNotificationHandler (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public final fun removeRequestHandler (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public final fun request (Lio/modelcontextprotocol/kotlin/sdk/Request;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun request$default (Lio/modelcontextprotocol/kotlin/sdk/shared/Protocol;Lio/modelcontextprotocol/kotlin/sdk/Request;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun setFallbackNotificationHandler (Lkotlin/jvm/functions/Function2;)V - public final fun setFallbackRequestHandler (Lkotlin/jvm/functions/Function3;)V - public final fun setNotificationHandler (Lio/modelcontextprotocol/kotlin/sdk/Method;Lkotlin/jvm/functions/Function1;)V - public final fun setRequestHandler (Lkotlin/reflect/KType;Lio/modelcontextprotocol/kotlin/sdk/Method;Lkotlin/jvm/functions/Function3;)V -} - -public final class io/modelcontextprotocol/kotlin/sdk/shared/ProtocolKt { - public static final field IMPLEMENTATION_NAME Ljava/lang/String; - public static final fun getDEFAULT_REQUEST_TIMEOUT ()J - public static final fun getMcpJson ()Lkotlinx/serialization/json/Json; -} - -public class io/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions { - public synthetic fun (ZJILkotlin/jvm/internal/DefaultConstructorMarker;)V - public synthetic fun (ZJLkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getEnforceStrictCapabilities ()Z - public final fun getTimeout-UwyO8pc ()J - public final fun setEnforceStrictCapabilities (Z)V - public final fun setTimeout-LRDsOJo (J)V -} - -public final class io/modelcontextprotocol/kotlin/sdk/shared/ReadBuffer { - public fun ()V - public final fun append ([B)V - public final fun clear ()V - public final fun readMessage ()Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage; -} - -public final class io/modelcontextprotocol/kotlin/sdk/shared/ReadBufferKt { - public static final fun serializeMessage (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;)Ljava/lang/String; -} - -public final class io/modelcontextprotocol/kotlin/sdk/shared/RequestHandlerExtra { - public fun ()V -} - -public final class io/modelcontextprotocol/kotlin/sdk/shared/RequestOptions { - public synthetic fun (Lkotlin/jvm/functions/Function1;JILkotlin/jvm/internal/DefaultConstructorMarker;)V - public synthetic fun (Lkotlin/jvm/functions/Function1;JLkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlin/jvm/functions/Function1; - public final fun component2-UwyO8pc ()J - public final fun copy-HG0u8IE (Lkotlin/jvm/functions/Function1;J)Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions; - public static synthetic fun copy-HG0u8IE$default (Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/jvm/functions/Function1;JILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions; - public fun equals (Ljava/lang/Object;)Z - public final fun getOnProgress ()Lkotlin/jvm/functions/Function1; - public final fun getTimeout-UwyO8pc ()J - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public abstract interface class io/modelcontextprotocol/kotlin/sdk/shared/Transport { - public abstract fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun onClose (Lkotlin/jvm/functions/Function0;)V - public abstract fun onError (Lkotlin/jvm/functions/Function1;)V - public abstract fun onMessage (Lkotlin/jvm/functions/Function2;)V - public abstract fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public abstract class io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport { - public fun ()V - public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - protected abstract fun getSession ()Lio/ktor/websocket/WebSocketSession; - protected abstract fun initializeSession (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransportKt { - public static final field MCP_SUBPROTOCOL Ljava/lang/String; -} - diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt index 6eedfe62..7d559246 100644 --- a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt @@ -1,24 +1,27 @@ package io.modelcontextprotocol.kotlin.sdk.shared import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.CancelledNotification -import io.modelcontextprotocol.kotlin.sdk.EmptyRequestResult -import io.modelcontextprotocol.kotlin.sdk.ErrorCode -import io.modelcontextprotocol.kotlin.sdk.JSONRPCError -import io.modelcontextprotocol.kotlin.sdk.JSONRPCNotification -import io.modelcontextprotocol.kotlin.sdk.JSONRPCRequest -import io.modelcontextprotocol.kotlin.sdk.JSONRPCResponse -import io.modelcontextprotocol.kotlin.sdk.McpError -import io.modelcontextprotocol.kotlin.sdk.Method -import io.modelcontextprotocol.kotlin.sdk.Notification -import io.modelcontextprotocol.kotlin.sdk.PingRequest -import io.modelcontextprotocol.kotlin.sdk.Progress -import io.modelcontextprotocol.kotlin.sdk.ProgressNotification -import io.modelcontextprotocol.kotlin.sdk.Request -import io.modelcontextprotocol.kotlin.sdk.RequestId -import io.modelcontextprotocol.kotlin.sdk.RequestResult -import io.modelcontextprotocol.kotlin.sdk.fromJSON -import io.modelcontextprotocol.kotlin.sdk.toJSON +import io.modelcontextprotocol.kotlin.sdk.types.CancelledNotification +import io.modelcontextprotocol.kotlin.sdk.types.CancelledNotificationParams +import io.modelcontextprotocol.kotlin.sdk.types.EmptyResult +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCError +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCNotification +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCRequest +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCResponse +import io.modelcontextprotocol.kotlin.sdk.types.McpException +import io.modelcontextprotocol.kotlin.sdk.types.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.Method +import io.modelcontextprotocol.kotlin.sdk.types.Notification +import io.modelcontextprotocol.kotlin.sdk.types.PingRequest +import io.modelcontextprotocol.kotlin.sdk.types.Progress +import io.modelcontextprotocol.kotlin.sdk.types.ProgressNotification +import io.modelcontextprotocol.kotlin.sdk.types.ProgressToken +import io.modelcontextprotocol.kotlin.sdk.types.RPCError +import io.modelcontextprotocol.kotlin.sdk.types.Request +import io.modelcontextprotocol.kotlin.sdk.types.RequestId +import io.modelcontextprotocol.kotlin.sdk.types.RequestResult +import io.modelcontextprotocol.kotlin.sdk.types.fromJSON +import io.modelcontextprotocol.kotlin.sdk.types.toJSON import kotlinx.atomicfu.AtomicRef import kotlinx.atomicfu.atomic import kotlinx.atomicfu.getAndUpdate @@ -35,9 +38,6 @@ import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.encodeToJsonElement -import kotlinx.serialization.serializer -import kotlin.reflect.KType -import kotlin.reflect.typeOf import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds @@ -51,6 +51,11 @@ public const val IMPLEMENTATION_NAME: String = "mcp-ktor" public typealias ProgressCallback = (Progress) -> Unit @OptIn(ExperimentalSerializationApi::class) +@Deprecated( + message = "Use McpJson instead", + replaceWith = ReplaceWith("McpJson", "io.modelcontextprotocol.kotlin.sdk.types.McpJson"), + level = DeprecationLevel.WARNING, +) public val McpJson: Json by lazy { Json { ignoreUnknownKeys = true @@ -143,9 +148,9 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio public val responseHandlers: Map Unit> get() = _responseHandlers.value - private val _progressHandlers: AtomicRef> = + private val _progressHandlers: AtomicRef> = atomic(persistentMapOf()) - public val progressHandlers: Map + public val progressHandlers: Map get() = _progressHandlers.value /** @@ -183,7 +188,7 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio } setRequestHandler(Method.Defined.Ping) { _, _ -> - EmptyRequestResult() + EmptyResult() } } @@ -222,7 +227,7 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio transport = null onClose() - val error = McpError(ErrorCode.Defined.ConnectionClosed.code, "Connection closed") + val error = McpException(RPCError.ErrorCode.CONNECTION_CLOSED, "Connection closed") for (handler in handlersToNotify) { handler(null, error) } @@ -254,10 +259,10 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio logger.trace { "No handler found for request: ${request.method}" } try { transport?.send( - JSONRPCResponse( + JSONRPCError( id = request.id, - error = JSONRPCError( - ErrorCode.Defined.MethodNotFound, + error = RPCError( + code = RPCError.ErrorCode.METHOD_NOT_FOUND, message = "Server does not support ${request.method}", ), ), @@ -276,7 +281,7 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio transport?.send( JSONRPCResponse( id = request.id, - result = result, + result = result ?: EmptyResult(), ), ) } catch (cause: Throwable) { @@ -284,10 +289,10 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio try { transport?.send( - JSONRPCResponse( + JSONRPCError( id = request.id, - error = JSONRPCError( - code = ErrorCode.Defined.InternalError, + error = RPCError( + code = RPCError.ErrorCode.INTERNAL_ERROR, message = cause.message ?: "Internal error", ), ), @@ -324,7 +329,7 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio } private fun onResponse(response: JSONRPCResponse?, error: JSONRPCError?) { - val messageId = response?.id + val messageId = response?.id ?: error?.id val oldResponseHandlers = _responseHandlers.getAndUpdate { current -> if (messageId != null && messageId in current) { @@ -347,10 +352,10 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio handler(response, null) } else { check(error != null) - val error = McpError( - error.code.code, - error.message, - error.data, + val error = McpException( + code = error.error.code, + message = error.error.message, + data = error.error.data, ) handler(null, error) } @@ -415,11 +420,6 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio return@put } - if (response?.error != null) { - result.completeExceptionally(IllegalStateException(response.error.toString())) - return@put - } - try { @Suppress("UNCHECKED_CAST") result.complete(response!!.result as T) @@ -434,7 +434,7 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio _progressHandlers.update { current -> current.remove(messageId) } val notification = CancelledNotification( - params = CancelledNotification.Params( + params = CancelledNotificationParams( requestId = messageId, reason = reason.message ?: "Unknown", ), @@ -459,10 +459,10 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio } catch (cause: TimeoutCancellationException) { logger.error { "Request timed out after ${timeout.inWholeMilliseconds}ms: ${request.method}" } cancel( - McpError( - ErrorCode.Defined.RequestTimeout.code, - "Request timed out", - JsonObject(mutableMapOf("timeout" to JsonPrimitive(timeout.inWholeMilliseconds))), + McpException( + code = RPCError.ErrorCode.REQUEST_TIMEOUT, + message = "Request timed out", + data = JsonObject(mutableMapOf("timeout" to JsonPrimitive(timeout.inWholeMilliseconds))), ), ) result.cancel(cause) @@ -491,28 +491,21 @@ public abstract class Protocol(@PublishedApi internal val options: ProtocolOptio method: Method, noinline block: suspend (T, RequestHandlerExtra) -> RequestResult?, ) { - setRequestHandler(typeOf(), method, block) + setRequestHandlerInternal(method, block) } @PublishedApi - internal fun setRequestHandler( - requestType: KType, + @Suppress("UNCHECKED_CAST") + internal fun setRequestHandlerInternal( method: Method, block: suspend (T, RequestHandlerExtra) -> RequestResult?, ) { assertRequestHandlerCapability(method) - val serializer = McpJson.serializersModule.serializer(requestType) - _requestHandlers.update { current -> - current.put(method.value) { request, extraHandler -> - val result = McpJson.decodeFromJsonElement(serializer, request.params) - val response = if (result != null) { - @Suppress("UNCHECKED_CAST") - block(result as T, extraHandler) - } else { - EmptyRequestResult() - } + current.put(method.value) { jSONRPCRequest, extraHandler -> + val request = jSONRPCRequest.fromJSON() + val response = block(request as T, extraHandler) response } } diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/ReadBuffer.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/ReadBuffer.kt index 014e0eee..d991e7fe 100644 --- a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/ReadBuffer.kt +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/ReadBuffer.kt @@ -1,7 +1,8 @@ package io.modelcontextprotocol.kotlin.sdk.shared import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.McpJson import kotlinx.io.Buffer import kotlinx.io.indexOf import kotlinx.io.readString diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Transport.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Transport.kt index ba460f94..0ce13ecb 100644 --- a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Transport.kt +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Transport.kt @@ -1,6 +1,6 @@ package io.modelcontextprotocol.kotlin.sdk.shared -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage import kotlinx.coroutines.CompletableDeferred /** diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransport.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransport.kt index 85c60c05..4b209261 100644 --- a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransport.kt +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/WebSocketMcpTransport.kt @@ -5,7 +5,8 @@ import io.ktor.websocket.Frame import io.ktor.websocket.WebSocketSession import io.ktor.websocket.close import io.ktor.websocket.readText -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.McpJson import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.InternalCoroutinesApi @@ -58,7 +59,7 @@ public abstract class WebSocketMcpTransport : AbstractTransport() { while (true) { val message = try { session.incoming.receive() - } catch (e: ClosedReceiveChannelException) { + } catch (_: ClosedReceiveChannelException) { logger.debug { "Closed receive channel, exiting" } return@launch } diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt index a2383ac1..23b0e45d 100644 --- a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt @@ -1,287 +1,654 @@ -@file:Suppress("unused", "EnumEntryName") +@file:Suppress("FunctionName") package io.modelcontextprotocol.kotlin.sdk -import io.modelcontextprotocol.kotlin.sdk.shared.McpJson -import kotlinx.serialization.EncodeDefault -import kotlinx.serialization.ExperimentalSerializationApi +import io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities.Roots +import io.modelcontextprotocol.kotlin.sdk.types.ContentBlock +import io.modelcontextprotocol.kotlin.sdk.types.fromJSON +import io.modelcontextprotocol.kotlin.sdk.types.toJSON import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.JsonPrimitive -import kotlinx.serialization.json.buildJsonObject -import kotlinx.serialization.json.decodeFromJsonElement -import kotlinx.serialization.json.encodeToJsonElement -import kotlinx.serialization.json.jsonObject import kotlin.concurrent.atomics.AtomicLong import kotlin.concurrent.atomics.ExperimentalAtomicApi -import kotlin.concurrent.atomics.incrementAndFetch -import kotlin.jvm.JvmInline -public const val LATEST_PROTOCOL_VERSION: String = "2025-03-26" - -public val SUPPORTED_PROTOCOL_VERSIONS: Array = arrayOf( - LATEST_PROTOCOL_VERSION, - "2024-11-05", +@Deprecated( + message = "Use `LATEST_PROTOCOL_VERSION` instead", + replaceWith = ReplaceWith( + "LATEST_PROTOCOL_VERSION", + "io.modelcontextprotocol.kotlin.sdk.types.LATEST_PROTOCOL_VERSION", + ), + level = DeprecationLevel.WARNING, +) +public const val LATEST_PROTOCOL_VERSION: String = io.modelcontextprotocol.kotlin.sdk.types.LATEST_PROTOCOL_VERSION + +@Deprecated( + message = "Use `SUPPORTED_PROTOCOL_VERSIONS` instead", + replaceWith = ReplaceWith( + "SUPPORTED_PROTOCOL_VERSIONS", + "io.modelcontextprotocol.kotlin.sdk.types.SUPPORTED_PROTOCOL_VERSIONS", + ), + level = DeprecationLevel.WARNING, ) +public val SUPPORTED_PROTOCOL_VERSIONS: List = + io.modelcontextprotocol.kotlin.sdk.types.SUPPORTED_PROTOCOL_VERSIONS -public const val JSONRPC_VERSION: String = "2.0" +@Deprecated( + message = "Use `JSONRPC_VERSION` instead", + replaceWith = ReplaceWith("JSONRPC_VERSION", "io.modelcontextprotocol.kotlin.sdk.types.JSONRPC_VERSION"), + level = DeprecationLevel.WARNING, +) +public const val JSONRPC_VERSION: String = io.modelcontextprotocol.kotlin.sdk.types.JSONRPC_VERSION @OptIn(ExperimentalAtomicApi::class) +@Deprecated( + message = "Use `REQUEST_MESSAGE_ID` instead", + replaceWith = ReplaceWith("REQUEST_MESSAGE_ID", "io.modelcontextprotocol.kotlin.sdk.types.REQUEST_MESSAGE_ID"), + level = DeprecationLevel.WARNING, +) private val REQUEST_MESSAGE_ID: AtomicLong = AtomicLong(0L) /** * A progress token, used to associate progress notifications with the original request. * Stores message ID. */ -public typealias ProgressToken = RequestId +@Deprecated( + message = "Use `ProgressToken` instead", + replaceWith = ReplaceWith("ProgressToken", "io.modelcontextprotocol.kotlin.sdk.types.ProgressToken"), + level = DeprecationLevel.WARNING, +) +public typealias ProgressToken = io.modelcontextprotocol.kotlin.sdk.types.ProgressToken /** * An opaque token used to represent a cursor for pagination. */ +@Deprecated( + message = "This alias will be removed. Use String directly instead.", + replaceWith = ReplaceWith("String"), + level = DeprecationLevel.WARNING, +) public typealias Cursor = String /** * Represents an entity that includes additional metadata in its responses. */ -@Serializable -public sealed interface WithMeta { - /** - * The protocol reserves this result property - * to allow clients and servers to attach additional metadata to their responses. - */ - @Suppress("PropertyName") - public val _meta: JsonObject - - public companion object { - public val Empty: CustomMeta = CustomMeta() - } -} +@Deprecated( + message = "Use `WithMeta` instead", + replaceWith = ReplaceWith("WithMeta", "io.modelcontextprotocol.kotlin.sdk.types.WithMeta"), + level = DeprecationLevel.WARNING, +) +public typealias WithMeta = io.modelcontextprotocol.kotlin.sdk.types.WithMeta /** * An implementation of [WithMeta] containing custom metadata. * * @param _meta The JSON object holding metadata. Defaults to an empty JSON object. */ -@Serializable -public class CustomMeta(override val _meta: JsonObject = EmptyJsonObject) : WithMeta +@Deprecated( + message = "This class will be removed. Use `WithMeta` instead", + replaceWith = ReplaceWith("WithMeta", "io.modelcontextprotocol.kotlin.sdk.types.WithMeta"), + level = DeprecationLevel.WARNING, +) +public typealias CustomMeta = io.modelcontextprotocol.kotlin.sdk.types.WithMeta /** * Represents a method in the protocol, which can be predefined or custom. */ -@Serializable(with = RequestMethodSerializer::class) +@Deprecated( + message = "Use `Method` instead", + replaceWith = ReplaceWith("Method", "io.modelcontextprotocol.kotlin.sdk.types.Method"), + level = DeprecationLevel.WARNING, +) public sealed interface Method { public val value: String - /** - * Enum of predefined methods supported by the protocol. - */ - @Serializable - public enum class Defined(override val value: String) : Method { - Initialize("initialize"), - Ping("ping"), - ResourcesList("resources/list"), - ResourcesTemplatesList("resources/templates/list"), - ResourcesRead("resources/read"), - ResourcesSubscribe("resources/subscribe"), - ResourcesUnsubscribe("resources/unsubscribe"), - PromptsList("prompts/list"), - PromptsGet("prompts/get"), - NotificationsCancelled("notifications/cancelled"), - NotificationsInitialized("notifications/initialized"), - NotificationsProgress("notifications/progress"), - NotificationsMessage("notifications/message"), - NotificationsResourcesUpdated("notifications/resources/updated"), - NotificationsResourcesListChanged("notifications/resources/list_changed"), - NotificationsToolsListChanged("notifications/tools/list_changed"), - NotificationsRootsListChanged("notifications/roots/list_changed"), - NotificationsPromptsListChanged("notifications/prompts/list_changed"), - ToolsList("tools/list"), - ToolsCall("tools/call"), - LoggingSetLevel("logging/setLevel"), - SamplingCreateMessage("sampling/createMessage"), - CompletionComplete("completion/complete"), - RootsList("roots/list"), - ElicitationCreate("elicitation/create"), + public companion object { + /** + * Represents a custom method defined by the user. + */ + @Deprecated( + message = "Use `Method.Custom` instead", + replaceWith = ReplaceWith("Method.Custom", "io.modelcontextprotocol.kotlin.sdk.types.Method.Custom"), + level = DeprecationLevel.WARNING, + ) + public fun Custom(value: String): io.modelcontextprotocol.kotlin.sdk.types.Method.Custom = + io.modelcontextprotocol.kotlin.sdk.types.Method.Custom(value) } - /** - * Represents a custom method defined by the user. - */ - @Serializable - public data class Custom(override val value: String) : Method + public object Defined { + @Deprecated( + message = "Use `Method.Defined.Initialize` instead", + replaceWith = ReplaceWith( + "Method.Defined.Initialize", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.Initialize", + ), + level = DeprecationLevel.WARNING, + ) + public val Initialize: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.Initialize + + @Deprecated( + message = "Use `Method.Defined.Ping` instead", + replaceWith = ReplaceWith( + "Method.Defined.Ping", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.Ping", + ), + level = DeprecationLevel.WARNING, + ) + public val Ping: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.Ping + + @Deprecated( + message = "Use `Method.Defined.ResourcesList` instead", + replaceWith = ReplaceWith( + "Method.Defined.ResourcesList", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesList", + ), + level = DeprecationLevel.WARNING, + ) + public val ResourcesList: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesList + + @Deprecated( + message = "Use `Method.Defined.ResourcesTemplatesList` instead", + replaceWith = ReplaceWith( + "Method.Defined.ResourcesTemplatesList", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesTemplatesList", + ), + level = DeprecationLevel.WARNING, + ) + public val ResourcesTemplatesList: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesTemplatesList + + @Deprecated( + message = "Use `Method.Defined.ResourcesRead` instead", + replaceWith = ReplaceWith( + "Method.Defined.ResourcesRead", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesRead", + ), + level = DeprecationLevel.WARNING, + ) + public val ResourcesRead: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesRead + + @Deprecated( + message = "Use `Method.Defined.ResourcesSubscribe` instead", + replaceWith = ReplaceWith( + "Method.Defined.ResourcesSubscribe", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesSubscribe", + ), + level = DeprecationLevel.WARNING, + ) + public val ResourcesSubscribe: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesSubscribe + + @Deprecated( + message = "Use `Method.Defined.ResourcesUnsubscribe` instead", + replaceWith = ReplaceWith( + "Method.Defined.ResourcesUnsubscribe", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesUnsubscribe", + ), + level = DeprecationLevel.WARNING, + ) + public val ResourcesUnsubscribe: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ResourcesUnsubscribe + + @Deprecated( + message = "Use `Method.Defined.PromptsList` instead", + replaceWith = ReplaceWith( + "Method.Defined.PromptsList", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.PromptsList", + ), + level = DeprecationLevel.WARNING, + ) + public val PromptsList: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.PromptsList + + @Deprecated( + message = "Use `Method.Defined.PromptsGet` instead", + replaceWith = ReplaceWith( + "Method.Defined.PromptsGet", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.PromptsGet", + ), + level = DeprecationLevel.WARNING, + ) + public val PromptsGet: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.PromptsGet + + @Deprecated( + message = "Use `Method.Defined.NotificationsCancelled` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsCancelled", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsCancelled", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsCancelled: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsCancelled + + @Deprecated( + message = "Use `Method.Defined.NotificationsInitialized` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsInitialized", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsInitialized", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsInitialized: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsInitialized + + @Deprecated( + message = "Use `Method.Defined.NotificationsProgress` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsProgress", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsProgress", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsProgress: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsProgress + + @Deprecated( + message = "Use `Method.Defined.NotificationsMessage` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsMessage", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsMessage", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsMessage: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsMessage + + @Deprecated( + message = "Use `Method.Defined.NotificationsResourcesUpdated` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsResourcesUpdated", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsResourcesUpdated", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsResourcesUpdated: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsResourcesUpdated + + @Deprecated( + message = "Use `Method.Defined.NotificationsResourcesListChanged` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsResourcesListChanged", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsResourcesListChanged", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsResourcesListChanged: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsResourcesListChanged + + @Deprecated( + message = "Use `Method.Defined.NotificationsToolsListChanged` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsToolsListChanged", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsToolsListChanged", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsToolsListChanged: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsToolsListChanged + + @Deprecated( + message = "Use `Method.Defined.NotificationsRootsListChanged` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsRootsListChanged", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsRootsListChanged", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsRootsListChanged: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsRootsListChanged + + @Deprecated( + message = "Use `Method.Defined.NotificationsPromptsListChanged` instead", + replaceWith = ReplaceWith( + "Method.Defined.NotificationsPromptsListChanged", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsPromptsListChanged", + ), + level = DeprecationLevel.WARNING, + ) + public val NotificationsPromptsListChanged: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.NotificationsPromptsListChanged + + @Deprecated( + message = "Use `Method.Defined.ToolsList` instead", + replaceWith = ReplaceWith( + "Method.Defined.ToolsList", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ToolsList", + ), + level = DeprecationLevel.WARNING, + ) + public val ToolsList: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ToolsList + + @Deprecated( + message = "Use `Method.Defined.ToolsCall` instead", + replaceWith = ReplaceWith( + "Method.Defined.ToolsCall", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ToolsCall", + ), + level = DeprecationLevel.WARNING, + ) + public val ToolsCall: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ToolsCall + + @Deprecated( + message = "Use `Method.Defined.LoggingSetLevel` instead", + replaceWith = ReplaceWith( + "Method.Defined.LoggingSetLevel", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.LoggingSetLevel", + ), + level = DeprecationLevel.WARNING, + ) + public val LoggingSetLevel: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.LoggingSetLevel + + @Deprecated( + message = "Use `Method.Defined.SamplingCreateMessage` instead", + replaceWith = ReplaceWith( + "Method.Defined.SamplingCreateMessage", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.SamplingCreateMessage", + ), + level = DeprecationLevel.WARNING, + ) + public val SamplingCreateMessage: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.SamplingCreateMessage + + @Deprecated( + message = "Use `Method.Defined.CompletionComplete` instead", + replaceWith = ReplaceWith( + "Method.Defined.CompletionComplete", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.CompletionComplete", + ), + level = DeprecationLevel.WARNING, + ) + public val CompletionComplete: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.CompletionComplete + + @Deprecated( + message = "Use `Method.Defined.RootsList` instead", + replaceWith = ReplaceWith( + "Method.Defined.RootsList", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.RootsList", + ), + level = DeprecationLevel.WARNING, + ) + public val RootsList: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.RootsList + + @Deprecated( + message = "Use `Method.Defined.ElicitationCreate` instead", + replaceWith = ReplaceWith( + "Method.Defined.ElicitationCreate", + "io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ElicitationCreate", + ), + level = DeprecationLevel.WARNING, + ) + public val ElicitationCreate: io.modelcontextprotocol.kotlin.sdk.types.Method.Defined = + io.modelcontextprotocol.kotlin.sdk.types.Method.Defined.ElicitationCreate + } } /** * Represents a request in the protocol. */ -@Serializable(with = RequestPolymorphicSerializer::class) -public sealed interface Request { - public val method: Method -} +@Deprecated( + message = "Use `Request` instead", + replaceWith = ReplaceWith("Request", "io.modelcontextprotocol.kotlin.sdk.types.Request"), + level = DeprecationLevel.WARNING, +) +public typealias Request = io.modelcontextprotocol.kotlin.sdk.types.Request /** * Converts the request to a JSON-RPC request. * * @return The JSON-RPC request representation. */ -public fun Request.toJSON(): JSONRPCRequest { - val fullJson = McpJson.encodeToJsonElement(this).jsonObject - val params = JsonObject(fullJson.filterKeys { it != "method" }) - return JSONRPCRequest( - method = method.value, - params = params, - jsonrpc = JSONRPC_VERSION, - ) -} +@Deprecated( + message = "Use `toJSON` instead", + replaceWith = ReplaceWith("toJSON", "io.modelcontextprotocol.kotlin.sdk.types.toJSON"), + level = DeprecationLevel.WARNING, +) +public fun Request.toJSON(): JSONRPCRequest = this.toJSON() /** * Decodes a JSON-RPC request into a protocol-specific [Request]. * * @return The decoded [Request] or null */ -internal fun JSONRPCRequest.fromJSON(): Request { - val requestData = JsonObject(params.jsonObject + ("method" to JsonPrimitive(method))) - val deserializer = selectRequestDeserializer(method) - return McpJson.decodeFromJsonElement(deserializer, requestData) -} +@Deprecated( + message = "Use `fromJSON` instead", + replaceWith = ReplaceWith("fromJSON", "io.modelcontextprotocol.kotlin.sdk.types.fromJSON"), + level = DeprecationLevel.WARNING, +) +internal fun JSONRPCRequest.fromJSON(): Request = this.fromJSON() /** * A custom request with a specified method. * * @param method The method associated with the request. */ -@Serializable -public open class CustomRequest(override val method: Method) : Request +@Deprecated( + message = "Use `CustomRequest` instead", + replaceWith = ReplaceWith("CustomRequest", "io.modelcontextprotocol.kotlin.sdk.types.CustomRequest"), + level = DeprecationLevel.WARNING, +) +public typealias CustomRequest = io.modelcontextprotocol.kotlin.sdk.types.CustomRequest /** * Represents a notification in the protocol. */ -@Serializable(with = NotificationPolymorphicSerializer::class) -public sealed interface Notification { - public val method: Method - public val params: NotificationParams? -} +@Deprecated( + message = "Use `Notification` instead", + replaceWith = ReplaceWith("Notification", "io.modelcontextprotocol.kotlin.sdk.types.Notification"), + level = DeprecationLevel.WARNING, +) +public typealias Notification = io.modelcontextprotocol.kotlin.sdk.types.Notification /** * Converts the notification to a JSON-RPC notification. * * @return The JSON-RPC notification representation. */ -public fun Notification.toJSON(): JSONRPCNotification = JSONRPCNotification( - method = method.value, - params = McpJson.encodeToJsonElement(params), +@Deprecated( + message = "Use `toJSON` instead", + replaceWith = ReplaceWith("toJSON", "io.modelcontextprotocol.kotlin.sdk.types.toJSON"), + level = DeprecationLevel.WARNING, ) +public fun Notification.toJSON(): JSONRPCNotification = this.toJSON() /** * Decodes a JSON-RPC notification into a protocol-specific [Notification]. * * @return The decoded [Notification]. */ -internal fun JSONRPCNotification.fromJSON(): Notification { - val data = buildJsonObject { - put("method", JsonPrimitive(method)) - put("params", params) - } - return McpJson.decodeFromJsonElement(data) -} +@Deprecated( + message = "Use `fromJSON` instead", + replaceWith = ReplaceWith("toJSON", "io.modelcontextprotocol.kotlin.sdk.types.fromJSON"), + level = DeprecationLevel.WARNING, +) +internal fun JSONRPCNotification.fromJSON(): Notification = this.fromJSON() /** * Represents the result of a request, including additional metadata. */ -@Serializable(with = RequestResultPolymorphicSerializer::class) -public sealed interface RequestResult : WithMeta +@Deprecated( + message = "Use `RequestResult` instead", + replaceWith = ReplaceWith("RequestResult", "io.modelcontextprotocol.kotlin.sdk.types.RequestResult"), + level = DeprecationLevel.WARNING, +) +public typealias RequestResult = io.modelcontextprotocol.kotlin.sdk.types.RequestResult /** * An empty result for a request containing optional metadata. * * @param _meta Additional metadata for the response. Defaults to an empty JSON object. */ -@Serializable -public data class EmptyRequestResult(override val _meta: JsonObject = EmptyJsonObject) : - ServerResult, - ClientResult +@Deprecated( + message = "Use `EmptyResult` instead", + replaceWith = ReplaceWith("EmptyResult", "io.modelcontextprotocol.kotlin.sdk.types.EmptyResult"), + level = DeprecationLevel.WARNING, +) +public typealias EmptyRequestResult = io.modelcontextprotocol.kotlin.sdk.types.EmptyResult /** * A uniquely identifying ID for a request in JSON-RPC. */ -@Serializable(with = RequestIdSerializer::class) -public sealed interface RequestId { - @Serializable - public data class StringId(val value: String) : RequestId +@Deprecated( + message = "Use `RequestId` instead", + replaceWith = ReplaceWith("RequestId", "io.modelcontextprotocol.kotlin.sdk.types.RequestId"), + level = DeprecationLevel.WARNING, +) +public object RequestId { + @Deprecated( + message = "Use `RequestId.StringId` instead", + replaceWith = ReplaceWith("RequestId.StringId", "io.modelcontextprotocol.kotlin.sdk.types.RequestId.StringId"), + level = DeprecationLevel.WARNING, + ) + public fun StringId(value: String): io.modelcontextprotocol.kotlin.sdk.types.RequestId.StringId = + io.modelcontextprotocol.kotlin.sdk.types.RequestId.StringId(value) - @Serializable - public data class NumberId(val value: Long) : RequestId + @Deprecated( + message = "Use `RequestId.NumberId` instead", + replaceWith = ReplaceWith("RequestId.NumberId", "io.modelcontextprotocol.kotlin.sdk.types.RequestId.NumberId"), + level = DeprecationLevel.WARNING, + ) + public fun NumberId(value: Long): io.modelcontextprotocol.kotlin.sdk.types.RequestId.NumberId = + io.modelcontextprotocol.kotlin.sdk.types.RequestId.NumberId(value) } /** * Represents a JSON-RPC message in the protocol. */ -@Serializable(with = JSONRPCMessagePolymorphicSerializer::class) -public sealed interface JSONRPCMessage +@Deprecated( + message = "Use `JSONRPCMessage` instead", + replaceWith = ReplaceWith("JSONRPCMessage", "io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage"), + level = DeprecationLevel.WARNING, +) +public typealias JSONRPCMessage = io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage /** * A request that expects a response. */ -@OptIn(ExperimentalAtomicApi::class) -@Serializable -public data class JSONRPCRequest( - val id: RequestId = RequestId.NumberId(REQUEST_MESSAGE_ID.incrementAndFetch()), - val method: String, - val params: JsonElement = EmptyJsonObject, - val jsonrpc: String = JSONRPC_VERSION, -) : JSONRPCMessage +@Deprecated( + message = "Use `JSONRPCRequest` instead", + replaceWith = ReplaceWith("JSONRPCRequest", "io.modelcontextprotocol.kotlin.sdk.types.JSONRPCRequest"), + level = DeprecationLevel.WARNING, +) +public typealias JSONRPCRequest = io.modelcontextprotocol.kotlin.sdk.types.JSONRPCRequest /** * A notification which does not expect a response. */ -@Serializable -public data class JSONRPCNotification( - val method: String, - val params: JsonElement = EmptyJsonObject, - val jsonrpc: String = JSONRPC_VERSION, -) : JSONRPCMessage +@Deprecated( + message = "Use `JSONRPCNotification` instead", + replaceWith = ReplaceWith("JSONRPCNotification", "io.modelcontextprotocol.kotlin.sdk.types.JSONRPCNotification"), + level = DeprecationLevel.WARNING, +) +public typealias JSONRPCNotification = io.modelcontextprotocol.kotlin.sdk.types.JSONRPCNotification /** * A successful (non-error) response to a request. */ -@Serializable -public class JSONRPCResponse( - public val id: RequestId, - public val jsonrpc: String = JSONRPC_VERSION, - public val result: RequestResult? = null, - public val error: JSONRPCError? = null, -) : JSONRPCMessage { - - public fun copy( - id: RequestId = this.id, - jsonrpc: String = this.jsonrpc, - result: RequestResult? = this.result, - error: JSONRPCError? = this.error, - ): JSONRPCResponse = JSONRPCResponse(id, jsonrpc, result, error) -} +@Deprecated( + message = "Use `JSONRPCResponse` instead", + replaceWith = ReplaceWith("JSONRPCResponse", "io.modelcontextprotocol.kotlin.sdk.types.JSONRPCResponse"), + level = DeprecationLevel.WARNING, +) +public typealias JSONRPCResponse = io.modelcontextprotocol.kotlin.sdk.types.JSONRPCResponse /** * An incomplete set of error codes that may appear in JSON-RPC responses. */ -@Serializable(with = ErrorCodeSerializer::class) +@Deprecated( + message = "Use `RPCError` instead", + replaceWith = ReplaceWith("RPCError", "io.modelcontextprotocol.kotlin.sdk.types.RPCError"), + level = DeprecationLevel.WARNING, +) public sealed interface ErrorCode { public val code: Int - @Serializable - public enum class Defined(override val code: Int) : ErrorCode { - // SDK error codes - ConnectionClosed(-1), - RequestTimeout(-2), - - // Standard JSON-RPC error codes - ParseError(-32700), - InvalidRequest(-32600), - MethodNotFound(-32601), - InvalidParams(-32602), - InternalError(-32603), + public object Defined { + @Deprecated( + message = "Use `RPCError.ErrorCode.CONNECTION_CLOSED` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.CONNECTION_CLOSED", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.CONNECTION_CLOSED", + ), + level = DeprecationLevel.WARNING, + ) + public val ConnectionClosed: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.CONNECTION_CLOSED + + @Deprecated( + message = "Use `RPCError.ErrorCode.REQUEST_TIMEOUT` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.REQUEST_TIMEOUT", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.REQUEST_TIMEOUT", + ), + level = DeprecationLevel.WARNING, + ) + public val RequestTimeout: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.REQUEST_TIMEOUT + + @Deprecated( + message = "Use `RPCError.ErrorCode.PARSE_ERROR` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.PARSE_ERROR", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.PARSE_ERROR", + ), + level = DeprecationLevel.WARNING, + ) + public val ParseError: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.PARSE_ERROR + + @Deprecated( + message = "Use `RPCError.ErrorCode.INVALID_REQUEST` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.INVALID_REQUEST", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.INVALID_REQUEST", + ), + level = DeprecationLevel.WARNING, + ) + public val InvalidRequest: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.INVALID_REQUEST + + @Deprecated( + message = "Use `RPCError.ErrorCode.METHOD_NOT_FOUND` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.METHOD_NOT_FOUND", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.METHOD_NOT_FOUND", + ), + level = DeprecationLevel.WARNING, + ) + public val MethodNotFound: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.METHOD_NOT_FOUND + + @Deprecated( + message = "Use `RPCError.ErrorCode.INVALID_PARAMS` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.INVALID_PARAMS", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.INVALID_PARAMS", + ), + level = DeprecationLevel.WARNING, + ) + public val InvalidParams: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.INVALID_PARAMS + + @Deprecated( + message = "Use `RPCError.ErrorCode.INTERNAL_ERROR` instead", + replaceWith = ReplaceWith( + "RPCError.ErrorCode.INTERNAL_ERROR", + "io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.INTERNAL_ERROR", + ), + level = DeprecationLevel.WARNING, + ) + public val InternalError: Int = io.modelcontextprotocol.kotlin.sdk.types.RPCError.ErrorCode.INTERNAL_ERROR } + @Deprecated( + message = "Use `RPCError` instead", + replaceWith = ReplaceWith("RPCError", "io.modelcontextprotocol.kotlin.sdk.types.RPCError"), + level = DeprecationLevel.WARNING, + ) @Serializable public data class Unknown(override val code: Int) : ErrorCode } @@ -289,18 +656,50 @@ public sealed interface ErrorCode { /** * A response to a request that indicates an error occurred. */ -@Serializable -public data class JSONRPCError(val code: ErrorCode, val message: String, val data: JsonObject = EmptyJsonObject) : - JSONRPCMessage +@Deprecated( + message = "Use `JSONRPCError` instead", + replaceWith = ReplaceWith("JSONRPCError", "io.modelcontextprotocol.kotlin.sdk.types.JSONRPCError"), + level = DeprecationLevel.WARNING, +) +public typealias JSONRPCError = io.modelcontextprotocol.kotlin.sdk.types.JSONRPCError /** * Base interface for notification parameters with optional metadata. */ -@Serializable -public sealed interface NotificationParams : WithMeta +@Deprecated( + message = "Use `NotificationParams` instead", + replaceWith = ReplaceWith("NotificationParams", "io.modelcontextprotocol.kotlin.sdk.types.NotificationParams"), + level = DeprecationLevel.WARNING, +) +public typealias NotificationParams = io.modelcontextprotocol.kotlin.sdk.types.NotificationParams /* Cancellation */ +@Deprecated( + message = "Use `CancelledNotification` instead", + replaceWith = ReplaceWith( + "CancelledNotification", + "io.modelcontextprotocol.kotlin.sdk.types.CancelledNotification", + ), + level = DeprecationLevel.WARNING, +) +public object CancelledNotification { + @Deprecated( + message = "Use `CancelledNotificationParams` instead", + replaceWith = ReplaceWith( + "CancelledNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.CancelledNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params( + requestId: io.modelcontextprotocol.kotlin.sdk.types.RequestId, + reason: String? = null, + meta: JsonObject? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.CancelledNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.CancelledNotificationParams(requestId, reason, meta) +} + /** * This notification can be sent by either side to indicate that it is cancelling a previously issued request. * @@ -310,104 +709,126 @@ public sealed interface NotificationParams : WithMeta * * A client MUST NOT attempt to cancel its `initialize` request. */ -@Serializable -public data class CancelledNotification(override val params: Params) : - ClientNotification, - ServerNotification { - override val method: Method = Method.Defined.NotificationsCancelled - - @Serializable - public data class Params( - /** - * The ID of the request to cancel. - * - * It MUST correspond to the ID of a request previously issued in the same direction. - */ - val requestId: RequestId, - /** - * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user. - */ - val reason: String? = null, - override val _meta: JsonObject = EmptyJsonObject, - ) : NotificationParams -} +@Deprecated( + message = "Use `CancelledNotification` instead", + replaceWith = ReplaceWith( + "CancelledNotification", + "io.modelcontextprotocol.kotlin.sdk.types.CancelledNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun CancelledNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.CancelledNotificationParams, +): io.modelcontextprotocol.kotlin.sdk.types.CancelledNotification = + io.modelcontextprotocol.kotlin.sdk.types.CancelledNotification(params) /* Initialization */ /** * Describes the name and version of an MCP implementation. */ -@Serializable -public data class Implementation(val name: String, val version: String) +@Deprecated( + message = "Use `Implementation` instead", + replaceWith = ReplaceWith("Implementation", "io.modelcontextprotocol.kotlin.sdk.types.Implementation"), + level = DeprecationLevel.WARNING, +) +public typealias Implementation = io.modelcontextprotocol.kotlin.sdk.types.Implementation + +@Deprecated( + message = "Use `ClientCapabilities` instead", + replaceWith = ReplaceWith("ClientCapabilities", "io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities"), + level = DeprecationLevel.WARNING, +) +public object ClientCapabilities { + @Deprecated( + message = "Use `ClientCapabilities.Roots` instead", + replaceWith = ReplaceWith( + "ClientCapabilities.Roots", + "io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities.Roots", + ), + level = DeprecationLevel.WARNING, + ) + public fun Roots(listChanged: Boolean? = null): io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities.Roots = + io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities.Roots(listChanged) +} /** * Capabilities a client may support. * Known capabilities are defined here, in this, but this is not a closed set: * any client can define its own, additional capabilities. */ -@Serializable -public data class ClientCapabilities( - /** - * Experimental, non-standard capabilities that the client supports. - */ - val experimental: JsonObject? = EmptyJsonObject, - /** - * Present if the client supports sampling from an LLM. - */ - val sampling: JsonObject? = EmptyJsonObject, - /** - * Present if the client supports listing roots. - */ - val roots: Roots? = null, - /** - * Present if the client supports elicitation. - */ - val elicitation: JsonObject? = null, -) { - @Serializable - public data class Roots( - /** - * Whether the client supports issuing notifications for changes to the root list. - */ - val listChanged: Boolean?, - ) -} +@Deprecated( + message = "Use `ClientCapabilities` instead", + replaceWith = ReplaceWith("ClientCapabilities", "io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities"), + level = DeprecationLevel.WARNING, +) +public fun ClientCapabilities( + sampling: JsonObject? = null, + roots: Roots? = null, + elicitation: JsonObject? = null, + experimental: JsonObject? = null, +): io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities = + io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities(sampling, roots, elicitation, experimental) /** * Represents a request sent by the client. */ -// @Serializable(with = ClientRequestPolymorphicSerializer::class) -public interface ClientRequest : Request +@Deprecated( + message = "Use `ClientRequest` instead", + replaceWith = ReplaceWith("ClientRequest", "io.modelcontextprotocol.kotlin.sdk.types.ClientRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ClientRequest = io.modelcontextprotocol.kotlin.sdk.types.ClientRequest /** * Represents a notification sent by the client. */ -@Serializable(with = ClientNotificationPolymorphicSerializer::class) -public sealed interface ClientNotification : Notification +@Deprecated( + message = "Use `ClientNotification` instead", + replaceWith = ReplaceWith("ClientNotification", "io.modelcontextprotocol.kotlin.sdk.types.ClientNotification"), + level = DeprecationLevel.WARNING, +) +public typealias ClientNotification = io.modelcontextprotocol.kotlin.sdk.types.ClientNotification /** * Represents a result returned to the client. */ -@Serializable(with = ClientResultPolymorphicSerializer::class) -public sealed interface ClientResult : RequestResult +@Deprecated( + message = "Use `ClientResult` instead", + replaceWith = ReplaceWith("ClientResult", "io.modelcontextprotocol.kotlin.sdk.types.ClientResult"), + level = DeprecationLevel.WARNING, +) +public typealias ClientResult = io.modelcontextprotocol.kotlin.sdk.types.ClientResult /** * Represents a request sent by the server. */ -// @Serializable(with = ServerRequestPolymorphicSerializer::class) -public sealed interface ServerRequest : Request +@Deprecated( + message = "Use `ServerRequest` instead", + replaceWith = ReplaceWith("ServerRequest", "io.modelcontextprotocol.kotlin.sdk.types.ServerRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ServerRequest = io.modelcontextprotocol.kotlin.sdk.types.ServerRequest /** * Represents a notification sent by the server. */ -@Serializable(with = ServerNotificationPolymorphicSerializer::class) -public sealed interface ServerNotification : Notification +@Deprecated( + message = "Use `ServerNotification` instead", + replaceWith = ReplaceWith("ServerNotification", "io.modelcontextprotocol.kotlin.sdk.types.ServerNotification"), + level = DeprecationLevel.WARNING, +) +public typealias ServerNotification = io.modelcontextprotocol.kotlin.sdk.types.ServerNotification /** * Represents a result returned by the server. */ -@Serializable(with = ServerResultPolymorphicSerializer::class) -public sealed interface ServerResult : RequestResult +@Deprecated( + message = "Use `ServerResult` instead", + replaceWith = ReplaceWith("ServerResult", "io.modelcontextprotocol.kotlin.sdk.types.ServerResult"), + level = DeprecationLevel.WARNING, +) +public typealias ServerResult = io.modelcontextprotocol.kotlin.sdk.types.ServerResult /** * Represents a request or notification for an unknown method. @@ -415,120 +836,147 @@ public sealed interface ServerResult : RequestResult * @param method The method that is unknown. */ @Serializable -public data class UnknownMethodRequestOrNotification( - override val method: Method, - override val params: NotificationParams? = null, -) : ClientNotification, - ClientRequest, - ServerNotification, - ServerRequest +@Deprecated( + message = "This class will be removed", + level = DeprecationLevel.WARNING, +) +public data class UnknownMethodRequestOrNotification(val method: Method, val params: NotificationParams? = null) /** * This request is sent from the client to the server when it first connects, asking it to begin initialization. */ -@Serializable -public data class InitializeRequest( - val protocolVersion: String, - val capabilities: ClientCapabilities, - val clientInfo: Implementation, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.Initialize +@Deprecated( + message = "Use `InitializeRequest` instead", + replaceWith = ReplaceWith("InitializeRequest", "io.modelcontextprotocol.kotlin.sdk.types.InitializeRequest"), + level = DeprecationLevel.WARNING, +) +public typealias InitializeRequest = io.modelcontextprotocol.kotlin.sdk.types.InitializeRequest + +@Deprecated( + message = "Use `ServerCapabilities` instead", + replaceWith = ReplaceWith("ServerCapabilities", "io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities"), + level = DeprecationLevel.WARNING, +) +public object ServerCapabilities { + + @Deprecated( + message = "Use `ServerCapabilities.Prompts` instead", + replaceWith = ReplaceWith( + "ServerCapabilities.Prompts", + "io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Prompts", + ), + level = DeprecationLevel.WARNING, + ) + public fun Prompts( + listChanged: Boolean? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Prompts = + io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Prompts(listChanged) + + @Deprecated( + message = "Use `ServerCapabilities.Resources` instead", + replaceWith = ReplaceWith( + "ServerCapabilities.Resources", + "io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Resources", + ), + level = DeprecationLevel.WARNING, + ) + public fun Resources( + listChanged: Boolean? = null, + subscribe: Boolean? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Resources = + io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Resources(listChanged, subscribe) + + @Deprecated( + message = "Use `ServerCapabilities.Tools` instead", + replaceWith = ReplaceWith( + "ServerCapabilities.Tools", + "io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Tools", + ), + level = DeprecationLevel.WARNING, + ) + public fun Tools(listChanged: Boolean? = null): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Tools = + io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Tools(listChanged) } /** * Represents the capabilities that a server can support. * * @property experimental Experimental, non-standard capabilities that the server supports. - * @property sampling Present if the client supports sampling from an LLM. * @property logging Present if the server supports sending log messages to the client. * @property prompts Capabilities related to prompt templates offered by the server. * @property resources Capabilities related to resources available on the server. * @property tools Capabilities related to tools that can be called on the server. */ -@Serializable -public data class ServerCapabilities( - val experimental: JsonObject? = EmptyJsonObject, - val sampling: JsonObject? = EmptyJsonObject, - val logging: JsonObject? = EmptyJsonObject, - val prompts: Prompts? = null, - val resources: Resources? = null, - val tools: Tools? = null, -) { - /** - * Capabilities related to prompt templates. - * - * @property listChanged Indicates if the server supports notifications when the prompt list changes. - */ - @Serializable - public data class Prompts( - /** - * Whether this server supports issuing notifications for changes to the prompt list. - */ - val listChanged: Boolean?, - ) - - /** - * Capabilities related to resources. - * - * @property subscribe Indicates if clients can subscribe to resource updates. - * @property listChanged Indicates if the server supports notifications when the resource list changes. - */ - @Serializable - public data class Resources( - /** - * Whether this server supports clients subscribing to resource updates. - */ - val subscribe: Boolean?, - /** - * Whether this server supports issuing notifications for changes to the resource list. - */ - val listChanged: Boolean?, - ) - - /** - * Capabilities related to tools. - * - * @property listChanged Indicates if the server supports notifications when the tool list changes. - */ - @Serializable - public data class Tools( - /** - * Whether this server supports issuing notifications for changes to the tool list. - */ - val listChanged: Boolean?, +@Deprecated( + message = "Use `ServerCapabilities` instead", + replaceWith = ReplaceWith("ServerCapabilities", "io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities"), + level = DeprecationLevel.WARNING, +) +public fun ServerCapabilities( + tools: io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Tools? = null, + resources: io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Resources? = null, + prompts: io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities.Prompts? = null, + logging: JsonObject? = null, + completions: JsonObject? = null, + experimental: JsonObject? = null, +): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities( + tools, + resources, + prompts, + logging, + completions, + experimental, ) -} /** * After receiving an initialized request from the client, the server sends this response. */ -@Serializable -public data class InitializeResult( - /** - * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect. - */ - val protocolVersion: String = LATEST_PROTOCOL_VERSION, - val capabilities: ServerCapabilities = ServerCapabilities(), - val serverInfo: Implementation, - /** - * Optional instructions from the server to the client about how to use this server. - */ - val instructions: String? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult +@Deprecated( + message = "Use `InitializeResult` instead", + replaceWith = ReplaceWith("InitializeResult", "io.modelcontextprotocol.kotlin.sdk.types.InitializeResult"), + level = DeprecationLevel.WARNING, +) +public typealias InitializeResult = io.modelcontextprotocol.kotlin.sdk.types.InitializeResult + +@Deprecated( + message = "Use `InitializedNotification` instead", + replaceWith = ReplaceWith( + "InitializedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.InitializedNotification", + ), + level = DeprecationLevel.WARNING, +) +public object InitializedNotification { + @Deprecated( + message = "Use `BaseNotificationParams` instead", + replaceWith = ReplaceWith( + "BaseNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params( + meta: JsonObject = EmptyJsonObject, + ): io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams(meta) +} /** * This notification is sent from the client to the server after initialization has finished. */ -@Serializable -public data class InitializedNotification(override val params: Params = Params()) : ClientNotification { - override val method: Method = Method.Defined.NotificationsInitialized - - @Serializable - public data class Params(override val _meta: JsonObject = EmptyJsonObject) : NotificationParams -} +@Deprecated( + message = "Use `InitializedNotification` instead", + replaceWith = ReplaceWith( + "InitializedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.InitializedNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun InitializedNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams? = null, +): io.modelcontextprotocol.kotlin.sdk.types.InitializedNotification = + io.modelcontextprotocol.kotlin.sdk.types.InitializedNotification(params) /* Ping */ @@ -536,17 +984,21 @@ public data class InitializedNotification(override val params: Params = Params() * A ping, issued by either the server or the client, to check that the other party is still alive. * The receiver must promptly respond, or else it may be disconnected. */ -@Serializable -public class PingRequest : - ServerRequest, - ClientRequest { - override val method: Method = Method.Defined.Ping -} +@Deprecated( + message = "Use `PingRequest` instead", + replaceWith = ReplaceWith("PingRequest", "io.modelcontextprotocol.kotlin.sdk.types.PingRequest"), + level = DeprecationLevel.WARNING, +) +public typealias PingRequest = io.modelcontextprotocol.kotlin.sdk.types.PingRequest /** * Represents the base interface for progress tracking. */ @Serializable +@Deprecated( + message = "This interface will be removed", + level = DeprecationLevel.WARNING, +) public sealed interface ProgressBase { /** * The progress thus far. This should increase every time progress is made, even if the total is unknown. @@ -572,598 +1024,528 @@ public sealed interface ProgressBase { * @property progress The current progress value. * @property total The total progress required, if known. */ -@Serializable -public open class Progress( - /** - * The progress thus far. This should increase every time progress is made, even if the total is unknown. - */ - override val progress: Double, - - /** - * Total number of items to a process (or total progress required), if known. - */ - override val total: Double?, +@Deprecated( + message = "Use `Progress` instead", + replaceWith = ReplaceWith("Progress", "io.modelcontextprotocol.kotlin.sdk.types.Progress"), + level = DeprecationLevel.WARNING, +) +public typealias Progress = io.modelcontextprotocol.kotlin.sdk.types.Progress - /** - * An optional message describing the current progress. - */ - override val message: String?, -) : ProgressBase +@Deprecated( + message = "Use `ProgressNotification` instead", + replaceWith = ReplaceWith("ProgressNotification", "io.modelcontextprotocol.kotlin.sdk.types.ProgressNotification"), + level = DeprecationLevel.WARNING, +) +public object ProgressNotification { + @Deprecated( + message = "Use `ProgressNotificationParams` instead", + replaceWith = ReplaceWith( + "ProgressNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.ProgressNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params( + progressToken: io.modelcontextprotocol.kotlin.sdk.types.ProgressToken, + progress: Double, + total: Double? = null, + message: String? = null, + meta: JsonObject? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ProgressNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.ProgressNotificationParams( + progressToken, + progress, + total, + message, + meta, + ) +} /** * An out-of-band notification used to inform the receiver of a progress update for a long-running request. */ -@Serializable -public data class ProgressNotification(override val params: Params) : - ClientNotification, - ServerNotification { - override val method: Method = Method.Defined.NotificationsProgress - - @Serializable - public data class Params( - /** - * The progress thus far. This should increase every time progress is made, even if the total is unknown. - */ - override val progress: Double, - /** - * The progress token, - * which was given in the initial request, - * used to associate this notification with the request that is proceeding. - */ - val progressToken: ProgressToken, - /** - * Total number of items to process (or total progress required), if known. - */ - override val total: Double? = null, - /** - * An optional message describing the current progress. - */ - override val message: String? = null, - override val _meta: JsonObject = EmptyJsonObject, - ) : NotificationParams, - ProgressBase -} +@Deprecated( + message = "Use `ProgressNotification` instead", + replaceWith = ReplaceWith("ProgressNotification", "io.modelcontextprotocol.kotlin.sdk.types.ProgressNotification"), + level = DeprecationLevel.WARNING, +) +public fun ProgressNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.ProgressNotificationParams, +): io.modelcontextprotocol.kotlin.sdk.types.ProgressNotification = + io.modelcontextprotocol.kotlin.sdk.types.ProgressNotification(params) /* Pagination */ /** * Represents a request supporting pagination. */ -@Serializable -public sealed interface PaginatedRequest : - Request, - WithMeta { - /** - * The cursor indicating the pagination position. - */ - public val cursor: Cursor? - override val _meta: JsonObject -} +@Deprecated( + message = "Use `PaginatedRequest` instead", + replaceWith = ReplaceWith("PaginatedRequest", "io.modelcontextprotocol.kotlin.sdk.types.PaginatedRequest"), + level = DeprecationLevel.WARNING, +) +public typealias PaginatedRequest = io.modelcontextprotocol.kotlin.sdk.types.PaginatedRequest /** * Represents a paginated result of a request. */ -@Serializable -public sealed interface PaginatedResult : RequestResult { - /** - * An opaque token representing the pagination position after the last returned result. - * If present, there may be more results available. - */ - public val nextCursor: Cursor? -} +@Deprecated( + message = "Use `PaginatedResult` instead", + replaceWith = ReplaceWith("PaginatedResult", "io.modelcontextprotocol.kotlin.sdk.types.PaginatedResult"), + level = DeprecationLevel.WARNING, +) +public typealias PaginatedResult = io.modelcontextprotocol.kotlin.sdk.types.PaginatedResult /* Resources */ /** * The contents of a specific resource or sub-resource. */ -@Serializable(with = ResourceContentsPolymorphicSerializer::class) -public sealed interface ResourceContents { - /** - * The URI of this resource. - */ - public val uri: String - - /** - * The MIME type of this resource, if known. - */ - public val mimeType: String? -} +@Deprecated( + message = "Use `ResourceContents` instead", + replaceWith = ReplaceWith("ResourceContents", "io.modelcontextprotocol.kotlin.sdk.types.ResourceContents"), + level = DeprecationLevel.WARNING, +) +public typealias ResourceContents = io.modelcontextprotocol.kotlin.sdk.types.ResourceContents /** * Represents the text contents of a resource. * * @property text The text of the item. This must only be set if the item can actually be represented as text (not binary data). */ -@Serializable -public data class TextResourceContents(val text: String, override val uri: String, override val mimeType: String?) : - ResourceContents +@Deprecated( + message = "Use `TextResourceContents` instead", + replaceWith = ReplaceWith("TextResourceContents", "io.modelcontextprotocol.kotlin.sdk.types.TextResourceContents"), + level = DeprecationLevel.WARNING, +) +public typealias TextResourceContents = io.modelcontextprotocol.kotlin.sdk.types.TextResourceContents /** * Represents the binary contents of a resource encoded as a base64 string. * * @property blob A base64-encoded string representing the binary data of the item. */ -@Serializable -public data class BlobResourceContents(val blob: String, override val uri: String, override val mimeType: String?) : - ResourceContents +@Deprecated( + message = "Use `BlobResourceContents` instead", + replaceWith = ReplaceWith("BlobResourceContents", "io.modelcontextprotocol.kotlin.sdk.types.BlobResourceContents"), + level = DeprecationLevel.WARNING, +) +public typealias BlobResourceContents = io.modelcontextprotocol.kotlin.sdk.types.BlobResourceContents /** * Represents resource contents with unknown or unspecified data. */ -@Serializable -public data class UnknownResourceContents(override val uri: String, override val mimeType: String?) : ResourceContents +@Deprecated( + message = "Use `UnknownResourceContents` instead", + replaceWith = ReplaceWith( + "UnknownResourceContents", + "io.modelcontextprotocol.kotlin.sdk.types.UnknownResourceContents", + ), + level = DeprecationLevel.WARNING, +) +public typealias UnknownResourceContents = io.modelcontextprotocol.kotlin.sdk.types.UnknownResourceContents /** * A known resource that the server is capable of reading. */ -@Serializable -public data class Resource( - /** - * The URI of this resource. - */ - val uri: String, - /** - * A human-readable name for this resource. - * - * Clients can use this to populate UI elements. - */ - val name: String, - /** - * A description of what this resource represents. - * - * Clients can use this to improve the LLM's understanding of available resources. - * It can be thought of as a "hint" to the model. - */ - val description: String?, - /** - * The MIME type of this resource, if known. - */ - val mimeType: String?, - /** - * The optional human-readable name of this resource for display purposes. - */ - val title: String? = null, - /** - * The optional size of this resource in bytes, if known. - */ - val size: Long? = null, - /** - * Optional annotations for the client. - */ - val annotations: Annotations? = null, +@Deprecated( + message = "Use `Resource` instead", + replaceWith = ReplaceWith("Resource", "io.modelcontextprotocol.kotlin.sdk.types.Resource"), + level = DeprecationLevel.WARNING, ) +public typealias Resource = io.modelcontextprotocol.kotlin.sdk.types.Resource /** * A template description for resources available on the server. */ -@Serializable -public data class ResourceTemplate( - /** - * A URI template (according to RFC 6570) that can be used to construct resource URIs. - */ - val uriTemplate: String, - /** - * A human-readable name for the type of resource this template refers to. - * - * Clients can use this to populate UI elements. - */ - val name: String, - /** - * A description of what this template is for. - * - * Clients can use this to improve the LLM's understanding of available resources. - * It can be thought of as a "hint" to the model. - */ - val description: String?, - /** - * The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type. - */ - val mimeType: String?, - /** - * The optional human-readable name of this resource for display purposes. - */ - val title: String? = null, - /** - * Optional annotations for the client. - */ - val annotations: Annotations? = null, +@Deprecated( + message = "Use `ResourceTemplate` instead", + replaceWith = ReplaceWith("ResourceTemplate", "io.modelcontextprotocol.kotlin.sdk.types.ResourceTemplate"), + level = DeprecationLevel.WARNING, ) +public typealias ResourceTemplate = io.modelcontextprotocol.kotlin.sdk.types.ResourceTemplate /** * Sent from the client to request a list of resources the server has. */ -@Serializable -public data class ListResourcesRequest( - override val cursor: Cursor? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - PaginatedRequest { - override val method: Method = Method.Defined.ResourcesList -} +@Deprecated( + message = "Use `ListResourcesRequest` instead", + replaceWith = ReplaceWith("ListResourcesRequest", "io.modelcontextprotocol.kotlin.sdk.types.ListResourcesRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ListResourcesRequest = io.modelcontextprotocol.kotlin.sdk.types.ListResourcesRequest /** * The server's response to a resources/list request from the client. */ -@Serializable -public class ListResourcesResult( - public val resources: List, - override val nextCursor: Cursor? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult, - PaginatedResult +@Deprecated( + message = "Use `ListResourcesResult` instead", + replaceWith = ReplaceWith("ListResourcesResult", "io.modelcontextprotocol.kotlin.sdk.types.ListResourcesResult"), + level = DeprecationLevel.WARNING, +) +public typealias ListResourcesResult = io.modelcontextprotocol.kotlin.sdk.types.ListResourcesResult /** * Sent from the client to request a list of resource templates the server has. */ -@Serializable -public data class ListResourceTemplatesRequest( - override val cursor: Cursor?, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - PaginatedRequest { - override val method: Method = Method.Defined.ResourcesTemplatesList -} +@Deprecated( + message = "Use `ListResourceTemplatesRequest` instead", + replaceWith = ReplaceWith( + "ListResourceTemplatesRequest", + "io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesRequest", + ), + level = DeprecationLevel.WARNING, +) +public typealias ListResourceTemplatesRequest = io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesRequest /** * The server's response to a resources/templates/list request from the client. */ -@Serializable -public class ListResourceTemplatesResult( - public val resourceTemplates: List, - override val nextCursor: Cursor? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult, - PaginatedResult +@Deprecated( + message = "Use `ListResourceTemplatesResult` instead", + replaceWith = ReplaceWith( + "ListResourceTemplatesResult", + "io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesResult", + ), + level = DeprecationLevel.WARNING, +) +public typealias ListResourceTemplatesResult = io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesResult /** * Sent from the client to the server to read a specific resource URI. */ -@Serializable -public data class ReadResourceRequest(val uri: String, override val _meta: JsonObject = EmptyJsonObject) : - ClientRequest, - WithMeta { - override val method: Method = Method.Defined.ResourcesRead -} +@Deprecated( + message = "Use `ReadResourceRequest` instead", + replaceWith = ReplaceWith("ReadResourceRequest", "io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ReadResourceRequest = io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequest /** * The server's response to a resources/read request from the client. */ -@Serializable -public class ReadResourceResult( - public val contents: List, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult +@Deprecated( + message = "Use `ReadResourceResult` instead", + replaceWith = ReplaceWith("ReadResourceResult", "io.modelcontextprotocol.kotlin.sdk.types.ReadResourceResult"), + level = DeprecationLevel.WARNING, +) +public typealias ReadResourceResult = io.modelcontextprotocol.kotlin.sdk.types.ReadResourceResult + +@Deprecated( + message = "Use `ResourceListChangedNotification` instead", + replaceWith = ReplaceWith( + "ResourceListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.ResourceListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public object ResourceListChangedNotification { + @Deprecated( + message = "Use `BaseNotificationParams` instead", + replaceWith = ReplaceWith( + "BaseNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params(meta: JsonObject? = null): io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams(meta) +} /** * An optional notification from the server to the client, * informing it that the list of resources it can read from has changed. * Servers may issue this without any previous subscription from the client. */ -@Serializable -public data class ResourceListChangedNotification(override val params: Params = Params()) : ServerNotification { - override val method: Method = Method.Defined.NotificationsResourcesListChanged - - @Serializable - public data class Params(override val _meta: JsonObject = EmptyJsonObject) : NotificationParams -} +@Deprecated( + message = "Use `ResourceListChangedNotification` instead", + replaceWith = ReplaceWith( + "ResourceListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.ResourceListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun ResourceListChangedNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams? = null, +): io.modelcontextprotocol.kotlin.sdk.types.ResourceListChangedNotification = + io.modelcontextprotocol.kotlin.sdk.types.ResourceListChangedNotification(params) /** * Sent from the client to request resources/updated notifications from the server whenever a particular resource changes. */ -@Serializable -public data class SubscribeRequest( - /** - * The URI of the resource to subscribe to. The URI can use any protocol; it is up to the server how to interpret it. - */ - val uri: String, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.ResourcesSubscribe -} +@Deprecated( + message = "Use `SubscribeRequest` instead", + replaceWith = ReplaceWith("SubscribeRequest", "io.modelcontextprotocol.kotlin.sdk.types.SubscribeRequest"), + level = DeprecationLevel.WARNING, +) +public typealias SubscribeRequest = io.modelcontextprotocol.kotlin.sdk.types.SubscribeRequest /** * Sent from the client to request cancellation of resources/updated notifications from the server. This should follow a previous resources/subscribe request. */ -@Serializable -public data class UnsubscribeRequest( - /** - * The URI of the resource to unsubscribe from. - */ - val uri: String, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.ResourcesUnsubscribe +@Deprecated( + message = "Use `UnsubscribeRequest` instead", + replaceWith = ReplaceWith("UnsubscribeRequest", "io.modelcontextprotocol.kotlin.sdk.types.UnsubscribeRequest"), + level = DeprecationLevel.WARNING, +) +public typealias UnsubscribeRequest = io.modelcontextprotocol.kotlin.sdk.types.UnsubscribeRequest + +@Deprecated( + message = "Use `ResourceUpdatedNotification` instead", + replaceWith = ReplaceWith( + "ResourceUpdatedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotification", + ), + level = DeprecationLevel.WARNING, +) +public object ResourceUpdatedNotification { + @Deprecated( + message = "Use `ResourceUpdatedNotificationParams` instead", + replaceWith = ReplaceWith( + "ResourceUpdatedNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params( + uri: String, + meta: JsonObject? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotificationParams(uri, meta) } /** * A notification from the server to the client, informing it that a resource has changed and may need to be read again. This should only be sent if the client previously sent a resources/subscribe request. */ -@Serializable -public data class ResourceUpdatedNotification(override val params: Params) : ServerNotification { - override val method: Method = Method.Defined.NotificationsResourcesUpdated - - @Serializable - public data class Params( - /** - * The URI of the resource that has been updated. This might be a sub-resource of the one that the client actually subscribed to. - */ - val uri: String, - override val _meta: JsonObject = EmptyJsonObject, - ) : NotificationParams -} +@Deprecated( + message = "Use `ResourceUpdatedNotification` instead", + replaceWith = ReplaceWith( + "ResourceUpdatedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun ResourceUpdatedNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotificationParams, +): io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotification = + io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotification(params) /* Prompts */ /** * Describes an argument that a prompt can accept. */ -@Serializable -public data class PromptArgument( - /** - * The name of the argument. - */ - val name: String, - /** - * A human-readable description of the argument. - */ - val description: String?, - /** - * Whether this argument must be provided. - */ - val required: Boolean?, +@Deprecated( + message = "Use `PromptArgument` instead", + replaceWith = ReplaceWith("PromptArgument", "io.modelcontextprotocol.kotlin.sdk.types.PromptArgument"), + level = DeprecationLevel.WARNING, ) +public typealias PromptArgument = io.modelcontextprotocol.kotlin.sdk.types.PromptArgument /** * A prompt or prompt template that the server offers. */ -@Serializable -public class Prompt( - /** - * The name of the prompt or prompt template. - */ - public val name: String, - /** - * An optional description of what this prompt provides - */ - public val description: String?, - /** - * A list of arguments to use for templating the prompt. - */ - public val arguments: List?, +@Deprecated( + message = "Use `Prompt` instead", + replaceWith = ReplaceWith("Prompt", "io.modelcontextprotocol.kotlin.sdk.types.Prompt"), + level = DeprecationLevel.WARNING, ) +public typealias Prompt = io.modelcontextprotocol.kotlin.sdk.types.Prompt /** * Sent from the client to request a list of prompts and prompt templates the server has. */ -@Serializable -public data class ListPromptsRequest( - override val cursor: Cursor? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - PaginatedRequest { - override val method: Method = Method.Defined.PromptsList -} +@Deprecated( + message = "Use `ListPromptsRequest` instead", + replaceWith = ReplaceWith("ListPromptsRequest", "io.modelcontextprotocol.kotlin.sdk.types.ListPromptsRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ListPromptsRequest = io.modelcontextprotocol.kotlin.sdk.types.ListPromptsRequest /** * The server's response to a prompts/list request from the client. */ -@Serializable -public class ListPromptsResult( - public val prompts: List, - override val nextCursor: Cursor? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult, - PaginatedResult +@Deprecated( + message = "Use `ListPromptsResult` instead", + replaceWith = ReplaceWith("ListPromptsResult", "io.modelcontextprotocol.kotlin.sdk.types.ListPromptsResult"), + level = DeprecationLevel.WARNING, +) +public typealias ListPromptsResult = io.modelcontextprotocol.kotlin.sdk.types.ListPromptsResult /** * Used by the client to get a prompt provided by the server. */ -@Serializable -public data class GetPromptRequest( - /** - * The name of the prompt or prompt template. - */ - val name: String, - - /** - * Arguments to use for templating the prompt. - */ - val arguments: Map?, - - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.PromptsGet -} +@Deprecated( + message = "Use `GetPromptRequest` instead", + replaceWith = ReplaceWith("GetPromptRequest", "io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequest"), + level = DeprecationLevel.WARNING, +) +public typealias GetPromptRequest = io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequest /** * Represents the content of a prompt message. */ -@Serializable(with = PromptMessageContentPolymorphicSerializer::class) -public sealed interface PromptMessageContent { - public val type: String -} +@Deprecated( + message = "Use `ContentBlock` instead", + replaceWith = ReplaceWith("ContentBlock"), + level = DeprecationLevel.WARNING, +) +public typealias PromptMessageContent = io.modelcontextprotocol.kotlin.sdk.types.ContentBlock /** * Represents prompt message content that is either text, image or audio. */ -@Serializable(with = PromptMessageContentMultimodalPolymorphicSerializer::class) -public sealed interface PromptMessageContentMultimodal : PromptMessageContent +@Deprecated( + message = "Use `MediaContent` instead", + replaceWith = ReplaceWith("MediaContent"), + level = DeprecationLevel.WARNING, +) +public typealias PromptMessageContentMultimodal = io.modelcontextprotocol.kotlin.sdk.types.MediaContent /** * Text provided to or from an LLM. */ -@Serializable -public data class TextContent( - /** - * The text content of the message. - */ - val text: String? = null, - - /** - * Optional annotations for the client. - */ - val annotations: Annotations? = null, -) : PromptMessageContentMultimodal { - override val type: String = TYPE - - public companion object { - public const val TYPE: String = "text" - } -} +@Deprecated( + message = "Use `TextContent` instead", + replaceWith = ReplaceWith("TextContent", "io.modelcontextprotocol.kotlin.sdk.types.TextContent"), + level = DeprecationLevel.WARNING, +) +public typealias TextContent = io.modelcontextprotocol.kotlin.sdk.types.TextContent /** * An image provided to or from an LLM. */ -@Serializable -public data class ImageContent( - /** - * The base64-encoded image data. - */ - val data: String, - - /** - * The MIME type of the image. Different providers may support different image types. - */ - val mimeType: String, - - /** - * Optional annotations for the client. - */ - val annotations: Annotations? = null, -) : PromptMessageContentMultimodal { - override val type: String = TYPE - - public companion object { - public const val TYPE: String = "image" - } -} +@Deprecated( + message = "Use `ImageContent` instead", + replaceWith = ReplaceWith("ImageContent", "io.modelcontextprotocol.kotlin.sdk.types.ImageContent"), + level = DeprecationLevel.WARNING, +) +public typealias ImageContent = io.modelcontextprotocol.kotlin.sdk.types.ImageContent /** * Audio provided to or from an LLM. */ -@Serializable -public data class AudioContent( - /** - * The base64-encoded audio data. - */ - val data: String, - - /** - * The MIME type of the audio. Different providers may support different audio types. - */ - val mimeType: String, - - /** - * Optional annotations for the client. - */ - val annotations: Annotations? = null, -) : PromptMessageContentMultimodal { - override val type: String = TYPE - - public companion object { - public const val TYPE: String = "audio" - } -} +@Deprecated( + message = "Use `AudioContent` instead", + replaceWith = ReplaceWith("AudioContent", "io.modelcontextprotocol.kotlin.sdk.types.AudioContent"), + level = DeprecationLevel.WARNING, +) +public typealias AudioContent = io.modelcontextprotocol.kotlin.sdk.types.AudioContent /** * Unknown content provided to or from an LLM. */ @Serializable -public data class UnknownContent(override val type: String) : PromptMessageContentMultimodal +@Deprecated( + message = "This class will be removed.", + replaceWith = ReplaceWith("MediaContent"), + level = DeprecationLevel.WARNING, +) +public data class UnknownContent(val type: String) /** * The contents of a resource, embedded into a prompt or tool call result. */ -@Serializable -public data class EmbeddedResource( - /** - * The contents of the embedded resource. - */ - val resource: ResourceContents, - - /** - * Optional annotations for the client. - */ - val annotations: Annotations? = null, -) : PromptMessageContent { - override val type: String = TYPE - - public companion object { - public const val TYPE: String = "resource" - } -} +@Deprecated( + message = "Use `EmbeddedResource` instead", + replaceWith = ReplaceWith("EmbeddedResource", "io.modelcontextprotocol.kotlin.sdk.types.EmbeddedResource"), + level = DeprecationLevel.WARNING, +) +public typealias EmbeddedResource = io.modelcontextprotocol.kotlin.sdk.types.EmbeddedResource /** * Enum representing the role of a participant. */ -@Suppress("EnumEntryName") -@Serializable -public enum class Role { - user, - assistant, +@Deprecated( + message = "Use `Role` instead", + replaceWith = ReplaceWith("Role", "io.modelcontextprotocol.kotlin.sdk.types.Role"), + level = DeprecationLevel.WARNING, +) +public object Role { + @Deprecated( + message = "Use `Role.User` instead", + replaceWith = ReplaceWith("Role.User", "io.modelcontextprotocol.kotlin.sdk.types.Role"), + level = DeprecationLevel.WARNING, + ) + public val user: io.modelcontextprotocol.kotlin.sdk.types.Role = io.modelcontextprotocol.kotlin.sdk.types.Role.User + + @Deprecated( + message = "Use `Role.Assistant` instead", + replaceWith = ReplaceWith("Role.Assistant", "io.modelcontextprotocol.kotlin.sdk.types.Role"), + level = DeprecationLevel.WARNING, + ) + public val assistant: io.modelcontextprotocol.kotlin.sdk.types.Role = + io.modelcontextprotocol.kotlin.sdk.types.Role.Assistant } /** * Optional annotations for the client. * The client can use annotations to inform how objects are used or displayed. */ -@Serializable -public data class Annotations( - /** - * Describes who the intended customer of this object or data is. - */ - val audience: List?, - /** - * The moment the resource was last modified. - */ - val lastModified: String?, - /** - * Describes how important this data is for operating the server. - * - * A value of 1.0 means "most important", and indicates that the data is effectively required, - * while 0.0 means "less important", and indicates that the data is entirely optional. - */ - val priority: Double?, -) { - init { - require(priority == null || priority in 0.0..1.0) { "Priority must be between 0.0 and 1.0" } - } -} +@Deprecated( + message = "Use `Annotations` instead", + replaceWith = ReplaceWith("Annotations", "io.modelcontextprotocol.kotlin.sdk.types.Annotations"), + level = DeprecationLevel.WARNING, +) +public typealias Annotations = io.modelcontextprotocol.kotlin.sdk.types.Annotations /** * Describes a message returned as part of a prompt. */ -@Serializable -public data class PromptMessage(val role: Role, val content: PromptMessageContent) +@Deprecated( + message = "Use `PromptMessage` instead", + replaceWith = ReplaceWith("PromptMessage", "io.modelcontextprotocol.kotlin.sdk.types.PromptMessage"), + level = DeprecationLevel.WARNING, +) +public typealias PromptMessage = io.modelcontextprotocol.kotlin.sdk.types.PromptMessage /** * The server's response to a prompts/get request from the client. */ -@Serializable -public class GetPromptResult( - /** - * An optional description for the prompt. - */ - public val description: String?, - public val messages: List, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult +@Deprecated( + message = "Use `GetPromptResult` instead", + replaceWith = ReplaceWith("GetPromptResult", "io.modelcontextprotocol.kotlin.sdk.types.GetPromptResult"), + level = DeprecationLevel.WARNING, +) +public typealias GetPromptResult = io.modelcontextprotocol.kotlin.sdk.types.GetPromptResult + +@Deprecated( + message = "Use `PromptListChangedNotification` instead", + replaceWith = ReplaceWith( + "PromptListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.PromptListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public object PromptListChangedNotification { + @Deprecated( + message = "Use `BaseNotificationParams` instead", + replaceWith = ReplaceWith( + "BaseNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params(meta: JsonObject? = null): io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams(meta) +} /** * An optional notification from the server to the client, informing it that the list of prompts it offers has changed. * Servers may issue this without any previous subscription from the client. */ -@Serializable -public data class PromptListChangedNotification(override val params: Params = Params()) : ServerNotification { - override val method: Method = Method.Defined.NotificationsPromptsListChanged - - @Serializable - public data class Params(override val _meta: JsonObject = EmptyJsonObject) : NotificationParams -} +@Deprecated( + message = "Use `PromptListChangedNotification` instead", + replaceWith = ReplaceWith( + "PromptListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.PromptListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun PromptListChangedNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams, +): io.modelcontextprotocol.kotlin.sdk.types.PromptListChangedNotification = + io.modelcontextprotocol.kotlin.sdk.types.PromptListChangedNotification(params) /* Tools */ @@ -1177,194 +1559,306 @@ public data class PromptListChangedNotification(override val params: Params = Pa * Clients should never make tool use decisions based on ToolAnnotations * received from untrusted servers. */ -@Serializable -public data class ToolAnnotations( - /** - * A human-readable title for the tool. - */ - val title: String?, - /** - * If true, the tool does not modify its environment. - * - * Default: false - */ - val readOnlyHint: Boolean? = false, - /** - * If true, the tool may perform destructive updates to its environment. - * If false, the tool performs only additive updates. - * - * (This property is meaningful only when `readOnlyHint == false`) - * - * Default: true - */ - val destructiveHint: Boolean? = true, - /** - * If true, calling the tool repeatedly with the same arguments - * will have no additional effect on the its environment. - * - * (This property is meaningful only when `readOnlyHint == false`) - * - * Default: false - */ - val idempotentHint: Boolean? = false, - /** - * If true, this tool may interact with an "open world" of external - * entities. If false, the tool's domain of interaction is closed. - * For example, the world of a web search tool is open, whereas that - * of a memory tool is not. - * - * Default: true - */ - val openWorldHint: Boolean? = true, +@Deprecated( + message = "Use `ToolAnnotations` instead", + replaceWith = ReplaceWith("ToolAnnotations", "io.modelcontextprotocol.kotlin.sdk.types.ToolAnnotations"), + level = DeprecationLevel.WARNING, ) +public typealias ToolAnnotations = io.modelcontextprotocol.kotlin.sdk.types.ToolAnnotations + +@Deprecated( + message = "Use `Tool` instead", + replaceWith = ReplaceWith("Tool", "io.modelcontextprotocol.kotlin.sdk.types.Tool"), + level = DeprecationLevel.WARNING, +) +public object Tool { + @Deprecated( + message = "Use `ToolSchema` instead", + replaceWith = ReplaceWith("ToolSchema", "io.modelcontextprotocol.kotlin.sdk.types.ToolSchema"), + level = DeprecationLevel.WARNING, + ) + public fun Input( + properties: JsonObject? = null, + required: List? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ToolSchema = + io.modelcontextprotocol.kotlin.sdk.types.ToolSchema(properties, required) + + @Deprecated( + message = "Use `ToolSchema` instead", + replaceWith = ReplaceWith("ToolSchema", "io.modelcontextprotocol.kotlin.sdk.types.ToolSchema"), + level = DeprecationLevel.WARNING, + ) + public fun Output( + properties: JsonObject? = null, + required: List? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ToolSchema = + io.modelcontextprotocol.kotlin.sdk.types.ToolSchema(properties, required) +} /** * Definition for a tool the client can call. */ -@Serializable -public data class Tool( - /** - * The name of the tool. - */ - val name: String, - /** - * The title of the tool. - */ - val title: String?, - /** - * A human-readable description of the tool. - */ - val description: String?, - /** - * A JSON object defining the expected parameters for the tool. - */ - val inputSchema: Input, - /** - * An optional JSON object defining the expected output schema for the tool. - */ - val outputSchema: Output?, - /** - * Optional additional tool information. - */ - val annotations: ToolAnnotations?, - - /** - * Optional metadata for the tool. - */ - override val _meta: JsonObject = EmptyJsonObject, -) : WithMeta { - @Serializable - public data class Input(val properties: JsonObject = EmptyJsonObject, val required: List? = null) { - @OptIn(ExperimentalSerializationApi::class) - @EncodeDefault - val type: String = "object" - } - - @Serializable - public data class Output(val properties: JsonObject = EmptyJsonObject, val required: List? = null) { - @OptIn(ExperimentalSerializationApi::class) - @EncodeDefault - val type: String = "object" - } -} +@Deprecated( + message = "Use `Tool` instead", + replaceWith = ReplaceWith("Tool", "io.modelcontextprotocol.kotlin.sdk.types.Tool"), + level = DeprecationLevel.WARNING, +) +public fun Tool( + name: String, + inputSchema: io.modelcontextprotocol.kotlin.sdk.types.ToolSchema, + description: String? = null, + outputSchema: io.modelcontextprotocol.kotlin.sdk.types.ToolSchema? = null, + title: String? = null, + annotations: io.modelcontextprotocol.kotlin.sdk.types.ToolAnnotations? = null, + icons: List? = null, + _meta: JsonObject? = null, +): io.modelcontextprotocol.kotlin.sdk.types.Tool = io.modelcontextprotocol.kotlin.sdk.types.Tool( + name, + inputSchema, + description, + outputSchema, + title, + annotations, + icons, + _meta, +) /** * Sent from the client to request a list of tools the server has. */ -@Serializable -public data class ListToolsRequest( - override val cursor: Cursor? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - PaginatedRequest { - override val method: Method = Method.Defined.ToolsList -} +@Deprecated( + message = "Use `ListToolsRequest` instead", + replaceWith = ReplaceWith("ListToolsRequest", "io.modelcontextprotocol.kotlin.sdk.types.ListToolsRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ListToolsRequest = io.modelcontextprotocol.kotlin.sdk.types.ListToolsRequest /** * The server's response to a tools/list request from the client. */ -@Serializable -public class ListToolsResult( - public val tools: List, - override val nextCursor: Cursor?, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerResult, - PaginatedResult +@Deprecated( + message = "Use `ListToolsResult` instead", + replaceWith = ReplaceWith("ListToolsResult", "io.modelcontextprotocol.kotlin.sdk.types.ListToolsResult"), + level = DeprecationLevel.WARNING, +) +public typealias ListToolsResult = io.modelcontextprotocol.kotlin.sdk.types.ListToolsResult /** * The server's response to a tool call. */ @Serializable -public sealed interface CallToolResultBase : ServerResult { +@Deprecated( + message = "This interface will be removed.", + replaceWith = ReplaceWith("CallToolResult", "io.modelcontextprotocol.kotlin.sdk.types.CallToolResult"), + level = DeprecationLevel.WARNING, +) +public sealed interface CallToolResultBase { public val content: List public val structuredContent: JsonObject? public val isError: Boolean? get() = false } +@Deprecated( + message = "Use `CallToolResult` instead", + replaceWith = ReplaceWith("CallToolResult", "io.modelcontextprotocol.kotlin.sdk.types.CallToolResult"), + level = DeprecationLevel.WARNING, +) +public object CallToolResult + /** * The server's response to a tool call. */ -@Serializable -public class CallToolResult( - override val content: List, - override val structuredContent: JsonObject? = null, - override val isError: Boolean? = false, - override val _meta: JsonObject = EmptyJsonObject, -) : CallToolResultBase +@Deprecated( + message = "Use `CallToolResult` instead", + replaceWith = ReplaceWith("CallToolResult", "io.modelcontextprotocol.kotlin.sdk.types.CallToolResult"), + level = DeprecationLevel.WARNING, +) +public fun CallToolResult( + content: List, + isError: Boolean? = null, + structuredContent: JsonObject? = null, + meta: JsonObject? = null, +): io.modelcontextprotocol.kotlin.sdk.types.CallToolResult = + io.modelcontextprotocol.kotlin.sdk.types.CallToolResult(content, isError, structuredContent, meta) /** * [CallToolResult] extended with backwards compatibility to protocol version 2024-11-05. */ @Serializable +@Deprecated( + message = "This class will be removed.", + replaceWith = ReplaceWith("ToolCallResult"), + level = DeprecationLevel.WARNING, +) public class CompatibilityCallToolResult( - override val content: List, - override val structuredContent: JsonObject? = null, - override val isError: Boolean? = false, - override val _meta: JsonObject = EmptyJsonObject, + public val content: List, + public val structuredContent: JsonObject? = null, + public val isError: Boolean? = false, + public val _meta: JsonObject = EmptyJsonObject, public val toolResult: JsonObject = EmptyJsonObject, -) : CallToolResultBase +) /** * Used by the client to invoke a tool provided by the server. */ -@Serializable -public data class CallToolRequest( - val name: String, - val arguments: JsonObject = EmptyJsonObject, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.ToolsCall +@Deprecated( + message = "Use `CallToolRequest` instead", + replaceWith = ReplaceWith("CallToolRequest", "io.modelcontextprotocol.kotlin.sdk.types.CallToolRequest"), + level = DeprecationLevel.WARNING, +) +public typealias CallToolRequest = io.modelcontextprotocol.kotlin.sdk.types.CallToolRequest + +@Deprecated( + message = "Use `ToolListChangedNotification` instead", + replaceWith = ReplaceWith( + "ToolListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.ToolListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public object ToolListChangedNotification { + @Deprecated( + message = "Use `BaseNotificationParams` instead", + replaceWith = ReplaceWith( + "BaseNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params(meta: JsonObject? = null): io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams(meta) } /** * An optional notification from the server to the client, informing it that the list of tools it offers has changed. * Servers may issue this without any previous subscription from the client. */ -@Serializable -public data class ToolListChangedNotification(override val params: Params = Params()) : ServerNotification { - override val method: Method = Method.Defined.NotificationsToolsListChanged - - @Serializable - public data class Params(override val _meta: JsonObject = EmptyJsonObject) : NotificationParams -} +@Deprecated( + message = "Use `ToolListChangedNotification` instead", + replaceWith = ReplaceWith( + "ToolListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.ToolListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun ToolListChangedNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams, +): io.modelcontextprotocol.kotlin.sdk.types.ToolListChangedNotification = + io.modelcontextprotocol.kotlin.sdk.types.ToolListChangedNotification(params) /* Logging */ /** * The severity of a log message. */ -@Suppress("EnumEntryName") -@Serializable -public enum class LoggingLevel { - debug, - info, - notice, - warning, - error, - critical, - alert, - emergency, +@Deprecated( + message = "Use `LoggingLevel` instead", + replaceWith = ReplaceWith("LoggingLevel", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, +) +public object LoggingLevel { + @Deprecated( + message = "Use `LoggingLevel.Debug` instead", + replaceWith = ReplaceWith("LoggingLevel.Debug", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val debug: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Debug + + @Deprecated( + message = "Use `LoggingLevel.Info` instead", + replaceWith = ReplaceWith("LoggingLevel.Info", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val info: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Info + + @Deprecated( + message = "Use `LoggingLevel.Notice` instead", + replaceWith = ReplaceWith("LoggingLevel.Notice", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val notice: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Notice + + @Deprecated( + message = "Use `LoggingLevel.Warning` instead", + replaceWith = ReplaceWith("LoggingLevel.Warning", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val warning: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Warning + + @Deprecated( + message = "Use `LoggingLevel.Error` instead", + replaceWith = ReplaceWith("LoggingLevel.Error", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val error: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Error + + @Deprecated( + message = "Use `LoggingLevel.Critical` instead", + replaceWith = ReplaceWith("LoggingLevel.Critical", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val critical: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Critical + + @Deprecated( + message = "Use `LoggingLevel.Alert` instead", + replaceWith = ReplaceWith("LoggingLevel.Alert", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val alert: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Alert + + @Deprecated( + message = "Use `LoggingLevel.Emergency` instead", + replaceWith = ReplaceWith("LoggingLevel.Emergency", "io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel"), + level = DeprecationLevel.WARNING, + ) + public val emergency: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel = + io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel.Emergency +} + +@Deprecated( + message = "Use `LoggingMessageNotification` instead", + replaceWith = ReplaceWith( + "LoggingMessageNotification", + "io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotification", + ), + level = DeprecationLevel.WARNING, +) +public object LoggingMessageNotification { + @Deprecated( + message = "Use `LoggingMessageNotificationParams` instead", + replaceWith = ReplaceWith( + "LoggingMessageNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params( + level: io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel, + data: JsonElement, + logger: String? = null, + meta: JsonObject? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotificationParams(level, data, logger, meta) + + @Deprecated( + message = "Use `SetLevelRequest` instead", + replaceWith = ReplaceWith( + "SetLevelRequest", + "io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequest", + ), + level = DeprecationLevel.WARNING, + ) + public fun SetLevelRequest( + params: io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequestParams, + ): io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequest = + io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequest(params) } /** @@ -1372,99 +1866,60 @@ public enum class LoggingLevel { * If no logging level request has been sent from the client, * the server MAY decide which messages to send automatically. */ -@Serializable -public data class LoggingMessageNotification(override val params: Params) : ServerNotification { - override val method: Method = Method.Defined.NotificationsMessage - - @Serializable - public data class Params( - /** - * The severity of this log message. - */ - val level: LoggingLevel, - /** - * An optional name of the logger issuing this message. - */ - val logger: String? = null, - /** - * The data to be logged, such as a string message or an object. Any JSON serializable type is allowed here. - */ - val data: JsonElement, - override val _meta: JsonObject = EmptyJsonObject, - ) : NotificationParams - - /** - * A request from the client to the server to enable or adjust logging. - */ - @Serializable - public data class SetLevelRequest( - /** - * The level of logging that the client wants to receive from the server. The server should send all logs at this level and higher (i.e., more severe) to the client as notifications/logging/message. - */ - val level: LoggingLevel, - override val _meta: JsonObject = EmptyJsonObject, - ) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.LoggingSetLevel - } -} +@Deprecated( + message = "Use `LoggingMessageNotification` instead", + replaceWith = ReplaceWith( + "LoggingMessageNotification", + "io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun LoggingMessageNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotificationParams, +): io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotification = + io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotification(params) /* Sampling */ /** * Hints to use for model selection. */ -@Serializable -public data class ModelHint( - /** - * A hint for a model name. - */ - val name: String?, +@Deprecated( + message = "Use `ModelHint` instead", + replaceWith = ReplaceWith("ModelHint", "io.modelcontextprotocol.kotlin.sdk.types.ModelHint"), + level = DeprecationLevel.WARNING, ) +public typealias ModelHint = io.modelcontextprotocol.kotlin.sdk.types.ModelHint /** * The server's preferences for model selection, requested by the client during sampling. */ -@Suppress("CanBeParameter") -@Serializable -public class ModelPreferences( - /** - * Optional hints to use for model selection. - */ - public val hints: List?, - /** - * How much to prioritize cost when selecting a model. - */ - public val costPriority: Double?, - /** - * How much to prioritize sampling speed (latency) when selecting a model. - */ - public val speedPriority: Double?, - /** - * How much to prioritize intelligence and capabilities when selecting a model. - */ - public val intelligencePriority: Double?, -) { - init { - require(costPriority == null || costPriority in 0.0..1.0) { - "costPriority must be in 0.0 <= x <= 1.0 value range" - } - - require(speedPriority == null || speedPriority in 0.0..1.0) { - "costPriority must be in 0.0 <= x <= 1.0 value range" - } - - require(intelligencePriority == null || intelligencePriority in 0.0..1.0) { - "intelligencePriority must be in 0.0 <= x <= 1.0 value range" - } - } -} +@Deprecated( + message = "Use `ModelPreferences` instead", + replaceWith = ReplaceWith("ModelPreferences", "io.modelcontextprotocol.kotlin.sdk.types.ModelPreferences"), + level = DeprecationLevel.WARNING, +) +public typealias ModelPreferences = io.modelcontextprotocol.kotlin.sdk.types.ModelPreferences /** * Describes a message issued to or received from an LLM API. */ -@Serializable -public data class SamplingMessage(val role: Role, val content: PromptMessageContentMultimodal) +@Deprecated( + message = "Use `SamplingMessage` instead", + replaceWith = ReplaceWith("SamplingMessage", "io.modelcontextprotocol.kotlin.sdk.types.SamplingMessage"), + level = DeprecationLevel.WARNING, +) +public typealias SamplingMessage = io.modelcontextprotocol.kotlin.sdk.types.SamplingMessage + +@Deprecated( + message = "Use `CreateMessageRequest` instead", + replaceWith = ReplaceWith("CreateMessageRequest", "io.modelcontextprotocol.kotlin.sdk.types.CreateMessageRequest"), + level = DeprecationLevel.WARNING, +) +public object CreateMessageRequest { + public val IncludeContext: io.modelcontextprotocol.kotlin.sdk.types.IncludeContext.Companion = + io.modelcontextprotocol.kotlin.sdk.types.IncludeContext +} /** * A request from the server to sample an LLM via the client. @@ -1472,282 +1927,317 @@ public data class SamplingMessage(val role: Role, val content: PromptMessageCont * The client should also inform the user before beginning sampling to allow them to inspect the request * (human in the loop) and decide whether to approve it. */ -@Serializable -public data class CreateMessageRequest( - val messages: List, - /** - * An optional system prompt the server wants to use it for sampling. The client MAY modify or omit this prompt. - */ - val systemPrompt: String?, - /** - * A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. The client MAY ignore this request. - */ - val includeContext: IncludeContext?, - val temperature: Double?, - /** - * The maximum number of tokens to sample, as requested by the server. The client MAY choose to sample fewer tokens than requested. - */ - val maxTokens: Int, - val stopSequences: List?, - /** - * Optional metadata to pass through to the LLM provider. The format of this metadata is provider-specific. - */ - val metadata: JsonObject = EmptyJsonObject, - /** - * The server's preferences for which model to select. - */ - val modelPreferences: ModelPreferences?, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerRequest, - WithMeta { - override val method: Method = Method.Defined.SamplingCreateMessage - - @Serializable - public enum class IncludeContext { none, thisServer, allServers } -} - -@Serializable(with = StopReasonSerializer::class) -public sealed interface StopReason { - public val value: String - - @Serializable - public data object EndTurn : StopReason { - override val value: String = "endTurn" - } - - @Serializable - public data object StopSequence : StopReason { - override val value: String = "stopSequence" - } - - @Serializable - public data object MaxTokens : StopReason { - override val value: String = "maxTokens" - } - - @Serializable - @JvmInline - public value class Other(override val value: String) : StopReason -} +@Deprecated( + message = "Use `CreateMessageRequest` instead", + replaceWith = ReplaceWith("CreateMessageRequest", "io.modelcontextprotocol.kotlin.sdk.types.CreateMessageRequest"), + level = DeprecationLevel.WARNING, +) +public fun CreateMessageRequest( + params: io.modelcontextprotocol.kotlin.sdk.types.CreateMessageRequestParams, +): io.modelcontextprotocol.kotlin.sdk.types.CreateMessageRequest = + io.modelcontextprotocol.kotlin.sdk.types.CreateMessageRequest(params) + +@Deprecated( + message = "Use `StopReason` instead", + replaceWith = ReplaceWith("StopReason", "io.modelcontextprotocol.kotlin.sdk.types.StopReason"), + level = DeprecationLevel.WARNING, +) +public typealias StopReason = io.modelcontextprotocol.kotlin.sdk.types.StopReason /** * The client's response to a sampling/create_message request from the server. * The client should inform the user before returning the sampled message to allow them to inspect the response * (human in the loop) and decide whether to allow the server to see it. */ -@Serializable -public data class CreateMessageResult( - /** - * The name of the model that generated the message. - */ - val model: String, - /** - * The reason why sampling stopped. - */ - val stopReason: StopReason? = null, - val role: Role, - val content: PromptMessageContentMultimodal, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientResult +@Deprecated( + message = "Use `CreateMessageResult` instead", + replaceWith = ReplaceWith("CreateMessageResult", "io.modelcontextprotocol.kotlin.sdk.types.CreateMessageResult"), + level = DeprecationLevel.WARNING, +) +public typealias CreateMessageResult = io.modelcontextprotocol.kotlin.sdk.types.CreateMessageResult /* Autocomplete */ -@Serializable(with = ReferencePolymorphicSerializer::class) -public sealed interface Reference { - public val type: String -} +@Deprecated( + message = "Use `Reference` instead", + replaceWith = ReplaceWith("Reference", "io.modelcontextprotocol.kotlin.sdk.types.Reference"), + level = DeprecationLevel.WARNING, +) +public typealias Reference = io.modelcontextprotocol.kotlin.sdk.types.Reference /** * A reference to a resource or resource template definition. */ -@Serializable -public data class ResourceTemplateReference( - /** - * The URI or URI template of the resource. - */ - val uri: String, -) : Reference { - override val type: String = TYPE - - public companion object { - public const val TYPE: String = "ref/resource" - } -} +@Deprecated( + message = "Use `ResourceTemplateReference` instead", + replaceWith = ReplaceWith( + "ResourceTemplateReference", + "io.modelcontextprotocol.kotlin.sdk.types.ResourceTemplateReference", + ), + level = DeprecationLevel.WARNING, +) +public typealias ResourceTemplateReference = io.modelcontextprotocol.kotlin.sdk.types.ResourceTemplateReference /** * Identifies a prompt. */ -@Serializable -public data class PromptReference( - /** - * The name of the prompt or prompt template - */ - val name: String, -) : Reference { - override val type: String = TYPE - - public companion object { - public const val TYPE: String = "ref/prompt" - } -} +@Deprecated( + message = "Use `PromptReference` instead", + replaceWith = ReplaceWith("PromptReference", "io.modelcontextprotocol.kotlin.sdk.types.PromptReference"), + level = DeprecationLevel.WARNING, +) +public typealias PromptReference = io.modelcontextprotocol.kotlin.sdk.types.PromptReference /** * Identifies a prompt. */ @Serializable -public data class UnknownReference(override val type: String) : Reference +@Deprecated( + message = "This class will be removed.", + level = DeprecationLevel.WARNING, +) +public data class UnknownReference(val type: String) + +@Deprecated( + message = "Use `CompleteRequest` instead", + replaceWith = ReplaceWith("CompleteRequest", "io.modelcontextprotocol.kotlin.sdk.types.CompleteRequest"), + level = DeprecationLevel.WARNING, +) +public object CompleteRequest { + @Deprecated( + message = "Use `CompleteRequestParams.Argument` instead", + replaceWith = ReplaceWith( + "CompleteRequestParams.Argument", + "io.modelcontextprotocol.kotlin.sdk.types.CompleteRequestParams.Argument", + ), + level = DeprecationLevel.WARNING, + ) + public fun Argument( + name: String, + value: String, + ): io.modelcontextprotocol.kotlin.sdk.types.CompleteRequestParams.Argument = + io.modelcontextprotocol.kotlin.sdk.types.CompleteRequestParams.Argument(name, value) +} /** * A request from the client to the server to ask for completion options. */ -@Serializable -public data class CompleteRequest( - val ref: Reference, - /** - * The argument's information - */ - val argument: Argument, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientRequest, - WithMeta { - override val method: Method = Method.Defined.CompletionComplete - - @Serializable - public data class Argument( - /** - * The name of the argument - */ - val name: String, - /** - * The value of the argument to use for completion matching. - */ - val value: String, +@Deprecated( + message = "Use `CompleteRequest` instead", + replaceWith = ReplaceWith("CompleteRequest", "io.modelcontextprotocol.kotlin.sdk.types.CompleteRequest"), + level = DeprecationLevel.WARNING, +) +public fun CompleteRequest( + params: io.modelcontextprotocol.kotlin.sdk.types.CompleteRequestParams, +): io.modelcontextprotocol.kotlin.sdk.types.CompleteRequest = + io.modelcontextprotocol.kotlin.sdk.types.CompleteRequest(params) + +@Deprecated( + message = "Use `CompleteResult` instead", + replaceWith = ReplaceWith("CompleteResult", "io.modelcontextprotocol.kotlin.sdk.types.CompleteResult"), + level = DeprecationLevel.WARNING, +) +public object CompleteResult { + @Deprecated( + message = "Use `CompleteResult.Completion` instead", + replaceWith = ReplaceWith( + "CompleteResult.Completion", + "io.modelcontextprotocol.kotlin.sdk.types.CompleteResult.Completion", + ), + level = DeprecationLevel.WARNING, ) + public fun Completion( + values: List, + total: Int? = null, + hasMore: Boolean? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.CompleteResult.Completion = + io.modelcontextprotocol.kotlin.sdk.types.CompleteResult.Completion(values, total, hasMore) } /** * The server's response to a completion/complete request */ -@Serializable -public data class CompleteResult(val completion: Completion, override val _meta: JsonObject = EmptyJsonObject) : - ServerResult { - @Suppress("CanBeParameter") - @Serializable - public class Completion( - /** - * A list of completion values. Must not exceed 100 items. - */ - public val values: List, - /** - * The total number of completion options available. This can exceed the number of values actually sent in the response. - */ - public val total: Int?, - /** - * Indicates whether there are additional completion options beyond those provided in the current response, even if the exact total is unknown. - */ - public val hasMore: Boolean?, - ) { - init { - require(values.size <= 100) { - "'values' field must not exceed 100 items" - } - } - } -} +@Deprecated( + message = "Use `CompleteResult` instead", + replaceWith = ReplaceWith("CompleteResult", "io.modelcontextprotocol.kotlin.sdk.types.CompleteResult"), + level = DeprecationLevel.WARNING, +) +public fun CompleteResult( + completion: io.modelcontextprotocol.kotlin.sdk.types.CompleteResult.Completion, + meta: JsonObject? = null, +): io.modelcontextprotocol.kotlin.sdk.types.CompleteResult = + io.modelcontextprotocol.kotlin.sdk.types.CompleteResult(completion, meta) /* Roots */ /** * Represents a root directory or file that the server can operate on. */ -@Serializable -public data class Root( - /** - * The URI identifying the root. This *must* start with file:// for now. - */ - val uri: String, - - /** - * An optional name for the root. - */ - val name: String?, -) { - init { - require(uri.startsWith("file://")) { - "'uri' param must start with 'file://'" - } - } -} +@Deprecated( + message = "Use `Root` instead", + replaceWith = ReplaceWith("Root", "io.modelcontextprotocol.kotlin.sdk.types.Root"), + level = DeprecationLevel.WARNING, +) +public typealias Root = io.modelcontextprotocol.kotlin.sdk.types.Root /** * Sent from the server to request a list of root URIs from the client. */ -@Serializable -public class ListRootsRequest(override val _meta: JsonObject = EmptyJsonObject) : - ServerRequest, - WithMeta { - override val method: Method = Method.Defined.RootsList -} +@Deprecated( + message = "Use `ListRootsRequest` instead", + replaceWith = ReplaceWith("ListRootsRequest", "io.modelcontextprotocol.kotlin.sdk.types.ListRootsRequest"), + level = DeprecationLevel.WARNING, +) +public typealias ListRootsRequest = io.modelcontextprotocol.kotlin.sdk.types.ListRootsRequest /** * The client's response to a roots/list request from the server. */ -@Serializable -public class ListRootsResult(public val roots: List, override val _meta: JsonObject = EmptyJsonObject) : - ClientResult +@Deprecated( + message = "Use `ListRootsResult` instead", + replaceWith = ReplaceWith("ListRootsResult", "io.modelcontextprotocol.kotlin.sdk.types.ListRootsResult"), + level = DeprecationLevel.WARNING, +) +public typealias ListRootsResult = io.modelcontextprotocol.kotlin.sdk.types.ListRootsResult + +@Deprecated( + message = "Use `RootsListChangedNotification` instead", + replaceWith = ReplaceWith( + "RootsListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.RootsListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public object RootsListChangedNotification { + @Deprecated( + message = "Use `BaseNotificationParams` instead", + replaceWith = ReplaceWith( + "BaseNotificationParams", + "io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams", + ), + level = DeprecationLevel.WARNING, + ) + public fun Params(meta: JsonObject? = null): io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams = + io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams(meta) +} /** * A notification from the client to the server, informing it that the list of roots has changed. */ -@Serializable -public data class RootsListChangedNotification(override val params: Params = Params()) : ClientNotification { - override val method: Method = Method.Defined.NotificationsRootsListChanged - - @Serializable - public data class Params(override val _meta: JsonObject = EmptyJsonObject) : NotificationParams +@Deprecated( + message = "Use `RootsListChangedNotification` instead", + replaceWith = ReplaceWith( + "RootsListChangedNotification", + "io.modelcontextprotocol.kotlin.sdk.types.RootsListChangedNotification", + ), + level = DeprecationLevel.WARNING, +) +public fun RootsListChangedNotification( + params: io.modelcontextprotocol.kotlin.sdk.types.BaseNotificationParams? = null, +): io.modelcontextprotocol.kotlin.sdk.types.RootsListChangedNotification = + io.modelcontextprotocol.kotlin.sdk.types.RootsListChangedNotification(params) + +@Deprecated( + message = "Use `ElicitRequest` instead", + replaceWith = ReplaceWith( + "ElicitRequest", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitRequest", + ), + level = DeprecationLevel.WARNING, +) +public object CreateElicitationRequest { + public fun RequestedSchema( + properties: JsonObject, + required: List? = null, + ): io.modelcontextprotocol.kotlin.sdk.types.ElicitRequestParams.RequestedSchema = + io.modelcontextprotocol.kotlin.sdk.types.ElicitRequestParams.RequestedSchema(properties, required) } /** * Sent from the server to create an elicitation from the client. */ -@Serializable -public data class CreateElicitationRequest( - public val message: String, - public val requestedSchema: RequestedSchema, - override val _meta: JsonObject = EmptyJsonObject, -) : ServerRequest, - WithMeta { - override val method: Method = Method.Defined.ElicitationCreate - - @Serializable - public data class RequestedSchema( - val properties: JsonObject = EmptyJsonObject, - val required: List? = null, - ) { - @OptIn(ExperimentalSerializationApi::class) - @EncodeDefault - val type: String = "object" +@Deprecated( + message = "Use `ElicitRequest` instead", + replaceWith = ReplaceWith( + "ElicitRequest", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitRequest", + ), + level = DeprecationLevel.WARNING, +) +public fun CreateElicitationRequest( + params: io.modelcontextprotocol.kotlin.sdk.types.ElicitRequestParams, +): io.modelcontextprotocol.kotlin.sdk.types.ElicitRequest = + io.modelcontextprotocol.kotlin.sdk.types.ElicitRequest(params) + +@Deprecated( + message = "Use `ElicitResult` instead", + replaceWith = ReplaceWith( + "ElicitResult", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitResult", + ), + level = DeprecationLevel.WARNING, +) +public object CreateElicitationResult { + @Deprecated( + message = "Use `ElicitResult.Action` instead", + replaceWith = ReplaceWith( + "ElicitResult.Action", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action", + ), + level = DeprecationLevel.WARNING, + ) + public object Action { + @Deprecated( + message = "Use `ElicitResult.Action.Accept` instead", + replaceWith = ReplaceWith( + "ElicitResult.Action.Accept", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action", + ), + level = DeprecationLevel.WARNING, + ) + public val accept: io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action = + io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action.Accept + + @Deprecated( + message = "Use `ElicitResult.Action.Decline` instead", + replaceWith = ReplaceWith( + "ElicitResult.Action.Decline", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action", + ), + level = DeprecationLevel.WARNING, + ) + public val decline: io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action = + io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action.Decline + + @Deprecated( + message = "Use `ElicitResult.Action.Cancel` instead", + replaceWith = ReplaceWith( + "ElicitResult.Action.Cancel", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action", + ), + level = DeprecationLevel.WARNING, + ) + public val cancel: io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action = + io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action.Cancel } } /** * The client's response to an elicitation/create request from the server. */ -@Serializable -public data class CreateElicitationResult( - public val action: Action, - public val content: JsonObject? = null, - override val _meta: JsonObject = EmptyJsonObject, -) : ClientResult { - - init { - require(action == Action.accept || content == null) { - "Content can only be provided for an 'accept' action" - } - } - - @Serializable - public enum class Action { accept, decline, cancel } -} +@Deprecated( + message = "Use `ElicitResult` instead", + replaceWith = ReplaceWith( + "ElicitResult", + "io.modelcontextprotocol.kotlin.sdk.types.ElicitResult", + ), + level = DeprecationLevel.WARNING, +) +public fun CreateElicitationResult( + action: io.modelcontextprotocol.kotlin.sdk.types.ElicitResult.Action, + content: JsonObject? = null, + meta: JsonObject? = null, +): io.modelcontextprotocol.kotlin.sdk.types.ElicitResult = + io.modelcontextprotocol.kotlin.sdk.types.ElicitResult(action, content, meta) /** * Represents an error specific to the MCP protocol. @@ -1756,7 +2246,9 @@ public data class CreateElicitationResult( * @property message The error message. * @property data Additional error data as a JSON object. */ -public class McpError(public val code: Int, message: String, public val data: JsonObject = EmptyJsonObject) : - Exception() { - override val message: String = "MCP error $code: $message" -} +@Deprecated( + message = "Use `McpException` instead", + replaceWith = ReplaceWith("McpException"), + level = DeprecationLevel.WARNING, +) +public typealias McpError = io.modelcontextprotocol.kotlin.sdk.types.McpException diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt index 07a0bf4c..305efe7d 100644 --- a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt @@ -1,315 +1,40 @@ package io.modelcontextprotocol.kotlin.sdk -import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.LoggingMessageNotification.SetLevelRequest -import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.KSerializer -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.descriptors.buildClassSerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.JsonContentPolymorphicSerializer -import kotlinx.serialization.json.JsonDecoder -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonEncoder +import io.modelcontextprotocol.kotlin.sdk.types.error +import io.modelcontextprotocol.kotlin.sdk.types.success import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.JsonPrimitive -import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive -import kotlinx.serialization.json.long -import kotlinx.serialization.json.longOrNull -private val logger = KotlinLogging.logger {} - -internal object ErrorCodeSerializer : KSerializer { - override val descriptor: SerialDescriptor = - PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.ErrorCode", PrimitiveKind.INT) - - override fun serialize(encoder: Encoder, value: ErrorCode) { - encoder.encodeInt(value.code) - } - - override fun deserialize(decoder: Decoder): ErrorCode { - val decodedInt = decoder.decodeInt() - return ErrorCode.Defined.entries.firstOrNull { it.code == decodedInt } - ?: ErrorCode.Unknown(decodedInt) - } -} - -internal object RequestMethodSerializer : KSerializer { - override val descriptor: SerialDescriptor = - PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.Method", PrimitiveKind.STRING) - - override fun serialize(encoder: Encoder, value: Method) { - encoder.encodeString(value.value) - } - - override fun deserialize(decoder: Decoder): Method { - val decodedString = decoder.decodeString() - return Method.Defined.entries.firstOrNull { it.value == decodedString } - ?: Method.Custom(decodedString) - } -} - -internal object StopReasonSerializer : KSerializer { - override val descriptor: SerialDescriptor = - PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.StopReason", PrimitiveKind.STRING) - - override fun serialize(encoder: Encoder, value: StopReason) { - encoder.encodeString(value.value) - } - - override fun deserialize(decoder: Decoder): StopReason { - val decodedString = decoder.decodeString() - return when (decodedString) { - StopReason.StopSequence.value -> StopReason.StopSequence - StopReason.MaxTokens.value -> StopReason.MaxTokens - StopReason.EndTurn.value -> StopReason.EndTurn - else -> StopReason.Other(decodedString) - } - } -} - -internal object ReferencePolymorphicSerializer : JsonContentPolymorphicSerializer(Reference::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - when (element.jsonObject.getValue("type").jsonPrimitive.content) { - ResourceTemplateReference.TYPE -> ResourceTemplateReference.serializer() - PromptReference.TYPE -> PromptReference.serializer() - else -> UnknownReference.serializer() - } -} - -internal object PromptMessageContentPolymorphicSerializer : - JsonContentPolymorphicSerializer(PromptMessageContent::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - when (element.jsonObject.getValue("type").jsonPrimitive.content) { - ImageContent.TYPE -> ImageContent.serializer() - TextContent.TYPE -> TextContent.serializer() - EmbeddedResource.TYPE -> EmbeddedResource.serializer() - AudioContent.TYPE -> AudioContent.serializer() - else -> UnknownContent.serializer() - } -} - -internal object PromptMessageContentMultimodalPolymorphicSerializer : - JsonContentPolymorphicSerializer(PromptMessageContentMultimodal::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - when (element.jsonObject.getValue("type").jsonPrimitive.content) { - ImageContent.TYPE -> ImageContent.serializer() - TextContent.TYPE -> TextContent.serializer() - AudioContent.TYPE -> AudioContent.serializer() - else -> UnknownContent.serializer() - } -} - -internal object ResourceContentsPolymorphicSerializer : - JsonContentPolymorphicSerializer(ResourceContents::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy { - val jsonObject = element.jsonObject - return when { - jsonObject.contains("text") -> TextResourceContents.serializer() - jsonObject.contains("blob") -> BlobResourceContents.serializer() - else -> UnknownResourceContents.serializer() - } - } -} - -internal fun selectRequestDeserializer(method: String): DeserializationStrategy { - selectClientRequestDeserializer(method)?.let { return it } - selectServerRequestDeserializer(method)?.let { return it } - return CustomRequest.serializer() -} - -internal fun selectClientRequestDeserializer(method: String): DeserializationStrategy? = when (method) { - Method.Defined.Ping.value -> PingRequest.serializer() - Method.Defined.Initialize.value -> InitializeRequest.serializer() - Method.Defined.CompletionComplete.value -> CompleteRequest.serializer() - Method.Defined.LoggingSetLevel.value -> SetLevelRequest.serializer() - Method.Defined.PromptsGet.value -> GetPromptRequest.serializer() - Method.Defined.PromptsList.value -> ListPromptsRequest.serializer() - Method.Defined.ResourcesList.value -> ListResourcesRequest.serializer() - Method.Defined.ResourcesTemplatesList.value -> ListResourceTemplatesRequest.serializer() - Method.Defined.ResourcesRead.value -> ReadResourceRequest.serializer() - Method.Defined.ResourcesSubscribe.value -> SubscribeRequest.serializer() - Method.Defined.ResourcesUnsubscribe.value -> UnsubscribeRequest.serializer() - Method.Defined.ToolsCall.value -> CallToolRequest.serializer() - Method.Defined.ToolsList.value -> ListToolsRequest.serializer() - else -> null -} - -private fun selectClientNotificationDeserializer(element: JsonElement): DeserializationStrategy? = - when (element.jsonObject.getValue("method").jsonPrimitive.content) { - Method.Defined.NotificationsCancelled.value -> CancelledNotification.serializer() - Method.Defined.NotificationsProgress.value -> ProgressNotification.serializer() - Method.Defined.NotificationsInitialized.value -> InitializedNotification.serializer() - Method.Defined.NotificationsRootsListChanged.value -> RootsListChangedNotification.serializer() - else -> null - } - -internal object ClientNotificationPolymorphicSerializer : - JsonContentPolymorphicSerializer(ClientNotification::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - selectClientNotificationDeserializer(element) - ?: UnknownMethodRequestOrNotification.serializer() -} - -internal fun selectServerRequestDeserializer(method: String): DeserializationStrategy? = when (method) { - Method.Defined.Ping.value -> PingRequest.serializer() - Method.Defined.SamplingCreateMessage.value -> CreateMessageRequest.serializer() - Method.Defined.RootsList.value -> ListRootsRequest.serializer() - else -> null -} - -internal fun selectServerNotificationDeserializer(element: JsonElement): DeserializationStrategy? = - when (element.jsonObject.getValue("method").jsonPrimitive.content) { - Method.Defined.NotificationsCancelled.value -> CancelledNotification.serializer() - Method.Defined.NotificationsProgress.value -> ProgressNotification.serializer() - Method.Defined.NotificationsMessage.value -> LoggingMessageNotification.serializer() - Method.Defined.NotificationsResourcesUpdated.value -> ResourceUpdatedNotification.serializer() - Method.Defined.NotificationsResourcesListChanged.value -> ResourceListChangedNotification.serializer() - Method.Defined.NotificationsToolsListChanged.value -> ToolListChangedNotification.serializer() - Method.Defined.NotificationsPromptsListChanged.value -> PromptListChangedNotification.serializer() - else -> null - } - -internal object ServerNotificationPolymorphicSerializer : - JsonContentPolymorphicSerializer(ServerNotification::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - selectServerNotificationDeserializer(element) - ?: UnknownMethodRequestOrNotification.serializer() -} - -internal object NotificationPolymorphicSerializer : - JsonContentPolymorphicSerializer(Notification::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - selectClientNotificationDeserializer(element) - ?: selectServerNotificationDeserializer(element) - ?: UnknownMethodRequestOrNotification.serializer() -} - -internal object RequestPolymorphicSerializer : - JsonContentPolymorphicSerializer(Request::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy { - val method = element.jsonObject.getOrElse("method") { null }?.jsonPrimitive?.content ?: run { - logger.error { "No method in $element" } - error("No method in $element") - } - - return selectClientRequestDeserializer(method) - ?: selectServerRequestDeserializer(method) - ?: UnknownMethodRequestOrNotification.serializer() - } -} - -private fun selectServerResultDeserializer(element: JsonElement): DeserializationStrategy? { - val jsonObject = element.jsonObject - return when { - jsonObject.contains("tools") -> ListToolsResult.serializer() - jsonObject.contains("resources") -> ListResourcesResult.serializer() - jsonObject.contains("resourceTemplates") -> ListResourceTemplatesResult.serializer() - jsonObject.contains("prompts") -> ListPromptsResult.serializer() - jsonObject.contains("capabilities") -> InitializeResult.serializer() - jsonObject.contains("description") -> GetPromptResult.serializer() - jsonObject.contains("completion") -> CompleteResult.serializer() - jsonObject.contains("toolResult") -> CompatibilityCallToolResult.serializer() - jsonObject.contains("contents") -> ReadResourceResult.serializer() - jsonObject.contains("content") -> CallToolResult.serializer() - else -> null - } -} - -private fun selectClientResultDeserializer(element: JsonElement): DeserializationStrategy? { - val jsonObject = element.jsonObject - return when { - jsonObject.contains("model") -> CreateMessageResult.serializer() - jsonObject.contains("roots") -> ListRootsResult.serializer() - jsonObject.contains("action") -> CreateElicitationResult.serializer() - else -> null - } -} - -internal object ServerResultPolymorphicSerializer : - JsonContentPolymorphicSerializer(ServerResult::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - selectServerResultDeserializer(element) - ?: EmptyRequestResult.serializer() -} - -internal object ClientResultPolymorphicSerializer : - JsonContentPolymorphicSerializer(ClientResult::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - selectClientResultDeserializer(element) - ?: EmptyRequestResult.serializer() -} - -internal object RequestResultPolymorphicSerializer : - JsonContentPolymorphicSerializer(RequestResult::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy = - selectClientResultDeserializer(element) - ?: selectServerResultDeserializer(element) - ?: EmptyRequestResult.serializer() -} - -internal object JSONRPCMessagePolymorphicSerializer : - JsonContentPolymorphicSerializer(JSONRPCMessage::class) { - override fun selectDeserializer(element: JsonElement): DeserializationStrategy { - val jsonObject = element.jsonObject - return when { - jsonObject.contains("message") -> JSONRPCError.serializer() - !jsonObject.contains("method") -> JSONRPCResponse.serializer() - jsonObject.contains("id") -> JSONRPCRequest.serializer() - else -> JSONRPCNotification.serializer() - } - } -} - -public val EmptyJsonObject: JsonObject = JsonObject(emptyMap()) - -public class RequestIdSerializer : KSerializer { - override val descriptor: SerialDescriptor = buildClassSerialDescriptor("RequestId") - - override fun deserialize(decoder: Decoder): RequestId { - val jsonDecoder = decoder as? JsonDecoder ?: error("Can only deserialize JSON") - val element = jsonDecoder.decodeJsonElement() - - return when (element) { - is JsonPrimitive -> when { - element.isString -> RequestId.StringId(element.content) - element.longOrNull != null -> RequestId.NumberId(element.long) - else -> error("Invalid RequestId type") - } - - else -> error("Invalid RequestId format") - } - } - - override fun serialize(encoder: Encoder, value: RequestId) { - val jsonEncoder = encoder as? JsonEncoder ?: error("Can only serialize JSON") - when (value) { - is RequestId.StringId -> jsonEncoder.encodeString(value.value) - is RequestId.NumberId -> jsonEncoder.encodeLong(value.value) - } - } -} +@Deprecated( + message = "Use `io.modelcontextprotocol.kotlin.sdk.types.EmptyJsonObject` instead", + replaceWith = ReplaceWith("EmptyJsonObject", "io.modelcontextprotocol.kotlin.sdk.types.EmptyJsonObject"), + level = DeprecationLevel.WARNING, +) +public val EmptyJsonObject: JsonObject = io.modelcontextprotocol.kotlin.sdk.types.EmptyJsonObject /** * Creates a [CallToolResult] with single [TextContent] and [meta]. */ -public fun CallToolResult.Companion.ok(content: String, meta: JsonObject = EmptyJsonObject): CallToolResult = - CallToolResult( - content = listOf(TextContent(content)), - isError = false, - _meta = meta, - ) +@Deprecated( + message = "Use `CallToolResult.success` instead", + replaceWith = ReplaceWith("CallToolResult.Companion.success"), + level = DeprecationLevel.WARNING, +) +public fun CallToolResult.ok( + content: String, + meta: JsonObject = EmptyJsonObject, +): io.modelcontextprotocol.kotlin.sdk.types.CallToolResult = + io.modelcontextprotocol.kotlin.sdk.types.CallToolResult.success(content, meta) /** * Creates a [CallToolResult] with single [TextContent] and [meta], with `isError` being true. */ -public fun CallToolResult.Companion.error(content: String, meta: JsonObject = EmptyJsonObject): CallToolResult = - CallToolResult( - content = listOf(TextContent(content)), - isError = true, - _meta = meta, - ) +@Deprecated( + message = "Use `CallToolResult.error` instead", + replaceWith = ReplaceWith("CallToolResult.Companion.error"), + level = DeprecationLevel.WARNING, +) +public fun CallToolResult.error( + content: String, + meta: JsonObject = EmptyJsonObject, +): io.modelcontextprotocol.kotlin.sdk.types.CallToolResult = + io.modelcontextprotocol.kotlin.sdk.types.CallToolResult.error(content, meta) diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/McpException.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/McpException.kt new file mode 100644 index 00000000..fb6e1ee5 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/McpException.kt @@ -0,0 +1,14 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.json.JsonElement + +/** + * Represents an error specific to the MCP protocol. + * + * @property code The error code. + * @property message The error message. + * @property data Additional error data as a JSON object. + */ +public class McpException(public val code: Int, message: String, public val data: JsonElement? = null) : Exception() { + override val message: String = "MCP error $code: $message" +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PingRequest.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PingRequest.kt new file mode 100644 index 00000000..575d3dbd --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PingRequest.kt @@ -0,0 +1,14 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable + +@Serializable +public data class PingRequest(override val params: BaseRequestParams? = null) : + ClientRequest, + ServerRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + override val method: Method = Method.Defined.Ping +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/capabilities.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/capabilities.kt new file mode 100644 index 00000000..cff3b890 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/capabilities.kt @@ -0,0 +1,145 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * Describes an MCP (Model Context Protocol) implementation. + * + * This metadata helps clients identify and display information about servers or clients, + * including their name, version, and optional branding elements like icons and website links. + * + * @property name The programmatic identifier for this implementation. + * Intended for logical use and API identification. If [title] is not provided, + * this should be used as a fallback display name. + * @property version The version string of this implementation (e.g., "1.0.0", "2.1.3-beta"). + * @property title Optional human-readable display name for this implementation. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * If not provided, [name] should be used for display purposes. + * @property websiteUrl Optional URL of the website for this implementation. + * Can be used to provide documentation, support, or additional information. + * @property icons Optional set of sized icons that clients can display in their user interface. + * See [Icon] for supported formats and requirements. + */ +@Serializable +public data class Implementation( + val name: String, + val version: String, + val title: String? = null, + val websiteUrl: String? = null, + val icons: List? = null, +) + +/** + * Capabilities that a client may support. + * + * Known capabilities are defined here, but this is not a closed set: any client + * can define its own additional capabilities through the [experimental] field. + * + * The presence of a capability object (non-null value) indicates that the client + * supports that capability. + * + * @property sampling Present if the client supports sampling from an LLM. + * @property roots Present if the client supports listing roots. + * @property elicitation Present if the client supports elicitation from the server. + * @property experimental Experimental, non-standard capabilities that the client supports. + * Keys are capability names, values are capability-specific configuration objects. + */ +@Serializable +public data class ClientCapabilities( + public val sampling: JsonObject? = null, + public val roots: Roots? = null, + public val elicitation: JsonObject? = null, + public val experimental: JsonObject? = null, +) { + + public companion object { + public val sampling: JsonObject = EmptyJsonObject + public val elicitation: JsonObject = EmptyJsonObject + } + + /** + * Indicates that the client supports listing roots. + * + * Roots are the top-level directories or locations that the server can access. + * When present (non-null), the server can query available roots and optionally + * receive notifications when the roots list changes. + * + * @property listChanged Whether the client supports notifications for changes to the roots list. + * If true, the client will send notifications when roots are added or removed. + */ + @Serializable + public data class Roots(val listChanged: Boolean? = null) +} + +/** + * Capabilities that a server may support. + * + * Known capabilities are defined here, but this is not a closed set: any server + * can define its own additional capabilities through the [experimental] field. + * + * The presence of a capability object (non-null value) indicates that the server + * supports that capability. + * + * @property tools Present if the server offers any tools to call. + * @property resources Present if the server offers any resources to read. + * @property prompts Present if the server offers any prompt templates. + * @property logging Present if the server supports sending log messages to the client. + * @property completions Present if the server supports argument autocompletion suggestions. + * Keys are capability names, values are capability-specific configuration objects. + * @property experimental Experimental, non-standard capabilities that the server supports. + */ +@Serializable +public data class ServerCapabilities( + val tools: Tools? = null, + val resources: Resources? = null, + val prompts: Prompts? = null, + val logging: JsonObject? = null, + val completions: JsonObject? = null, + val experimental: JsonObject? = null, +) { + + public companion object { + public val Logging: JsonObject = EmptyJsonObject + public val Completions: JsonObject = EmptyJsonObject + } + + /** + * Indicates that the server offers tools to call. + * + * When present (non-null), clients can list and invoke tools (functions, actions, etc.) + * provided by the server. + * + * @property listChanged Whether this server supports notifications for changes to the tool list. + * If true, the server will send notifications when tools are added, modified, or removed. + */ + @Serializable + public data class Tools(val listChanged: Boolean? = null) + + /** + * Indicates that the server offers resources to read. + * + * When present (non-null), clients can list and read resources (files, data sources, etc.) + * provided by the server. + * + * @property listChanged Whether this server supports notifications for changes to the resource list. + * If true, the server will send notifications when resources are added or removed. + * @property subscribe Whether this server supports subscribing to resource updates. + * If true, clients can subscribe to receive notifications when specific + * resources are modified. + */ + @Serializable + public data class Resources(val listChanged: Boolean? = null, val subscribe: Boolean? = null) + + /** + * Indicates that the server offers prompt templates. + * + * When present (non-null), clients can list and invoke prompts provided by the server. + * + * @property listChanged Whether this server supports notifications for changes to the prompt list. + * If true, the server will send notifications when prompts are added, modified, or removed. + */ + @Serializable + public data class Prompts(val listChanged: Boolean? = null) +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/common.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/common.kt new file mode 100644 index 00000000..f539c419 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/common.kt @@ -0,0 +1,164 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +// ============================================================================ +// Protocol Version Constants +// ============================================================================ + +public const val LATEST_PROTOCOL_VERSION: String = "2025-03-26" + +public val SUPPORTED_PROTOCOL_VERSIONS: List = listOf( + LATEST_PROTOCOL_VERSION, + "2024-11-05", +) + +// ============================================================================ +// Base Interfaces +// ============================================================================ + +/** + * Represents an entity that includes additional metadata in its responses. + */ +@Serializable +public sealed interface WithMeta { + @SerialName("_meta") + public val meta: JsonObject? +} + +// ============================================================================ +// Tokens +// ============================================================================ + +/** + * A progress token, used to associate progress notifications with the original request. + */ +public typealias ProgressToken = RequestId + +public fun ProgressToken(value: String): ProgressToken = RequestId(value) + +public fun ProgressToken(value: Long): ProgressToken = RequestId(value) + +// ============================================================================ +// Visual Elements +// ============================================================================ + +/** + * An optionally sized icon that can be displayed in a user interface. + * + * Icons help clients provide visual branding and identification for MCP implementations. + * + * **Security considerations:** + * - Consumers SHOULD ensure URLs serving icons are from the same domain as the client/server + * or a trusted domain to prevent malicious content. + * - Consumers SHOULD take appropriate precautions when rendering SVGs as they can contain + * executable JavaScript. Consider sanitizing SVG content or rendering in isolated contexts. + * + * @property src A standard URI pointing to an icon resource. + * Maybe an HTTP/HTTPS URL or a data: URI with Base64-encoded image data. + * Example: "https://example.com/icon.png" or "data:image/png;base64,iVBORw0KG..." + * @property mimeType Optional MIME type override if the source MIME type is missing or generic. + * For example, "image/png", "image/jpeg", or "image/svg+xml". + * Useful when the URL doesn't include a file extension or uses a generic MIME type. + * @property sizes Optional array of strings that specify sizes at which the icon can be used. + * Each string should be in WxH format (e.g., "48x48", "96x96") or "any" for + * scalable formats like SVG. If not provided, the client should assume that + * the icon can be used at any size. + * @property theme Optional specifier for the theme this icon is designed for. + * [Theme.Light] indicates the icon is designed for a light background, + * [Theme.Dark] indicates the icon is designed for a dark background. + * If not provided, the client should assume the icon can be used with any theme. + */ +@Serializable +public data class Icon( + val src: String, + val mimeType: String? = null, + val sizes: List? = null, + val theme: Theme? = null, +) { + /** + * The theme context for which an icon is designed. + * + * @property Light Icon designed for use with a light background (typically darker icon). + * @property Dark Icon designed for use with a dark background (typically lighter icon). + */ + @Serializable + public enum class Theme { + /** Icon designed for use with a light background */ + @SerialName("light") + Light, + + /** Icon designed for use with a dark background */ + @SerialName("dark") + Dark, + } +} + +// ============================================================================ +// Roles and References +// ============================================================================ + +/** + * The sender or recipient of messages and data in a conversation. + */ +@Serializable +public enum class Role { + @SerialName("user") + User, + + @SerialName("assistant") + Assistant, +} + +/** + * Base interface for reference types in the protocol. + * + * References are used to point to other entities (prompts, resources, etc.) + * without including their full definitions. + */ +@Serializable(with = ReferencePolymorphicSerializer::class) +public sealed interface Reference { + public val type: ReferenceType +} + +@Serializable +public enum class ReferenceType(public val value: String) { + @SerialName("ref/prompt") + Prompt("ref/prompt"), + + @SerialName("ref/resource") + ResourceTemplate("ref/resource"), +} + +// ============================================================================ +// Annotations and Metadata +// ============================================================================ + +/** + * Optional annotations for the client. + * + * The client can use annotations to inform how objects are used or displayed. + * + * @property audience Describes who the intended customer of this object or data is. + * Can include multiple entries to indicate content useful for multiple audiences + * (e.g., [Role.user, Role.assistant]). + * @property priority Describes how important this data is for operating the server. + * A value of 1.0 means "most important" and indicates that the data is effectively required, + * while 0.0 means "least important" and indicates that the data is entirely optional. + * Should be a value between 0.0 and 1.0. + * @property lastModified The moment the resource was last modified, as an ISO 8601 formatted string + * (e.g., "2025-01-12T15:00:58Z"). + * Examples: last activity timestamp in an open file, timestamp when the resource was attached, etc. + */ +@Serializable +public data class Annotations( + val audience: List? = null, + val priority: Double? = null, + val lastModified: String? = null, +) { + init { + require(priority == null || priority in 0.0..1.0) { "Priority must be between 0.0 and 1.0" } + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/completion.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/completion.kt new file mode 100644 index 00000000..e0c4295e --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/completion.kt @@ -0,0 +1,93 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * A request from the client to the server to ask for completion options. + * + * @property params The request parameters containing the argument to complete and its context. + */ +@Serializable +public data class CompleteRequest(override val params: CompleteRequestParams) : ClientRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + public override val method: Method = Method.Defined.CompletionComplete +} + +/** + * Parameters for the completion request. + * + * @property argument The argument's information for which completion options are requested. + * @property ref A reference to either a prompt or resource template to complete within. + * @property context Additional, optional context for generating completions. + */ +@Serializable +public data class CompleteRequestParams( + val argument: Argument, + val ref: Reference, + val context: Context? = null, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams { + /** + * The argument for which completion is being requested. + * + * @property name The name of the argument being completed. + * @property value The partial value of the argument to use for completion matching. + * This is typically the text the user has typed so far. + */ + @Serializable + public data class Argument(val name: String, val value: String) + + /** + * Additional context to help generate more relevant completions. + * + * @property arguments Previously-resolved variables in a URI template or prompt. + * These can be used to provide context-aware completions. + * For example, if completing a file path, this might contain the repository or directory context. + */ + @Serializable + public data class Context(val arguments: Map? = null) +} + +/** + * The server's response to a [CompleteRequest]. + * + * Provides completion options for prompt or resource template arguments, + * along with pagination information if there are many possible completions. + * + * @property completion The completion options and metadata about available results. + * @property meta Optional metadata for this response. See MCP specification for details on _meta usage. + */ +@Serializable +public data class CompleteResult( + public val completion: Completion, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult { + + /** + * Completion options and pagination information. + * + * @property values An array of completion values. Must not exceed 100 items. + * Each value represents a possible completion for the requested argument. + * @property total The total number of completion options available. + * This can exceed the number of values actually sent in the response, + * indicating that pagination or filtering may be needed. + * @property hasMore Indicates whether there are additional completion options beyond + * those provided in the current response, even if the exact total is unknown. + * Use this when the complete set of completions is too large to calculate upfront. + */ + @Serializable + public data class Completion(val values: List, val total: Int? = null, val hasMore: Boolean? = null) { + init { + require(values.size <= 100) { + "Completion 'values' must not exceed 100 items, got ${values.size}" + } + } + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/content.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/content.kt new file mode 100644 index 00000000..0e6377f5 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/content.kt @@ -0,0 +1,163 @@ +@file:OptIn(ExperimentalSerializationApi::class) + +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +@Serializable +public enum class ContentTypes(public val value: String) { + @SerialName("text") + TEXT("text"), + + @SerialName("image") + IMAGE("image"), + + @SerialName("audio") + AUDIO("audio"), + + @SerialName("resource_link") + RESOURCE_LINK("resource_link"), + + @SerialName("resource") + EMBEDDED_RESOURCE("resource"), +} + +@Serializable(with = ContentBlockPolymorphicSerializer::class) +public sealed interface ContentBlock : WithMeta { + public val type: ContentTypes +} + +@Serializable(with = MediaContentPolymorphicSerializer::class) +public sealed interface MediaContent : ContentBlock + +/** + * Text provided to or from an LLM. + * + * @property text The text content of the message. + * @property annotations Optional annotations for the client. + * @property meta property/parameter is reserved by MCP to allow clients and servers + * to attach additional metadata to their interactions. + */ +@Serializable +public data class TextContent( + val text: String, + val annotations: Annotations? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : MediaContent { + @EncodeDefault + public override val type: ContentTypes = ContentTypes.TEXT +} + +/** + * An image provided to or from an LLM. + * + * @property data The base64-encoded image data. + * @property mimeType The MIME type of the image. Different providers may support different image types. + * @property annotations Optional annotations for the client. + * @property meta property/parameter is reserved by MCP to allow clients and servers + * to attach additional metadata to their interactions. + */ +@Serializable +public data class ImageContent( + val data: String, + val mimeType: String, + val annotations: Annotations? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : MediaContent { + @EncodeDefault + public override val type: ContentTypes = ContentTypes.IMAGE +} + +/** + * Audio provided to or from an LLM. + * + * @property data The base64-encoded audio data. + * @property mimeType The MIME type of the audio. Different providers may support different audio types. + * @property annotations Optional annotations for the client. + * @property meta property/parameter is reserved by MCP to allow clients and servers + * to attach additional metadata to their interactions. + */ +@Serializable +public data class AudioContent( + val data: String, + val mimeType: String, + val annotations: Annotations? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : MediaContent { + @EncodeDefault + public override val type: ContentTypes = ContentTypes.AUDIO +} + +/** + * A resource that the server is capable of reading, included in a prompt or tool call result. + * + * Note: resource links returned by tools are not guaranteed to appear in the results of `resources/list` requests. + * + * @property name Intended for programmatic or logical use + * but used as a display name in past specs or fallback (if the title isn’t present). + * @property uri The URI of this resource. + * @property title Intended for UI and end-user contexts — optimized to be human-readable and easily understood, + * even by those unfamiliar with domain-specific terminology. + * + * If not provided, the name should be used for display + * (except for Tool, where `annotations.title` should be given precedence over using `name`, if present). + * @property size The size of the raw resource content, in bytes (i.e., before base64 encoding or any tokenization), + * if known. + * + * Hosts can use this to display file sizes and estimate context window usage. + * @property mimeType The MIME type of this resource, if known. + * @property icons Optional set of sized icons that clients can display in their user interface. + * See [Icon] for supported formats and requirements. + * @property description A description of what this resource represents. + * + * Clients can use this to improve the LLM’s understanding of available resources. + * It can be thought of as a "hint" to the model. + * @property annotations Optional annotations for the client. + * @property meta property/parameter is reserved by MCP to allow clients and servers + * to attach additional metadata to their interactions. + */ +@Serializable +public data class ResourceLink( + val name: String, + val uri: String, + val title: String? = null, + val size: Long? = null, + val mimeType: String? = null, + val icons: List? = null, + val description: String? = null, + val annotations: Annotations? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ContentBlock, + ResourceLike { + @EncodeDefault + public override val type: ContentTypes = ContentTypes.RESOURCE_LINK +} + +/** + * The contents of a resource, embedded into a prompt or tool call result. + * + * It is up to the client how best to render embedded resources for the benefit of the LLM and/or the user. + * + * @property resource The resource contents. + * @property annotations Optional annotations for the client. + * @property meta property/parameter is reserved by MCP to allow clients and servers + * to attach additional metadata to their interactions. + */ +@Serializable +public data class EmbeddedResource( + val resource: ResourceContents, + val annotations: Annotations? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ContentBlock { + @EncodeDefault + public override val type: ContentTypes = ContentTypes.EMBEDDED_RESOURCE +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/elicitation.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/elicitation.kt new file mode 100644 index 00000000..75faa42b --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/elicitation.kt @@ -0,0 +1,111 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * A request from the server to elicit additional information from the user via the client. + * + * This request type allows servers to prompt users for structured input through forms + * or dialogs presented by the client. The server defines a schema for the requested data, + * and the client presents an appropriate UI to collect this information. + * + * @property params The elicitation parameters including the message and requested schema. + */ +@Serializable +public data class ElicitRequest(override val params: ElicitRequestParams) : ServerRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + public override val method: Method = Method.Defined.ElicitationCreate +} + +/** + * Parameters for an elicitation/create request. + * + * @property message The message to present to the user. This should clearly explain + * what information is being requested and why. + * @property requestedSchema A restricted subset of JSON Schema defining the structure + * of the requested data. Only top-level properties are allowed, + * without nesting. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class ElicitRequestParams( + val message: String, + val requestedSchema: RequestedSchema, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams { + + /** + * A restricted JSON Schema for elicitation requests. + * + * Only supports top-level primitive properties without nesting. Each property + * represents a field in the form or dialog presented to the user. + * + * @property properties A map of property names to their schema definitions. + * Each property must be a primitive type (string, number, boolean). + * @property required Optional list of property names that must be provided by the user. + * If omitted, all fields are considered optional. + * @property type Always "object" for elicitation schemas. + */ + @Serializable + public data class RequestedSchema(val properties: JsonObject, val required: List? = null) { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + val type: String = "object" + } +} + +/** + * The client's response to an [ElicitRequest]. + * + * Represents the user's action and, if accepted, the submitted form data. + * + * @property action The user action in response to the elicitation prompt. + * @property content The submitted form data, only present when [action] is [Action.Accept]. + * Contains values matching the requested schema, where keys correspond + * to property names and values are primitives (string, number, or boolean). + * @property meta Optional metadata for this response. + * @throws IllegalArgumentException if content is provided with a non-accept action. + */ +@Serializable +public data class ElicitResult( + val action: Action, + val content: JsonObject? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ClientResult { + + init { + require(action == Action.Accept || content == null) { + "Content can only be provided when action is 'accept', got action=$action with content" + } + } + + /** + * The user's response action to an elicitation request. + * + * @property Accept User submitted the form/confirmed the action. Content will be provided. + * @property Decline User explicitly declined the action. No content provided. + * @property Cancel User dismissed the dialog without making an explicit choice. No content provided. + */ + @Serializable + public enum class Action { + /** User submitted the form/confirmed the action */ + @SerialName("accept") + Accept, + + /** User explicitly declined the action */ + @SerialName("decline") + Decline, + + /** User dismissed without making an explicit choice */ + @SerialName("cancel") + Cancel, + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/initialize.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/initialize.kt new file mode 100644 index 00000000..6a2fd5bd --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/initialize.kt @@ -0,0 +1,74 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * This request is sent from the client to the server when it first connects, + * asking it to begin initialization. + * + * The initialize request is the first message exchanged in the MCP protocol handshake. + * It allows the client to communicate its capabilities and protocol version to the server, + * and receive the server's capabilities in response. + * + * @property params The initialization parameters including protocol version and client capabilities. + */ +@Serializable +public data class InitializeRequest(override val params: InitializeRequestParams) : ClientRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + override val method: Method = Method.Defined.Initialize +} + +/** + * Parameters for an initialize request. + * + * @property protocolVersion The latest version of the Model Context Protocol that the client supports. + * The client MAY decide to support older versions as well. + * The server will respond with its preferred version, which may differ. + * @property capabilities The capabilities that this client supports. + * Describes which optional features the client has implemented. + * @property clientInfo Information about the client implementation, including name, version, and branding. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class InitializeRequestParams( + val protocolVersion: String, + val capabilities: ClientCapabilities, + val clientInfo: Implementation, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * After receiving an [InitializeRequest] from the client, the server sends this response. + * + * The server communicates its chosen protocol version, capabilities, and optional + * instructions for how to effectively use its features. + * + * @property protocolVersion The version of the Model Context Protocol that the server wants to use. + * This may not match the version that the client requested. + * If the client cannot support this version, it MUST disconnect. + * @property capabilities The capabilities that this server supports. + * Describes which optional features the server has implemented. + * @property serverInfo Information about the server implementation, including name, version, and branding. + * @property instructions Optional instructions describing how to use the server and its features. + * Clients can use this to improve the LLM's understanding of available + * tools, resources, etc. It can be thought of as a "hint" to the model. + * For example, this information MAY be added to the system prompt to help + * the LLM make better use of the server's capabilities. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class InitializeResult( + val protocolVersion: String = LATEST_PROTOCOL_VERSION, + val capabilities: ServerCapabilities, + val serverInfo: Implementation, + val instructions: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/jsonRpc.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/jsonRpc.kt new file mode 100644 index 00000000..66229001 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/jsonRpc.kt @@ -0,0 +1,225 @@ +@file:OptIn(ExperimentalAtomicApi::class, ExperimentalSerializationApi::class) + +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.decodeFromJsonElement +import kotlinx.serialization.json.encodeToJsonElement +import kotlin.concurrent.atomics.AtomicLong +import kotlin.concurrent.atomics.ExperimentalAtomicApi +import kotlin.concurrent.atomics.incrementAndFetch +import kotlin.jvm.JvmInline + +public const val JSONRPC_VERSION: String = "2.0" + +private val REQUEST_MESSAGE_ID: AtomicLong = AtomicLong(0L) + +public fun RequestId(value: String): RequestId = RequestId.StringId(value) + +public fun RequestId(value: Long): RequestId = RequestId.NumberId(value) + +/** + * A uniquely identifying ID for a request in JSON-RPC. + */ +@Serializable(with = RequestIdPolymorphicSerializer::class) +public sealed interface RequestId { + + @JvmInline + @Serializable + public value class StringId(public val value: String) : RequestId + + @JvmInline + @Serializable + public value class NumberId(public val value: Long) : RequestId +} + +/** + * Converts the request to a JSON-RPC request. + * + * @return The JSON-RPC request representation. + */ +public fun Request.toJSON(): JSONRPCRequest = JSONRPCRequest( + method = method.value, + params = this.params?.let { + McpJson.encodeToJsonElement(it) + }, +) + +/** + * Decodes a JSON-RPC request into a protocol-specific [Request]. + * + * @return The decoded [Request] + */ +public fun JSONRPCRequest.fromJSON(): Request = + McpJson.decodeFromJsonElement(McpJson.encodeToJsonElement(this)) + +/** + * Converts the notification to a JSON-RPC notification. + * + * @return The JSON-RPC notification representation. + */ +public fun Notification.toJSON(): JSONRPCNotification = JSONRPCNotification( + method = method.value, + params = this.params?.let { + McpJson.encodeToJsonElement(it) + }, +) + +/** + * Decodes a JSON-RPC notification into a protocol-specific [Notification]. + * + * @return The decoded [Notification]. + */ +internal fun JSONRPCNotification.fromJSON(): Notification = + McpJson.decodeFromJsonElement(McpJson.encodeToJsonElement(this)) + +/** + * Base interface for all JSON-RPC 2.0 messages. + * + * All messages in the MCP protocol follow the JSON-RPC 2.0 specification. + */ +@Serializable(with = JSONRPCMessagePolymorphicSerializer::class) +public sealed interface JSONRPCMessage { + public val jsonrpc: String +} + +// ============================================================================ +// JSONRPCRequest +// ============================================================================ + +/** + * A request that expects a response. + * + * Requests are identified by a unique [id] and specify a [method] to invoke. + * The server or client (depending on direction) must respond with either a + * [JSONRPCResponse] or [JSONRPCError] that has the same [id]. + * + * @property jsonrpc Always "2.0" to indicate JSON-RPC 2.0 protocol. + * @property id A unique identifier for this request. The response will include the same ID. + * Can be a string or number. + * @property method The name of the method to invoke (e.g., "tools/list", "resources/read"). + * @property params Optional parameters for the method. Structure depends on the specific method. + */ +@Serializable +public data class JSONRPCRequest( + val id: RequestId = RequestId(REQUEST_MESSAGE_ID.incrementAndFetch()), + val method: String, + val params: JsonElement? = null, +) : JSONRPCMessage { + @EncodeDefault + override val jsonrpc: String = JSONRPC_VERSION +} + +// ============================================================================ +// JSONRPCNotification +// ============================================================================ + +/** + * A notification which does not expect a response. + * + * Notifications are fire-and-forget messages. They do not have an `id` and + * the recipient does not send any response (neither success nor error). + * + * Examples: progress updates, resource change notifications, log messages. + * + * @property jsonrpc Always "2.0" to indicate JSON-RPC 2.0 protocol. + * @property method The name of the notification method (e.g., "notifications/progress", + * "notifications/resources/updated"). + * @property params Optional parameters for the notification. Structure depends on the specific method. + */ +@Serializable +public data class JSONRPCNotification(val method: String, val params: JsonElement? = null) : JSONRPCMessage { + @EncodeDefault + override val jsonrpc: String = JSONRPC_VERSION +} + +// ============================================================================ +// JSONRPCResponse +// ============================================================================ + +/** + * A successful (non-error) response to a request. + * + * Sent in response to a [JSONRPCRequest] when the method execution succeeds. + * The [id] must match the [id] of the original request. + * + * @property jsonrpc Always "2.0" to indicate JSON-RPC 2.0 protocol. + * @property id The identifier from the original request. Used to match responses to requests. + * @property result The result of the method execution. Structure depends on the method that was called. + */ +@Serializable +public data class JSONRPCResponse(val id: RequestId, val result: RequestResult = EmptyResult()) : JSONRPCMessage { + @EncodeDefault + override val jsonrpc: String = JSONRPC_VERSION +} + +// ============================================================================ +// JSONRPCError +// ============================================================================ + +/** + * A response to a request that indicates an error occurred. + * + * Sent in response to a [JSONRPCRequest] when the method execution fails. + * The [id] must match the [id] of the original request. + * + * @property jsonrpc Always "2.0" to indicate JSON-RPC 2.0 protocol. + * @property id The identifier from the original request. Used to match error responses to requests. + * @property error Details about the error that occurred, including error code and message. + */ +@Serializable +public data class JSONRPCError(val id: RequestId, val error: RPCError) : JSONRPCMessage { + @EncodeDefault + override val jsonrpc: String = JSONRPC_VERSION +} + +/** + * Error information for a failed JSON-RPC request. + * + * @property code The error type that occurred. A number indicating the error category. + * See standard JSON-RPC 2.0 error codes: + * - -32700: Parse error (invalid JSON) + * - -32600: Invalid request (not valid JSON-RPC) + * - -32601: Method not found + * - -32602: Invalid params + * - -32603: Internal error + * - -32000 to -32099: Server-defined errors + * @property message A short description of the error. + * The message SHOULD be limited to a concise single sentence. + * @property data Additional information about the error. + * The value of this member is defined by the sender + * (e.g., detailed error information, nested errors, etc.). + */ +@Serializable +public data class RPCError(val code: Int, val message: String, val data: JsonElement? = null) { + /** + * Standard JSON-RPC 2.0 and MCP SDK error codes. + */ + public object ErrorCode { + // SDK-specific error codes + /** Connection was closed */ + public const val CONNECTION_CLOSED: Int = -32000 + + /** Request timed out */ + public const val REQUEST_TIMEOUT: Int = -32001 + + // Standard JSON-RPC 2.0 error codes + /** Invalid JSON was received */ + public const val PARSE_ERROR: Int = -32700 + + /** The JSON sent is not a valid Request object */ + public const val INVALID_REQUEST: Int = -32600 + + /** The method does not exist or is not available */ + public const val METHOD_NOT_FOUND: Int = -32601 + + /** Invalid method parameter(s) */ + public const val INVALID_PARAMS: Int = -32602 + + /** Internal JSON-RPC error */ + public const val INTERNAL_ERROR: Int = -32603 + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/jsonUtils.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/jsonUtils.kt new file mode 100644 index 00000000..b9fce4a7 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/jsonUtils.kt @@ -0,0 +1,83 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.ClassDiscriminatorMode +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.add +import kotlinx.serialization.json.buildJsonArray +import kotlinx.serialization.json.buildJsonObject + +public val EmptyJsonObject: JsonObject = JsonObject(emptyMap()) + +@OptIn(ExperimentalSerializationApi::class) +public val McpJson: Json by lazy { + Json { + ignoreUnknownKeys = true + encodeDefaults = true + isLenient = true + classDiscriminatorMode = ClassDiscriminatorMode.NONE + explicitNulls = false + } +} + +public fun Map.toJson(): Map = this.mapValues { (_, value) -> + runCatching { convertToJsonElement(value) } + .getOrElse { JsonPrimitive(value.toString()) } +} + +@OptIn(ExperimentalUnsignedTypes::class, ExperimentalSerializationApi::class) +private fun convertToJsonElement(value: Any?): JsonElement = when (value) { + null -> JsonNull + + is JsonElement -> value + + is String -> JsonPrimitive(value) + + is Number -> JsonPrimitive(value) + + is Boolean -> JsonPrimitive(value) + + is Char -> JsonPrimitive(value.toString()) + + is Enum<*> -> JsonPrimitive(value.name) + + is Map<*, *> -> buildJsonObject { value.forEach { (k, v) -> put(k.toString(), convertToJsonElement(v)) } } + + is Collection<*> -> buildJsonArray { value.forEach { add(convertToJsonElement(it)) } } + + is Array<*> -> buildJsonArray { value.forEach { add(convertToJsonElement(it)) } } + + // Primitive arrays + is IntArray -> buildJsonArray { value.forEach { add(it) } } + + is LongArray -> buildJsonArray { value.forEach { add(it) } } + + is FloatArray -> buildJsonArray { value.forEach { add(it) } } + + is DoubleArray -> buildJsonArray { value.forEach { add(it) } } + + is BooleanArray -> buildJsonArray { value.forEach { add(it) } } + + is ShortArray -> buildJsonArray { value.forEach { add(it) } } + + is ByteArray -> buildJsonArray { value.forEach { add(it) } } + + is CharArray -> buildJsonArray { value.forEach { add(it.toString()) } } + + // Unsigned arrays + is UIntArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } + + is ULongArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } + + is UShortArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } + + is UByteArray -> buildJsonArray { value.forEach { add(JsonPrimitive(it)) } } + + else -> { + JsonPrimitive(value.toString()) + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/logging.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/logging.kt new file mode 100644 index 00000000..2966b0cb --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/logging.kt @@ -0,0 +1,84 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +/** + * The severity of a log message. + * + * These levels map to syslog message severities, as specified in + * [RFC-5424](https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1). + * + * Levels are ordered from least to most severe: + * [Debug] < [Info] < [Notice] < [Warning] < [Error] < [Critical] < [Alert] < [Emergency] + */ +@Serializable +public enum class LoggingLevel { + /** Detailed debug information for troubleshooting (RFC-5424: Debug) */ + @SerialName("debug") + Debug, + + /** Informational messages about normal operations (RFC-5424: Informational) */ + @SerialName("info") + Info, + + /** Normal but significant conditions (RFC-5424: Notice) */ + @SerialName("notice") + Notice, + + /** Warning conditions that may require attention (RFC-5424: Warning) */ + @SerialName("warning") + Warning, + + /** Error conditions that require attention (RFC-5424: Error) */ + @SerialName("error") + Error, + + /** Critical conditions requiring immediate action (RFC-5424: Critical) */ + @SerialName("critical") + Critical, + + /** Action must be taken immediately (RFC-5424: Alert) */ + @SerialName("alert") + Alert, + + /** System is unusable, highest severity (RFC-5424: Emergency) */ + @SerialName("emergency") + Emergency, +} + +/** + * A request from the client to the server to enable or adjust logging. + * + * After receiving this request, the server should send log messages at the specified + * [level][SetLevelRequestParams.level] and higher (more severe) to the client as + * notifications/message events. + * + * @property params The parameters specifying the desired logging level. + */ +@Serializable +public data class SetLevelRequest(override val params: SetLevelRequestParams) : ClientRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + override val method: Method = Method.Defined.LoggingSetLevel +} + +/** + * Parameters for a logging/setLevel request. + * + * @property level The minimum severity level of logging that the client wants to receive + * from the server. The server should send all logs at this level and higher + * (i.e., more severe) to the client as notifications/message. + * For example, if [level] is [LoggingLevel.Warning], the server should send + * warning, error, critical, alert, and emergency messages, but not info, notice, or debug. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class SetLevelRequestParams( + val level: LoggingLevel, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/methods.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/methods.kt new file mode 100644 index 00000000..99700156 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/methods.kt @@ -0,0 +1,49 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.Serializable + +/** + * Represents a method in the protocol, which can be predefined or custom. + */ +@Serializable(with = MethodSerializer::class) +public sealed interface Method { + public val value: String + + /** + * Enum of predefined methods supported by the protocol. + */ + @Serializable + public enum class Defined(override val value: String) : Method { + Initialize("initialize"), + Ping("ping"), + ResourcesList("resources/list"), + ResourcesTemplatesList("resources/templates/list"), + ResourcesRead("resources/read"), + ResourcesSubscribe("resources/subscribe"), + ResourcesUnsubscribe("resources/unsubscribe"), + PromptsList("prompts/list"), + PromptsGet("prompts/get"), + NotificationsCancelled("notifications/cancelled"), + NotificationsInitialized("notifications/initialized"), + NotificationsProgress("notifications/progress"), + NotificationsMessage("notifications/message"), + NotificationsResourcesUpdated("notifications/resources/updated"), + NotificationsResourcesListChanged("notifications/resources/list_changed"), + NotificationsToolsListChanged("notifications/tools/list_changed"), + NotificationsRootsListChanged("notifications/roots/list_changed"), + NotificationsPromptsListChanged("notifications/prompts/list_changed"), + ToolsList("tools/list"), + ToolsCall("tools/call"), + LoggingSetLevel("logging/setLevel"), + SamplingCreateMessage("sampling/createMessage"), + CompletionComplete("completion/complete"), + RootsList("roots/list"), + ElicitationCreate("elicitation/create"), + } + + /** + * Represents a custom method defined by the user. + */ + @Serializable + public data class Custom(override val value: String) : Method +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/notification.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/notification.kt new file mode 100644 index 00000000..23215845 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/notification.kt @@ -0,0 +1,327 @@ +@file:OptIn(ExperimentalSerializationApi::class) + +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject + +/** + * Represents a notification in the protocol. + */ +@Serializable(with = NotificationPolymorphicSerializer::class) +public sealed interface Notification { + public val method: Method + public val params: NotificationParams? +} + +/** + * Represents a notification sent by the client. + */ +@Serializable(with = ClientNotificationPolymorphicSerializer::class) +public sealed interface ClientNotification : Notification + +/** + * Represents a notification sent by the server. + */ +@Serializable(with = ServerNotificationPolymorphicSerializer::class) +public sealed interface ServerNotification : Notification + +/** + * Interface for notification parameter types. + * + * @property meta Optional metadata for the notification. + */ +@Serializable +public sealed interface NotificationParams : WithMeta + +/** + * Base parameters for notifications that only contain metadata. + */ +@Serializable +public data class BaseNotificationParams(@SerialName("_meta") override val meta: JsonObject? = null) : + NotificationParams + +/** + * Represents a progress notification. + * + * @property progress The progress thus far. This should increase every time progress is made, + * even if the total is unknown. + * @property total Total number of items to a process (or total progress required), if known. + * @property message An optional message describing the current progress. + */ +@Serializable +public class Progress( + public val progress: Double, + public val total: Double? = null, + public val message: String? = null, +) + +// ============================================================================ +// Custom Notification +// ============================================================================ + +/** + * Represents a custom notification method that is not part of the core MCP specification. + * + * The MCP protocol allows implementations to define custom methods for extending functionality. + * This class captures such custom notifications while preserving all their data. + * + * @property method The custom method name. By convention, custom methods often contain + * organization-specific prefixes (e.g., "mycompany/custom_event"). + * @property params Raw JSON parameters for the custom notification, if present. + */ +@Serializable +public data class CustomNotification(override val method: Method, override val params: BaseNotificationParams? = null) : + ClientNotification, + ServerNotification + +// ============================================================================ +// Cancelled Notification +// ============================================================================ + +/** + * This notification can be sent by either side to indicate that it is cancelling a previously-issued request. + * + * The request SHOULD still be in-flight, but due to communication latency, + * it is always possible that this notification MAY arrive after the request has already finished. + * + * This notification indicates that the result will be unused, so any associated processing SHOULD cease. + * + * A client MUST NOT attempt to cancel its `initialize` request. + * + * @property params Details of the cancellation request. + */ +@Serializable +public data class CancelledNotification(override val params: CancelledNotificationParams) : + ClientNotification, + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsCancelled +} + +/** + * Parameters for a notifications/cancelled notification. + * + * @property requestId The ID of the request to cancel. + * This MUST correspond to the ID of a request previously issued in the same direction. + * @property reason An optional string describing the reason for the cancellation. + * This MAY be logged or presented to the user. + * @property meta Optional metadata for this notification. + */ +@Serializable +public data class CancelledNotificationParams( + val requestId: RequestId, + val reason: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : NotificationParams + +// ============================================================================ +// Initialized Notification +// ============================================================================ + +/** + * This notification is sent from the client to the server after initialization has finished. + * + * The client sends this after receiving the [InitializeResult] to signal that it is ready + * to begin normal operations. + * + * @property params Optional notification parameters containing metadata. + */ +@Serializable +public data class InitializedNotification(override val params: BaseNotificationParams? = null) : ClientNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsInitialized +} + +// ============================================================================ +// Logging Message Notification +// ============================================================================ + +/** + * A notification of a log message passed from server to client. + * + * If no [SetLevelRequest] has been sent from the client, the server MAY decide + * which messages to send automatically. + * + * @property params The log message parameters including level and data. + */ +@Serializable +public data class LoggingMessageNotification(override val params: LoggingMessageNotificationParams) : + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsMessage +} + +/** + * Parameters for a notifications/message notification. + * + * @property level The severity of this log message. + * @property data The data to be logged, such as a string message or an object. + * Any JSON serializable type is allowed here. + * @property logger An optional name of the logger issuing this message. + * @property meta Optional metadata for this notification. + */ +@Serializable +public data class LoggingMessageNotificationParams( + val level: LoggingLevel, + val data: JsonElement, + val logger: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : NotificationParams + +// ============================================================================ +// Progress Notification +// ============================================================================ + +/** + * An out-of-band notification used to inform the receiver of a progress update for a long-running request. + * + * This notification can be sent by either the client or server to provide progress updates + * for requests that include a progressToken in their _meta field. + * + * @property params The progress update parameters. + */ +@Serializable +public data class ProgressNotification(override val params: ProgressNotificationParams) : + ClientNotification, + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsProgress +} + +/** + * Parameters for a notifications/progress notification. + * + * @property progressToken The progress token which was given in the initial request, + * used to associate this notification with the request that is proceeding. + * @property progress The progress thus far. This should increase every time progress is made, + * even if the total is unknown. + * @property total Total number of items to process (or total progress required), if known. + * @property message An optional message describing the current progress. + * @property meta Optional metadata for this notification. + */ +@Serializable +public data class ProgressNotificationParams( + val progressToken: ProgressToken, + val progress: Double, + val total: Double? = null, + val message: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : NotificationParams + +// ============================================================================ +// Prompts List Changed Notification +// ============================================================================ + +/** + * An optional notification from the server to the client, informing it that the list of prompts it offers has changed. + * + * Servers may issue this without any previous subscription from the client. + * Sent only if the server's [ServerCapabilities.prompts] has `listChanged = true`. + * + * @property params Optional notification parameters containing metadata. + */ +@Serializable +public data class PromptListChangedNotification(override val params: BaseNotificationParams? = null) : + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsPromptsListChanged +} + +// ============================================================================ +// Resources List Changed Notification +// ============================================================================ + +/** + * An optional notification from the server to the client, informing it that the list of resources it can read from has changed. + * + * Servers may issue this without any previous subscription from the client. + * Sent only if the server's [ServerCapabilities.resources] has `listChanged = true`. + * + * @property params Optional notification parameters containing metadata. + */ +@Serializable +public data class ResourceListChangedNotification(override val params: BaseNotificationParams? = null) : + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsResourcesListChanged +} + +// ============================================================================ +// Resource Updated Notification +// ============================================================================ + +/** + * A notification from the server to the client, informing it that a resource has changed and may need to be read again. + * + * This should only be sent if the client previously sent a resources/subscribe request + * and the server's [ServerCapabilities.resources] has `subscribe = true`. + * + * @property params Parameters identifying which resource was updated. + */ +@Serializable +public data class ResourceUpdatedNotification(override val params: ResourceUpdatedNotificationParams) : + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsResourcesUpdated +} + +/** + * Parameters for a notifications/resources/updated notification. + * + * @property uri The URI of the resource that has been updated. + * This might be a sub-resource of the one that the client actually subscribed to. + * @property meta Optional metadata for this notification. + */ +@Serializable +public data class ResourceUpdatedNotificationParams( + val uri: String, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : NotificationParams + +// ============================================================================ +// Roots List Changed Notification +// ============================================================================ + +/** + * A notification from the client to the server, informing it that the list of roots has changed. + * + * This notification should be sent whenever the client adds, removes, or modifies any root. + * The server should then request an updated list of roots using the ListRootsRequest. + * Sent only if the client's [ClientCapabilities.roots] has `listChanged = true`. + * + * @property params Optional notification parameters containing metadata. + */ +@Serializable +public data class RootsListChangedNotification(override val params: BaseNotificationParams? = null) : + ClientNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsRootsListChanged +} + +// ============================================================================ +// Tools List Changed Notification +// ============================================================================ + +/** + * An optional notification from the server to the client, informing it that the list of tools it offers has changed. + * + * Servers may issue this without any previous subscription from the client. + * Sent only if the server's [ServerCapabilities.tools] has `listChanged = true`. + * + * @property params Optional notification parameters containing metadata. + */ +@Serializable +public data class ToolListChangedNotification(override val params: BaseNotificationParams? = null) : + ServerNotification { + @EncodeDefault + override val method: Method = Method.Defined.NotificationsToolsListChanged +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/prompts.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/prompts.kt new file mode 100644 index 00000000..cc807ac4 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/prompts.kt @@ -0,0 +1,201 @@ +@file:OptIn(ExperimentalSerializationApi::class) + +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * Describes an argument that a prompt can accept. + * + * Arguments allow prompts to be templated with user-provided values. + * + * @property name The programmatic identifier for this argument. + * Intended for logical use and API identification. If [title] is not provided, + * this should be used as a fallback display name. + * @property description A human-readable description of the argument, explaining what it's for + * and what values are expected. + * @property required Whether this argument must be provided when using the prompt. + * If true, the client must supply a value for this argument. + * @property title Optional human-readable display name for this argument. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * If not provided, [name] should be used for display purposes. + */ +@Serializable +public data class PromptArgument( + val name: String, + val description: String? = null, + val required: Boolean? = null, + val title: String? = null, +) + +/** + * A prompt or prompt template that the server offers. + * + * Prompts can be static messages or templates that accept arguments for dynamic content generation. + * + * @property name The programmatic identifier for this prompt. + * Intended for logical use and API identification. If [title] is not provided, + * this should be used as a fallback display name. + * @property description An optional description of what this prompt provides and when to use it. + * @property arguments Optional list of arguments to use for templating the prompt. + * If present, the prompt is a template that requires these arguments to be filled in. + * @property title Optional human-readable display name for this prompt. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * If not provided, [name] should be used for display purposes. + * @property icons Optional set of sized icons that clients can display in their user interface. + * Clients MUST support at least PNG and JPEG formats. + * Clients SHOULD also support SVG and WebP formats. + * @property meta Optional metadata for this prompt. + */ +@Serializable +public data class Prompt( + val name: String, + val description: String? = null, + val arguments: List? = null, + val title: String? = null, + val icons: List? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : WithMeta + +/** + * Describes a message returned as part of a prompt. + * + * This is similar to SamplingMessage, but also supports the embedding of resources from the MCP server. + * + * @property role The role of the message sender (e.g., user, assistant, or system). + * @property content The content of the message. Can include text, images, resources, and other content types. + */ +@Serializable +public data class PromptMessage(val role: Role, val content: ContentBlock) + +/** + * Identifies a prompt by reference. + * + * Used in completion requests and other contexts where a prompt needs to be referenced + * without including its full definition. + * + * @property name The programmatic identifier of the prompt being referenced. + * Intended for logical use and API identification. If [title] is not provided, + * this should be used as a fallback display name. + * @property title Optional human-readable display name for the referenced prompt. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * If not provided, [name] should be used for display purposes. + */ +@Serializable +public data class PromptReference(val name: String, val title: String? = null) : Reference { + @EncodeDefault + public override val type: ReferenceType = ReferenceType.Prompt +} + +// ============================================================================ +// prompts/get +// ============================================================================ + +/** + * Used by the client to get a prompt provided by the server. + * + * Prompts can be static text or templates that accept arguments. When arguments + * are provided, the server will substitute them into the prompt template before + * returning the result. + * + * @property params The parameters specifying which prompt to retrieve and any template arguments. + */ +@Serializable +public data class GetPromptRequest(override val params: GetPromptRequestParams) : ClientRequest { + @EncodeDefault + override val method: Method = Method.Defined.PromptsGet + + @Deprecated("Use `params.name` instead", replaceWith = ReplaceWith("params.name")) + public val name: String + get() = params.name + + @Deprecated("Use `params.arguments` instead", replaceWith = ReplaceWith("params.arguments")) + public val arguments: Map? + get() = params.arguments +} + +/** + * Parameters for a prompts/get request. + * + * @property name The name of the prompt or prompt template to retrieve. + * @property arguments Optional arguments to use for templating the prompt. + * Keys are argument names, values are the argument values to substitute. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class GetPromptRequestParams( + val name: String, + val arguments: Map? = null, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * The server's response to a [GetPromptRequest] from the client. + * + * Contains the prompt's messages and optional description. If the prompt was a template, + * the messages will have arguments already substituted. + * + * @property messages The list of messages that make up this prompt. + * Each message has a role (e.g., "user", "assistant") and content. + * @property description An optional description for the prompt, explaining its purpose or usage. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class GetPromptResult( + val messages: List, + val description: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult + +// ============================================================================ +// prompts/list +// ============================================================================ + +/** + * Sent from the client to request a list of prompts and prompt templates the server has. + * + * This request supports pagination through the cursor parameter. If the server has many + * prompts, it may return a subset along with a cursor to fetch the next page. + * + * @property params Optional pagination parameters to control which page of results to return. + */ +@Serializable +public data class ListPromptsRequest(override val params: PaginatedRequestParams? = null) : + ClientRequest, + PaginatedRequest { + @EncodeDefault + override val method: Method = Method.Defined.PromptsList +} + +/** + * The server's response to a [ListPromptsRequest] from the client. + * + * Returns the available prompts and prompt templates, along with pagination information + * if there are more results available. + * + * @property prompts The list of available prompts. Each prompt includes its name, optional description, + * and information about any arguments it accepts. + * @property nextCursor An opaque token representing the pagination position after the last returned result. + * If present, there may be more results available. The client can pass this token + * in a subsequent request to fetch the next page. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class ListPromptsResult( + val prompts: List, + override val nextCursor: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult, + PaginatedResult diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/request.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/request.kt new file mode 100644 index 00000000..855e2f27 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/request.kt @@ -0,0 +1,116 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.long +import kotlinx.serialization.json.longOrNull +import kotlin.jvm.JvmInline + +@JvmInline +@Serializable +public value class RequestMeta(public val json: JsonObject) { + public val progressToken: ProgressToken? + get() = json["progressToken"]?.let { element -> + when (element) { + is JsonPrimitive if (element.isString) -> ProgressToken(element.content) + is JsonPrimitive if (element.longOrNull != null) -> ProgressToken(element.long) + else -> null + } + } + + public operator fun get(key: String): JsonElement? = json[key] +} + +@Serializable +public sealed interface RequestParams { + @SerialName("_meta") + public val meta: RequestMeta? +} + +@Serializable +public data class BaseRequestParams(@SerialName("_meta") override val meta: RequestMeta? = null) : RequestParams + +/** + * Represents a request in the protocol. + */ +@OptIn(ExperimentalSerializationApi::class) +@Serializable(with = RequestPolymorphicSerializer::class) +public sealed interface Request { + public val method: Method + public val params: RequestParams? +} + +/** + * A custom request with a specified method. + */ +@Serializable +public open class CustomRequest(override val method: Method, override val params: BaseRequestParams?) : Request + +/** + * Represents a request sent by the client. + */ +@Serializable +public sealed interface ClientRequest : Request + +/** + * Represents a request sent by the server. + */ +@Serializable +public sealed interface ServerRequest : Request + +/** + * Represents a request supporting pagination. + */ +@Serializable +public sealed interface PaginatedRequest : Request { + public override val params: PaginatedRequestParams? +} + +/** + * Represents the result of a request, including additional metadata. + */ +@Serializable(with = RequestResultPolymorphicSerializer::class) +public sealed interface RequestResult : WithMeta + +@Serializable(with = ClientResultPolymorphicSerializer::class) +public sealed interface ClientResult : RequestResult + +@Serializable(with = ServerResultPolymorphicSerializer::class) +public sealed interface ServerResult : RequestResult + +/** + * An empty result for a request containing optional metadata. + * + * @param meta Additional metadata for the response. Defaults to an empty JSON object. + */ +@Serializable +public data class EmptyResult(@SerialName("_meta") override val meta: JsonObject? = null) : + ClientResult, + ServerResult + +/** + * Represents a request supporting pagination. + */ +@Serializable +public sealed interface PaginatedResult : RequestResult { + public val nextCursor: String? +} + +/** + * Common parameters for paginated requests. + * + * @property cursor An opaque token representing the current pagination position. + * If provided, the server should return results starting after this cursor. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class PaginatedRequestParams( + val cursor: String? = null, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/resources.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/resources.kt new file mode 100644 index 00000000..e8030242 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/resources.kt @@ -0,0 +1,382 @@ +@file:OptIn(ExperimentalSerializationApi::class) + +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +@Serializable +public sealed interface ResourceLike : WithMeta + +/** + * A known resource that the server is capable of reading. + * + * Resources represent data sources such as files, database entries, API responses, + * or other structured data that can be read by clients. + * + * @property uri The URI of this resource. Can use any protocol scheme (file://, http://, etc.). + * @property name The programmatic identifier for this resource. + * Intended for logical use and API identification. If [title] is not provided, + * this should be used as a fallback display name. + * @property description A description of what this resource represents. + * Clients can use this to improve the LLM's understanding of available resources. + * It can be thought of like a "hint" to the model. + * @property mimeType The MIME type of this resource, if known (e.g., "text/plain", "application/json", "image/png"). + * @property size The size of the raw resource content in bytes (i.e., before base64 encoding or any tokenization), if known. + * Hosts can use this to display file sizes and estimate context window usage. + * @property title Optional human-readable display name for this resource. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * If not provided, [name] should be used for display purposes. + * @property annotations Optional annotations for the client. Provides additional metadata and hints + * about how to use or display this resource. + * @property icons Optional set of sized icons that clients can display in their user interface. + * Clients MUST support at least PNG and JPEG formats. + * Clients SHOULD also support SVG and WebP formats. + * @property meta Optional metadata for this resource. + */ +@Serializable +public data class Resource( + val uri: String, + val name: String, + val description: String? = null, + val mimeType: String? = null, + val size: Long? = null, + val title: String? = null, + val annotations: Annotations? = null, + val icons: List? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ResourceLike + +/** + * A template description for resources available on the server. + * + * Resource templates allow servers to expose parameterized resources that clients can + * instantiate with specific values. Templates use RFC 6570 URI template syntax, + * where parameters are indicated with curly braces (e.g., `file:///{directory}/{filename}`). + * + * @property uriTemplate A URI template (according to RFC 6570) that can be used to construct resource URIs. + * Parameters are indicated with curly braces, e.g., `file:///{path}` or `db://users/{userId}`. + * @property name The programmatic identifier for this template. + * Intended for logical use and API identification. If [title] is not provided, + * this should be used as a fallback display name. + * @property description A description of what this template is for. + * Clients can use this to improve the LLM's understanding of available resources. + * It can be thought of like a "hint" to the model. + * @property mimeType The MIME type for all resources that match this template. + * This should only be included if all resources matching this template have the same type. + * For example, a file template might not have a MIME type since files can be of any type, + * but a database record template might always return JSON. + * @property title Optional human-readable display name for this template. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * If not provided, [name] should be used for display purposes. + * @property annotations Optional annotations for the client. Provides additional metadata and hints + * about how to use or display resources created from this template. + * @property icons Optional set of sized icons that clients can display in their user interface. + * Clients MUST support at least PNG and JPEG formats. + * Clients SHOULD also support SVG and WebP formats. + * @property meta Optional metadata for this template. + */ +@Serializable +public data class ResourceTemplate( + val uriTemplate: String, + val name: String, + val description: String? = null, + val mimeType: String? = null, + val title: String? = null, + val annotations: Annotations? = null, + val icons: List? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : WithMeta + +/** + * A reference to a resource or resource template definition. + * + * Used in completion requests and other contexts where a resource needs to be referenced + * without including its full definition. The URI can be either a specific resource URI + * or a URI template pattern. + * + * @property uri The URI or URI template of the resource. + * Can be a specific resource URI (e.g., `file:///home/user/doc.txt`) + * or a URI template with parameters (e.g., `file:///{path}`). + */ +@Serializable +public data class ResourceTemplateReference(val uri: String) : Reference { + @EncodeDefault + public override val type: ReferenceType = ReferenceType.ResourceTemplate +} + +/** + * The contents of a specific resource or sub-resource. + * + * @property uri The URI of this resource. + * @property mimeType The MIME type of this resource, if known. + * @property meta Optional metadata for this response. + */ +@Serializable(with = ResourceContentsPolymorphicSerializer::class) +public sealed interface ResourceContents : WithMeta { + public val uri: String + public val mimeType: String? +} + +/** + * Represents the text contents of a resource. + * + * @property text The text of the item. + * This must only be set if the item can actually be represented as text (not binary data). + * @property uri The URI of this resource. + * @property mimeType The MIME type of this resource, if known. + */ +@Serializable +public data class TextResourceContents( + val text: String, + override val uri: String, + override val mimeType: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ResourceContents + +/** + * The contents of a specific resource or sub-resource. + * + * @property blob A base64-encoded string representing the binary data of the item. + * @property uri The URI of this resource. + * @property mimeType The MIME type of this resource, if known. + */ +@Serializable +public data class BlobResourceContents( + val blob: String, + override val uri: String, + override val mimeType: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ResourceContents + +/** + * Represents resource contents with unknown or unspecified data. + * + * @property uri The URI of this resource. + * @property mimeType The MIME type of this resource, if known. + */ +@Serializable +public data class UnknownResourceContents( + override val uri: String, + override val mimeType: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ResourceContents + +// ============================================================================ +// resources/list +// ============================================================================ + +/** + * Sent from the client to request a list of resources the server has. + * + * Resources are data sources that the server can provide access to, such as files, + * database entries, API responses, or other structured data. + * + * @property params Optional pagination parameters to control which page of results to return. + */ +@Serializable +public data class ListResourcesRequest(override val params: PaginatedRequestParams? = null) : + ClientRequest, + PaginatedRequest { + @EncodeDefault + override val method: Method = Method.Defined.ResourcesList +} + +/** + * The server's response to a [ListResourcesRequest] from the client. + * + * Returns the available resources along with pagination information if there are more results. + * + * @property resources The list of available resources. Each resource includes its URI, name, + * optional description, and MIME type information. + * @property nextCursor An opaque token representing the pagination position after the last returned result. + * If present, there may be more results available. The client can pass this token + * in a subsequent request to fetch the next page. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class ListResourcesResult( + val resources: List, + override val nextCursor: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult, + PaginatedResult + +// ============================================================================ +// resources/read +// ============================================================================ + +/** + * Parameters for a resources/read request. + * + * @property uri The URI of the resource to read. The URI can use any protocol; + * it is up to the server how to interpret it. Common schemes include + * file://, http://, https://, or custom application-specific schemes. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class ReadResourceRequestParams( + val uri: String, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * Sent from the client to the server to read a specific resource URI. + * + * The server will return the resource's contents, which can be either text or binary data. + * + * @property params The parameters specifying which resource URI to read. + */ +@Serializable +public data class ReadResourceRequest(override val params: ReadResourceRequestParams) : ClientRequest { + @EncodeDefault + override val method: Method = Method.Defined.ResourcesRead + + @Deprecated("Use `params.uri` instead", replaceWith = ReplaceWith("params.uri")) + public val uri: String get() = params.uri + + @Deprecated("Use `params.meta` instead", replaceWith = ReplaceWith("params.meta")) + public val meta: RequestMeta? get() = params.meta +} + +/** + * The server's response to a [ReadResourceRequest] from the client. + * + * Contains the resource contents, which can be a mix of text and binary data. + * A single resource can return multiple content blocks if it contains multiple parts. + * + * @property contents The contents of the resource. Can include text content (with MIME type and text data) + * or binary/blob content (with MIME type and Base64-encoded data). + * Multiple content blocks can be returned for resources with multiple parts. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class ReadResourceResult( + val contents: List, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult + +// ============================================================================ +// resources/subscribe +// ============================================================================ + +/** + * Parameters for a resources/subscribe request. + * + * @property uri The URI of the resource to subscribe to. The URI can use any protocol; + * it is up to the server how to interpret it. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class SubscribeRequestParams( + val uri: String, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * Sent from the client to request resources/updated notifications from the server + * whenever a particular resource changes. + * + * After subscribing, the server will send [ResourceUpdatedNotification] messages + * whenever the subscribed resource is modified. This requires the server to support + * the `subscribe` capability in [ServerCapabilities.resources]. + * + * @property params The parameters specifying which resource URI to subscribe to. + */ +@Serializable +public data class SubscribeRequest(override val params: SubscribeRequestParams) : ClientRequest { + @EncodeDefault + override val method: Method = Method.Defined.ResourcesSubscribe +} + +// ============================================================================ +// resources/unsubscribe +// ============================================================================ + +/** + * Parameters for a resources/unsubscribe request. + * + * @property uri The URI of the resource to unsubscribe from. This should match + * a URI from a previous [SubscribeRequest]. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class UnsubscribeRequestParams( + val uri: String, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * Sent from the client to request cancellation of resources/updated notifications from the server. + * + * This should follow a previous [SubscribeRequest]. After unsubscribing, the server will + * stop sending [ResourceUpdatedNotification] messages for this resource. + * + * @property params The parameters specifying which resource URI to unsubscribe from. + */ +@Serializable +public data class UnsubscribeRequest(override val params: UnsubscribeRequestParams) : ClientRequest { + @EncodeDefault + override val method: Method = Method.Defined.ResourcesUnsubscribe +} + +// ============================================================================ +// resources/templates/list +// ============================================================================ + +/** + * Sent from the client to request a list of resource templates the server has. + * + * Resource templates are parameterized resource URIs that can be instantiated with + * specific argument values. For example, a template like `file:///{path}` allows + * clients to construct URIs for any file path. + * + * @property params Optional pagination parameters to control which page of results to return. + */ +@Serializable +public data class ListResourceTemplatesRequest(override val params: PaginatedRequestParams? = null) : + ClientRequest, + PaginatedRequest { + @EncodeDefault + override val method: Method = Method.Defined.ResourcesTemplatesList +} + +/** + * The server's response to a [ListResourceTemplatesRequest] from the client. + * + * Returns the available resource templates along with pagination information if there are more results. + * + * @property resourceTemplates The list of available resource templates. Each template includes + * its URI template pattern, name, optional description, and information + * about the arguments it accepts. + * @property nextCursor An opaque token representing the pagination position after the last returned result. + * If present, there may be more results available. The client can pass this token + * in a subsequent request to fetch the next page. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class ListResourceTemplatesResult( + val resourceTemplates: List, + override val nextCursor: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult, + PaginatedResult diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/roots.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/roots.kt new file mode 100644 index 00000000..2d7ddbcc --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/roots.kt @@ -0,0 +1,81 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * Represents a root directory or file that the server can operate on. + * + * Roots define the top-level locations that a server has access to. They act as + * boundaries for the server's operations, ensuring it only accesses permitted locations. + * + * @property uri The URI identifying the root. This **must** start with `file://` for now. + * This restriction may be relaxed in future versions of the protocol to allow other URI schemes. + * Examples: "file:///home/user/projects", "file:///workspace/repo", "file:///C:/Documents" + * @property name An optional name for the root. This can be used to provide a human-readable + * identifier for the root, which may be useful for display purposes or for + * referencing the root in other parts of the application. + * @property meta Optional metadata for this root. + */ +@Serializable +public data class Root( + val uri: String, + val name: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : WithMeta { + init { + require(uri.startsWith("file://")) { + "Root URI must start with 'file://', got: $uri" + } + } +} + +// ============================================================================ +// roots/list +// ============================================================================ + +/** + * Sent from the server to request a list of root URIs from the client. + * + * Roots allow servers to ask for specific directories or files to operate on. + * A common example for roots is providing a set of repositories or directories + * a server should operate on. + * + * This request is typically used when the server needs to understand the file system + * structure or access specific locations that the client has permission to read from. + * + * **Note:** Unlike most other requests, this is sent from the **server to the client**, + * not from client to server. The client must support the `roots` capability with + * `listChanged = true` to receive these requests. + * + * @property params Optional request parameters containing metadata. + */ +@Serializable +public data class ListRootsRequest(override val params: BaseRequestParams? = null) : ServerRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + override val method: Method = Method.Defined.RootsList +} + +/** + * The client's response to a [ListRootsRequest] from the server. + * + * This result contains an array of Root objects, each representing a root directory + * or file that the server can operate on. Roots define the boundaries of what + * the server is allowed to access. + * + * @property roots The list of root URIs that the server can access. + * Each root represents a top-level directory, file, or other location + * that the server has permission to work with. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class ListRootsResult( + val roots: List, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ClientResult diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/sampling.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/sampling.kt new file mode 100644 index 00000000..22d9239c --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/sampling.kt @@ -0,0 +1,200 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject +import kotlin.jvm.JvmInline + +/** + * Hints to use for model selection. + */ +@Serializable +public data class ModelHint( + /** + * A hint for a model name. + */ + val name: String?, +) + +/** + * The server's preferences for model selection, requested of the client during sampling. + * + * Because LLMs can vary along multiple dimensions, choosing the "best" model is rarely straightforward. + * Different models excel in different areas—some are faster but less capable, others are more capable + * but more expensive, and so on. This interface allows servers to express their priorities across + * multiple dimensions to help clients make an appropriate selection for their use case. + * + * **Important:** These preferences are always advisory. The client MAY ignore them completely. + * It is also up to the client to decide how to interpret these preferences and how to balance + * them against other considerations. + * + * @property hints Optional hints to use for model selection. + * If multiple hints are specified, the client MUST evaluate them in order + * (such that the first match is taken). + * The client SHOULD prioritize these hints over the numeric priorities, + * but MAY still use the priorities to select from ambiguous matches. + * @property costPriority How much to prioritize cost when selecting a model. + * A value of 0.0 means cost is not important, while a value of 1.0 means + * cost is the most important factor. + * Should be between 0.0 and 1.0. + * @property speedPriority How much to prioritize sampling speed (latency) when selecting a model. + * A value of 0.0 means speed is not important, while a value of 1.0 means + * speed is the most important factor. + * Should be between 0.0 and 1.0. + * @property intelligencePriority How much to prioritize intelligence and capabilities when selecting a model. + * A value of 0.0 means intelligence is not important, while a value of 1.0 + * means intelligence is the most important factor. + * Should be between 0.0 and 1.0. + */ +@Serializable +public data class ModelPreferences( + val hints: List? = null, + val costPriority: Double? = null, + val speedPriority: Double? = null, + val intelligencePriority: Double? = null, +) { + init { + require(costPriority == null || costPriority in 0.0..1.0) { + "costPriority must be in 0.0 <= x <= 1.0 value range" + } + + require(speedPriority == null || speedPriority in 0.0..1.0) { + "costPriority must be in 0.0 <= x <= 1.0 value range" + } + + require(intelligencePriority == null || intelligencePriority in 0.0..1.0) { + "intelligencePriority must be in 0.0 <= x <= 1.0 value range" + } + } +} + +/** + * Describes a message issued to or received from an LLM API. + * + * Used in sampling requests to provide conversation context and history to the LLM. + * + * @property role The role of the message sender (user, assistant, or system). + * @property content The content of the message. Can be text, image, or audio content. + */ +@Serializable +public data class SamplingMessage(val role: Role, val content: MediaContent) + +// ============================================================================ +// sampling/createMessage +// ============================================================================ + +/** + * A request from the server to sample an LLM via the client. + * + * The client has full discretion over which model to select. The client should also + * inform the user before beginning sampling, to allow them to inspect the request + * (human in the loop) and decide whether to approve it. + * + * **Important:** This is a request from **server to client**, not client to server. + * The server is asking the client to use its LLM to generate a completion. + * + * **Human-in-the-loop:** Clients should: + * 1. Show the sampling request to the user before executing it + * 2. Allow the user to approve or reject the request + * 3. Show the generated response to the user before sending it back to the server + * + * @property params The parameters for the sampling request, including messages and model preferences. + */ +@Serializable +public data class CreateMessageRequest(override val params: CreateMessageRequestParams) : ServerRequest { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + override val method: Method = Method.Defined.SamplingCreateMessage +} + +/** + * Parameters for a sampling/createMessage request. + * + * @property maxTokens The requested maximum number of tokens to sample (to prevent runaway completions). + * The client MAY choose to sample fewer tokens than the requested maximum. + * @property messages The messages to use as context for sampling. Typically includes conversation history + * and the current user message. + * @property modelPreferences The server's preferences for which model to select. + * The client MAY ignore these preferences and choose any model. + * @property systemPrompt An optional system prompt the server wants to use for sampling. + * The client MAY modify or omit this prompt. + * @property includeContext A request to include context from one or more MCP servers (including the caller), + * to be attached to the prompt. The client MAY ignore this request. + * - "none": Don't include any server context + * - "thisServer": Include context only from the requesting server + * - "allServers": Include context from all connected MCP servers + * @property temperature Optional temperature parameter for sampling (typically 0.0-2.0). + * Higher values make output more random, lower values make it more deterministic. + * @property stopSequences Optional list of sequences that will stop generation if encountered. + * @property metadata Optional metadata to pass through to the LLM provider. + * The format of this metadata is provider-specific. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class CreateMessageRequestParams( + val maxTokens: Int, + val messages: List, + val modelPreferences: ModelPreferences? = null, + val systemPrompt: String? = null, + val includeContext: IncludeContext? = null, + val temperature: Double? = null, + val stopSequences: List? = null, + val metadata: JsonObject? = null, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * Specifies which MCP server context to include in the sampling request. + */ +@Serializable +public enum class IncludeContext { + /** Don't include any server context */ + @SerialName("none") + None, + + /** Include context only from the requesting server */ + @SerialName("thisServer") + ThisServer, + + /** Include context from all connected MCP servers */ + @SerialName("allServers") + AllServers, +} + +/** + * The client's response to a [CreateMessageRequest] from the server. + * + * The client should inform the user before returning the sampled message, to allow them + * to inspect the response (human in the loop) and decide whether to allow the server to see it. + * + * @property role The role of the message sender. Typically [Role.Assistant] for LLM-generated responses. + * @property content The generated content. Can be text, image, or audio content. + * @property model The name of the model that generated the message (e.g., "claude-3-opus-20240229", + * "gpt-4-turbo-preview"). This helps the server understand which model was used. + * @property stopReason The reason why sampling stopped, if known. + * Common values: "end_turn", "max_tokens", "stop_sequence", "content_filter" + * @property meta Optional metadata for this response. + */ +@Serializable +public data class CreateMessageResult( + val role: Role, + val content: MediaContent, + val model: String, + val stopReason: StopReason? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ClientResult + +@JvmInline +@Serializable +public value class StopReason(public val value: String) { + public companion object { + public val EndTurn: StopReason = StopReason("endTurn") + public val StopSequence: StopReason = StopReason("stopSequence") + public val MaxTokens: StopReason = StopReason("maxTokens") + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/serializers.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/serializers.kt new file mode 100644 index 00000000..721a2aac --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/serializers.kt @@ -0,0 +1,402 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.github.oshai.kotlinlogging.KotlinLogging +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.KSerializer +import kotlinx.serialization.SerializationException +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.longOrNull + +private val logger = KotlinLogging.logger {} + +// ============================================================================ +// Utility Functions +// ============================================================================ + +/** + * Safely extracts the method field from a JSON element. + * Returns null if the method field is not present. + */ +private fun JsonElement.getMethodOrNull(): String? = jsonObject["method"]?.jsonPrimitive?.content + +/** + * Safely extracts the type field from a JSON element. + * Returns null if the type field is not present. + */ +private fun JsonElement.getTypeOrNull(): String? = jsonObject["type"]?.jsonPrimitive?.content + +/** + * Extracts the type field from a JSON element. + * Throws [SerializationException] if the type field is not present. + */ +private fun JsonElement.getType(): String = requireNotNull(getTypeOrNull()) { "Missing required 'type' field" } + +// ============================================================================ +// Method Serializer +// ============================================================================ + +/** + * Custom serializer for [Method] that handles both defined and custom methods. + * Defined methods are deserialized to [Method.Defined], while unknown methods + * are deserialized to [Method.Custom]. + */ +internal object MethodSerializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.types.Method", PrimitiveKind.STRING) + + private val definedMethods: Map by lazy { + Method.Defined.entries.associateBy { it.value } + } + + override fun serialize(encoder: Encoder, value: Method) { + encoder.encodeString(value.value) + } + + override fun deserialize(decoder: Decoder): Method { + val decodedString = decoder.decodeString() + return definedMethods[decodedString] ?: Method.Custom(decodedString) + } +} + +// ============================================================================ +// Reference Serializers +// ============================================================================ + +/** + * Polymorphic serializer for [Reference] types. + * Determines the concrete type based on the "type" field in JSON. + */ +internal object ReferencePolymorphicSerializer : JsonContentPolymorphicSerializer(Reference::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + when (element.getType()) { + ReferenceType.Prompt.value -> PromptReference.serializer() + ReferenceType.ResourceTemplate.value -> ResourceTemplateReference.serializer() + else -> throw SerializationException("Unknown reference type: ${element.getTypeOrNull()}") + } +} + +// ============================================================================ +// Content Serializers +// ============================================================================ + +/** + * Polymorphic serializer for [ContentBlock] types. + * Determines the concrete type based on the "type" field in JSON. + */ +internal object ContentBlockPolymorphicSerializer : + JsonContentPolymorphicSerializer(ContentBlock::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + when (element.getType()) { + ContentTypes.TEXT.value -> TextContent.serializer() + ContentTypes.IMAGE.value -> ImageContent.serializer() + ContentTypes.AUDIO.value -> AudioContent.serializer() + ContentTypes.RESOURCE_LINK.value -> ResourceLink.serializer() + ContentTypes.EMBEDDED_RESOURCE.value -> EmbeddedResource.serializer() + else -> throw SerializationException("Unknown content block type: ${element.getTypeOrNull()}") + } +} + +/** + * Polymorphic serializer for [MediaContent] types (text, image, audio). + * Determines the concrete type based on the "type" field in JSON. + */ +internal object MediaContentPolymorphicSerializer : + JsonContentPolymorphicSerializer(MediaContent::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + when (element.getType()) { + ContentTypes.TEXT.value -> TextContent.serializer() + ContentTypes.IMAGE.value -> ImageContent.serializer() + ContentTypes.AUDIO.value -> AudioContent.serializer() + else -> throw SerializationException("Unknown media content type: ${element.getTypeOrNull()}") + } +} + +// ============================================================================ +// Resource Serializers +// ============================================================================ + +/** + * Polymorphic serializer for [ResourceContents] types. + * Determines the concrete type based on the presence of "text" or "blob" fields. + */ +internal object ResourceContentsPolymorphicSerializer : + JsonContentPolymorphicSerializer(ResourceContents::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + val jsonObject = element.jsonObject + return when { + "text" in jsonObject -> TextResourceContents.serializer() + "blob" in jsonObject -> BlobResourceContents.serializer() + else -> UnknownResourceContents.serializer() + } + } +} + +// ============================================================================ +// Request Serializers +// ============================================================================ + +private val clientRequestDeserializers: Map> by lazy { + mapOf( + Method.Defined.CompletionComplete.value to CompleteRequest.serializer(), + Method.Defined.Initialize.value to InitializeRequest.serializer(), + Method.Defined.Ping.value to PingRequest.serializer(), + Method.Defined.LoggingSetLevel.value to SetLevelRequest.serializer(), + Method.Defined.PromptsGet.value to GetPromptRequest.serializer(), + Method.Defined.PromptsList.value to ListPromptsRequest.serializer(), + Method.Defined.ResourcesList.value to ListResourcesRequest.serializer(), + Method.Defined.ResourcesRead.value to ReadResourceRequest.serializer(), + Method.Defined.ResourcesSubscribe.value to SubscribeRequest.serializer(), + Method.Defined.ResourcesUnsubscribe.value to UnsubscribeRequest.serializer(), + Method.Defined.ResourcesTemplatesList.value to ListResourceTemplatesRequest.serializer(), + Method.Defined.ToolsCall.value to CallToolRequest.serializer(), + Method.Defined.ToolsList.value to ListToolsRequest.serializer(), + ) +} + +/** + * Selects the appropriate deserializer for client requests based on the method name. + * Returns null if the method is not a known client request method. + */ +internal fun selectClientRequestDeserializer(method: String): DeserializationStrategy? = + clientRequestDeserializers[method] + +private val serverRequestDeserializers: Map> by lazy { + mapOf( + Method.Defined.ElicitationCreate.value to ElicitRequest.serializer(), + Method.Defined.Ping.value to PingRequest.serializer(), + Method.Defined.RootsList.value to ListRootsRequest.serializer(), + Method.Defined.SamplingCreateMessage.value to CreateMessageRequest.serializer(), + ) +} + +/** + * Selects the appropriate deserializer for server requests based on the method name. + * Returns null if the method is not a known server request method. + */ +internal fun selectServerRequestDeserializer(method: String): DeserializationStrategy? = + serverRequestDeserializers[method] + +/** + * Polymorphic serializer for [Request] types. + * Supports both client and server requests, as well as custom requests. + */ +internal object RequestPolymorphicSerializer : JsonContentPolymorphicSerializer(Request::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + val method = element.getMethodOrNull() ?: run { + logger.error { "Missing 'method' for Request: $element" } + throw SerializationException("Missing 'method' for Request: $element") + } + + return selectClientRequestDeserializer(method) + ?: selectServerRequestDeserializer(method) + ?: CustomRequest.serializer() + } +} + +// ============================================================================ +// Notification Serializers +// ============================================================================ + +private val clientNotificationDeserializers: Map> by lazy { + mapOf( + Method.Defined.NotificationsCancelled.value to CancelledNotification.serializer(), + Method.Defined.NotificationsProgress.value to ProgressNotification.serializer(), + Method.Defined.NotificationsInitialized.value to InitializedNotification.serializer(), + Method.Defined.NotificationsRootsListChanged.value to RootsListChangedNotification.serializer(), + ) +} + +/** + * Selects the appropriate deserializer for client notifications based on the method name. + * Returns null if the method is not a known client notification method. + */ +private fun selectClientNotificationDeserializer(element: JsonElement): DeserializationStrategy? = + element.getMethodOrNull()?.let(clientNotificationDeserializers::get) + +private val serverNotificationDeserializers: Map> by lazy { + mapOf( + Method.Defined.NotificationsCancelled.value to CancelledNotification.serializer(), + Method.Defined.NotificationsProgress.value to ProgressNotification.serializer(), + Method.Defined.NotificationsMessage.value to LoggingMessageNotification.serializer(), + Method.Defined.NotificationsResourcesUpdated.value to ResourceUpdatedNotification.serializer(), + Method.Defined.NotificationsResourcesListChanged.value to ResourceListChangedNotification.serializer(), + Method.Defined.NotificationsToolsListChanged.value to ToolListChangedNotification.serializer(), + Method.Defined.NotificationsPromptsListChanged.value to PromptListChangedNotification.serializer(), + ) +} + +/** + * Selects the appropriate deserializer for server notifications based on the method name. + * Returns null if the method is not a known server notification method. + */ +internal fun selectServerNotificationDeserializer(element: JsonElement): DeserializationStrategy? = + element.getMethodOrNull()?.let(serverNotificationDeserializers::get) + +/** + * Polymorphic serializer for [Notification] types. + * Supports both client and server notifications, as well as custom notifications. + */ +internal object NotificationPolymorphicSerializer : + JsonContentPolymorphicSerializer(Notification::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + selectClientNotificationDeserializer(element) + ?: selectServerNotificationDeserializer(element) + ?: CustomNotification.serializer() +} + +/** + * Polymorphic serializer for [ClientNotification] types. + * Falls back to [CustomNotification] for unknown methods. + */ +internal object ClientNotificationPolymorphicSerializer : + JsonContentPolymorphicSerializer(ClientNotification::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + selectClientNotificationDeserializer(element) + ?: CustomNotification.serializer() +} + +/** + * Polymorphic serializer for [ServerNotification] types. + * Falls back to [CustomNotification] for unknown methods. + */ +internal object ServerNotificationPolymorphicSerializer : + JsonContentPolymorphicSerializer(ServerNotification::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + selectServerNotificationDeserializer(element) + ?: CustomNotification.serializer() +} + +// ============================================================================ +// Result Serializers +// ============================================================================ + +/** + * Selects the appropriate deserializer for empty results. + * Returns EmptyResult serializer if the JSON object is empty or contains only metadata. + */ +private fun selectEmptyResult(element: JsonElement): DeserializationStrategy? { + val jsonObject = element.jsonObject + return when { + jsonObject.isEmpty() || (jsonObject.size == 1 && "_meta" in jsonObject) -> EmptyResult.serializer() + else -> null + } +} + +/** + * Selects the appropriate deserializer for client results based on JSON content. + * Returns null if the structure doesn't match any known client result type. + */ +private fun selectClientResultDeserializer(element: JsonElement): DeserializationStrategy? { + val jsonObject = element.jsonObject + return when { + "model" in jsonObject && "role" in jsonObject -> CreateMessageResult.serializer() + "roots" in jsonObject -> ListRootsResult.serializer() + "action" in jsonObject -> ElicitResult.serializer() + else -> null + } +} + +/** + * Selects the appropriate deserializer for server results based on JSON content. + * Returns null if the structure doesn't match any known server result type. + */ +private fun selectServerResultDeserializer(element: JsonElement): DeserializationStrategy? { + val jsonObject = element.jsonObject + return when { + "protocolVersion" in jsonObject && "capabilities" in jsonObject -> InitializeResult.serializer() + "completion" in jsonObject -> CompleteResult.serializer() + "tools" in jsonObject -> ListToolsResult.serializer() + "resources" in jsonObject -> ListResourcesResult.serializer() + "resourceTemplates" in jsonObject -> ListResourceTemplatesResult.serializer() + "prompts" in jsonObject -> ListPromptsResult.serializer() + "messages" in jsonObject -> GetPromptResult.serializer() + "contents" in jsonObject -> ReadResourceResult.serializer() + "content" in jsonObject -> CallToolResult.serializer() + else -> null + } +} + +/** + * Polymorphic serializer for [RequestResult] types. + * Supports both client and server results. + * Throws [SerializationException] if the result type cannot be determined. + */ +internal object RequestResultPolymorphicSerializer : + JsonContentPolymorphicSerializer(RequestResult::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + selectClientResultDeserializer(element) + ?: selectServerResultDeserializer(element) + ?: selectEmptyResult(element) + ?: throw SerializationException("Cannot determine RequestResult type from JSON: ${element.jsonObject.keys}") +} + +/** + * Polymorphic serializer for [ClientResult] types. + * Throws [SerializationException] if the result type cannot be determined. + */ +internal object ClientResultPolymorphicSerializer : + JsonContentPolymorphicSerializer(ClientResult::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + selectClientResultDeserializer(element) + ?: selectEmptyResult(element) + ?: throw SerializationException("Cannot determine RequestResult type from JSON: ${element.jsonObject.keys}") +} + +/** + * Polymorphic serializer for [ServerResult] types. + * Throws [SerializationException] if the result type cannot be determined. + */ +internal object ServerResultPolymorphicSerializer : + JsonContentPolymorphicSerializer(ServerResult::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = + selectServerResultDeserializer(element) + ?: selectEmptyResult(element) + ?: throw SerializationException("Cannot determine RequestResult type from JSON: ${element.jsonObject.keys}") +} + +// ============================================================================ +// JSON-RPC Serializers +// ============================================================================ + +/** + * Polymorphic serializer for [JSONRPCMessage] types. + * Determines the message type based on the presence of specific fields: + * - "error" -> JSONRPCError + * - "result" -> JSONRPCResponse + * - "method" + "id" -> JSONRPCRequest + * - "method" -> JSONRPCNotification + */ +internal object JSONRPCMessagePolymorphicSerializer : + JsonContentPolymorphicSerializer(JSONRPCMessage::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + val jsonObject = element.jsonObject + return when { + "error" in jsonObject -> JSONRPCError.serializer() + "result" in jsonObject -> JSONRPCResponse.serializer() + "method" in jsonObject && "id" in jsonObject -> JSONRPCRequest.serializer() + "method" in jsonObject -> JSONRPCNotification.serializer() + else -> throw SerializationException("Invalid JSONRPCMessage type: ${jsonObject.keys}") + } + } +} + +/** + * Polymorphic serializer for [RequestId] types. + * Supports both string and number IDs. + */ +internal object RequestIdPolymorphicSerializer : JsonContentPolymorphicSerializer(RequestId::class) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy = when (element) { + is JsonPrimitive if (element.isString) -> RequestId.StringId.serializer() + is JsonPrimitive if (element.longOrNull != null) -> RequestId.NumberId.serializer() + else -> throw SerializationException("Invalid RequestId type: $element") + } +} diff --git a/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/tools.kt b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/tools.kt new file mode 100644 index 00000000..3cecc794 --- /dev/null +++ b/kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/tools.kt @@ -0,0 +1,235 @@ +@file:OptIn(ExperimentalSerializationApi::class) + +package io.modelcontextprotocol.kotlin.sdk.types + +import kotlinx.serialization.EncodeDefault +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +/** + * Creates a [CallToolResult] with single [TextContent] and [meta]. + */ +public fun CallToolResult.Companion.success(content: String, meta: JsonObject? = null): CallToolResult = CallToolResult( + content = listOf(TextContent(content)), + isError = false, + meta = meta, +) + +/** + * Creates a [CallToolResult] with single [TextContent] and [meta], with `isError` being true. + */ +public fun CallToolResult.Companion.error(content: String, meta: JsonObject? = null): CallToolResult = CallToolResult( + content = listOf(TextContent(content)), + isError = true, + meta = meta, +) + +/** + * Definition for a tool the client can call. + * + * Tools allow servers to expose functionality that can be invoked by clients and LLMs. + * Each tool has a name, description, and schema defining its input (and optionally output) parameters. + * + * **Display name precedence order:** [title] → [annotations].[title] → [name] + * + * @property name The programmatic identifier for this tool. + * Intended for logical use and API identification. Used as a display name fallback + * if both [title] and [annotations].[title] are not provided. + * @property inputSchema A JSON Schema object defining the expected parameters for the tool. + * Must be an object type schema. Defines what arguments the tool accepts. + * @property description A human-readable description of the tool and when to use it. + * Clients can use this to improve the LLM's understanding of available tools. + * It can be thought of like a "hint" to the model. + * @property outputSchema An optional JSON Schema object defining the structure of the tool's output + * returned in the [structuredContent][CallToolResult.structuredContent] field of a [CallToolResult]. + * Must be an object type schema if provided. + * @property title Optional human-readable display name for this tool. + * Intended for UI and end-user contexts, optimized to be easily understood + * even by those unfamiliar with domain-specific terminology. + * Note: For Tool specifically, [annotations].[title] takes precedence over this field. + * @property annotations Optional additional tool information providing hints about tool behavior. + * All properties in [ToolAnnotations] are hints and not guaranteed to provide + * a faithful description of tool behavior. + * @property icons Optional set of sized icons that clients can display in their user interface. + * Clients MUST support at least PNG and JPEG formats. + * Clients SHOULD also support SVG and WebP formats. + * @property meta Optional metadata for this tool. + */ +@Serializable +public data class Tool( + val name: String, + val inputSchema: ToolSchema, + val description: String? = null, + val outputSchema: ToolSchema? = null, + val title: String? = null, + val annotations: ToolAnnotations? = null, + val icons: List? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : WithMeta + +/** + * A JSON Schema for tool input or output parameters. + * + * This is a simplified schema structure that must be of type "object". + * + * @property type Always "object" for tool schemas. + * @property properties Optional map of property names to their schema definitions. + * @property required Optional list of property names that are required. + */ +@Serializable +public data class ToolSchema(val properties: JsonObject? = null, val required: List? = null) { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault + val type: String = "object" +} + +/** + * Additional properties describing a Tool to clients. + * + * **IMPORTANT:** All properties in ToolAnnotations are **hints**. They are NOT guaranteed to provide + * a faithful description of tool behavior (including descriptive properties like [title]). + * + * **Security warning:** Clients should NEVER make tool use decisions based on ToolAnnotations + * received from untrusted servers. + * + * @property title A human-readable title for the tool. + * Takes precedence over [Tool.title] and [Tool.name] for display purposes. + * @property readOnlyHint If true, the tool does not modify its environment. + * If false, the tool may perform modifications. + * Default: false + * @property destructiveHint If true, the tool may perform destructive updates to its environment. + * If false, the tool performs only additive updates. + * This property is meaningful only when [readOnlyHint] == false. + * Default: true + * @property idempotentHint If true, calling the tool repeatedly with the same arguments will have + * no additional effect on its environment. + * This property is meaningful only when [readOnlyHint] == false. + * Default: false + * @property openWorldHint If true, this tool may interact with an "open world" of external entities. + * If false, the tool's domain of interaction is closed. + * For example, the world of a web search tool is open, whereas that of a + * memory tool is not. + * Default: true + */ +@Serializable +public data class ToolAnnotations( + val title: String? = null, + val readOnlyHint: Boolean? = null, + val destructiveHint: Boolean? = null, + val idempotentHint: Boolean? = null, + val openWorldHint: Boolean? = null, +) + +// ============================================================================ +// tools/call +// ============================================================================ + +/** + * Used by the client to invoke a tool provided by the server. + * + * Tools allow servers to expose functionality that clients (and LLMs) can call. + * Examples include file operations, API calls, database queries, or any other + * server-side operations. + * + * @property params The parameters specifying which tool to call and what arguments to pass. + */ +@Serializable +public data class CallToolRequest(override val params: CallToolRequestParams) : ClientRequest { + @EncodeDefault + override val method: Method = Method.Defined.ToolsCall + + @Deprecated("Use `params.arguments` instead", replaceWith = ReplaceWith("params.arguments")) + public val arguments: JsonObject + get() = params.arguments ?: EmptyJsonObject +} + +/** + * Parameters for a tools/call request. + * + * @property name The name of the tool to invoke. + * @property arguments Arguments to pass to the tool. Keys are argument names, values are the argument values. + * The structure must match the tool's input schema. + * @property meta Optional metadata for this request. May include a progressToken for + * out-of-band progress notifications. + */ +@Serializable +public data class CallToolRequestParams( + val name: String, + val arguments: JsonObject? = null, + @SerialName("_meta") + override val meta: RequestMeta? = null, +) : RequestParams + +/** + * The server's response to a [CallToolRequest]. + * + * Contains the result of the tool execution, which can be successful or an error. + * + * **Important error handling:** + * - Errors that originate from the **tool itself** SHOULD be reported inside the result object + * with [isError] set to true, NOT as an MCP protocol-level error response. This allows the LLM + * to see that an error occurred and potentially self-correct. + * - Errors in **finding the tool**, unsupported operations, or other exceptional conditions + * SHOULD be reported as MCP protocol-level error responses. + * + * @property content A list of content blocks that represent the unstructured result of the tool call. + * This is what the LLM will see as the tool's output. + * @property isError Whether the tool call ended in an error. + * If not set, this is assumed to be false (the call was successful). + * When true, the [content] should describe the error that occurred. + * @property structuredContent An optional JSON object that represents the structured result of the tool call. + * Provides machine-readable output in addition to the human-readable [content]. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class CallToolResult( + val content: List, + val isError: Boolean? = null, + val structuredContent: JsonObject? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult + +// ============================================================================ +// tools/list +// ============================================================================ + +/** + * Sent from the client to request a list of tools the server has. + * + * This request supports pagination through the cursor parameter. If the server has many + * tools, it may return a subset along with a cursor to fetch the next page. + * + * @property params Optional pagination parameters to control which page of results to return. + */ +@Serializable +public data class ListToolsRequest(override val params: PaginatedRequestParams? = null) : + ClientRequest, + PaginatedRequest { + @EncodeDefault + override val method: Method = Method.Defined.ToolsList +} + +/** + * The server's response to a [ListToolsRequest] from the client. + * + * Returns the available tools along with pagination information if there are more results. + * + * @property tools The list of available tools. Each tool includes its name, description, + * and input schema that defines what arguments it accepts. + * @property nextCursor An opaque token representing the pagination position after the last returned result. + * If present, there may be more results available. The client can pass this token + * in a subsequent request to fetch the next page. + * @property meta Optional metadata for this response. + */ +@Serializable +public data class ListToolsResult( + val tools: List, + override val nextCursor: String? = null, + @SerialName("_meta") + override val meta: JsonObject? = null, +) : ServerResult, + PaginatedResult diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/CallToolResultUtilsTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaCallToolResultUtilsTest.kt similarity index 76% rename from kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/CallToolResultUtilsTest.kt rename to kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaCallToolResultUtilsTest.kt index d331b01e..b7bac6d3 100644 --- a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/CallToolResultUtilsTest.kt +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaCallToolResultUtilsTest.kt @@ -7,17 +7,17 @@ import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertTrue -class CallToolResultUtilsTest { +class OldSchemaCallToolResultUtilsTest { @Test fun testOkWithOnlyText() { val content = "TextMessage" - val result = CallToolResult.Companion.ok(content) + val result = CallToolResult.ok(content) assertEquals(1, result.content.size) assertEquals(content, (result.content[0] as TextContent).text) assertFalse(result.isError == true) - assertEquals(EmptyJsonObject, result._meta) + assertEquals(EmptyJsonObject, result.meta) } @Test @@ -27,23 +27,23 @@ class CallToolResultUtilsTest { put("key1", JsonPrimitive("value1")) put("key2", JsonPrimitive(42)) } - val result = CallToolResult.Companion.ok(content, meta) + val result = CallToolResult.ok(content, meta) assertEquals(1, result.content.size) assertEquals(content, (result.content[0] as TextContent).text) assertFalse(result.isError == true) - assertEquals(meta, result._meta) + assertEquals(meta, result.meta) } @Test fun testErrorWithOnlyText() { val content = "ErrorMessage" - val result = CallToolResult.Companion.error(content) + val result = CallToolResult.error(content) assertEquals(1, result.content.size) assertEquals(content, (result.content[0] as TextContent).text) assertTrue(result.isError == true) - assertEquals(EmptyJsonObject, result._meta) + assertEquals(EmptyJsonObject, result.meta) } @Test @@ -53,11 +53,11 @@ class CallToolResultUtilsTest { put("errorCode", JsonPrimitive(404)) put("errorDetail", JsonPrimitive("资源未找到")) } - val result = CallToolResult.Companion.error(content, meta) + val result = CallToolResult.error(content, meta) assertEquals(1, result.content.size) assertEquals(content, (result.content[0] as TextContent).text) assertTrue(result.isError == true) - assertEquals(meta, result._meta) + assertEquals(meta, result.meta) } } diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/RequestSerializerTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaRequestSerializerTest.kt similarity index 94% rename from kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/RequestSerializerTest.kt rename to kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaRequestSerializerTest.kt index 96a74dc0..2360b5b0 100644 --- a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/RequestSerializerTest.kt +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaRequestSerializerTest.kt @@ -1,13 +1,18 @@ package io.modelcontextprotocol.kotlin.sdk import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.CallToolResult +import io.modelcontextprotocol.kotlin.sdk.types.CompleteResult +import io.modelcontextprotocol.kotlin.sdk.types.ElicitResult +import kotlinx.serialization.SerializationException import kotlinx.serialization.json.buildJsonObject import kotlinx.serialization.json.put import kotlin.test.Test import kotlin.test.assertEquals +import kotlin.test.assertFailsWith import kotlin.test.assertIs -class RequestSerializerTest { +class OldSchemaRequestSerializerTest { // Client Result Tests @Test @@ -60,7 +65,7 @@ class RequestSerializerTest { val decoded = McpJson.decodeFromString(json) - assertIs(decoded) + assertIs(decoded) assertEquals(CreateElicitationResult.Action.accept, decoded.action) } @@ -276,7 +281,7 @@ class RequestSerializerTest { "isError": false }""" - val decoded = McpJson.decodeFromString(json) + val decoded = McpJson.decodeFromString(json) assertIs(decoded) assertEquals(buildJsonObject { put("result", "Legacy tool result") }, decoded.toolResult) @@ -287,10 +292,9 @@ class RequestSerializerTest { fun `should deserialize EmptyRequestResult for unknown result type`() { val json = """{"unknownField": "value"}""" - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals(EmptyJsonObject, decoded._meta) + assertFailsWith { + McpJson.decodeFromString(json) + } } @Test diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/ToolSerializationTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaToolSerializationTest.kt similarity index 95% rename from kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/ToolSerializationTest.kt rename to kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaToolSerializationTest.kt index 969a1f3c..7e96dcff 100644 --- a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/ToolSerializationTest.kt +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaToolSerializationTest.kt @@ -2,6 +2,7 @@ package io.modelcontextprotocol.kotlin.sdk import io.kotest.assertions.json.shouldEqualJson import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.ToolSchema import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive @@ -9,7 +10,7 @@ import kotlinx.serialization.json.buildJsonObject import kotlin.test.Test import kotlin.test.assertEquals -class ToolSerializationTest { +class OldSchemaToolSerializationTest { // see https://docs.anthropic.com/en/docs/build-with-claude/tool-use /* language=json */ @@ -262,7 +263,7 @@ class ToolSerializationTest { @Test fun `should deserialize get_weather tool`() { - val actualTool = McpJson.decodeFromString(getWeatherToolJson) + val actualTool = McpJson.decodeFromString(getWeatherToolJson) assertEquals(expected = getWeatherTool, actual = actualTool) } @@ -270,7 +271,7 @@ class ToolSerializationTest { fun `should deserialize get_weather tool without optional properties`() { val toolJson = createWeatherToolJson(name = "get_weather") val expectedTool = createWeatherTool(name = "get_weather") - val actualTool = McpJson.decodeFromString(toolJson) + val actualTool = McpJson.decodeFromString(toolJson) assertEquals(expected = expectedTool, actual = actualTool) } @@ -280,7 +281,7 @@ class ToolSerializationTest { val toolJson = createWeatherToolJson(name = "get_weather", title = "Get weather") val expectedTool = createWeatherTool(name = "get_weather", title = "Get weather") - val actualTool = McpJson.decodeFromString(toolJson) + val actualTool = McpJson.decodeFromString(toolJson) assertEquals(expected = expectedTool, actual = actualTool) } @@ -342,7 +343,7 @@ class ToolSerializationTest { ), ) - val actualTool = McpJson.decodeFromString(toolJson) + val actualTool = McpJson.decodeFromString(toolJson) assertEquals(expected = expectedTool, actual = actualTool) } @@ -405,7 +406,7 @@ class ToolSerializationTest { ), ) - val actualTool = McpJson.decodeFromString(toolJson) + val actualTool = McpJson.decodeFromString(toolJson) assertEquals(expected = expectedTool, actual = actualTool) } @@ -479,9 +480,9 @@ class ToolSerializationTest { private fun createWeatherTool( name: String = "get_weather", title: String? = null, - outputSchema: Tool.Output? = null, + outputSchema: ToolSchema? = null, @Suppress("LocalVariableName") _meta: JsonObject? = null, - ): Tool = Tool( + ): io.modelcontextprotocol.kotlin.sdk.types.Tool = Tool( name = name, title = title, description = "Get the current weather in a given location", diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaTypesTest.kt similarity index 78% rename from kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesTest.kt rename to kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaTypesTest.kt index 96d25345..b3a4d5b1 100644 --- a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesTest.kt +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/OldSchemaTypesTest.kt @@ -1,6 +1,9 @@ package io.modelcontextprotocol.kotlin.sdk import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.CompleteRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.ContentTypes +import io.modelcontextprotocol.kotlin.sdk.types.ReferenceType import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertIs @@ -8,7 +11,7 @@ import kotlin.test.assertNotEquals import kotlin.test.assertTrue import kotlin.time.ExperimentalTime -class TypesTest { +class OldSchemaTypesTest { @Test fun `should have correct latest protocol version`() { @@ -18,7 +21,7 @@ class TypesTest { @Test fun `should have correct supported protocol versions`() { - assertIs>(SUPPORTED_PROTOCOL_VERSIONS) + assertIs>(SUPPORTED_PROTOCOL_VERSIONS) assertTrue(SUPPORTED_PROTOCOL_VERSIONS.contains(LATEST_PROTOCOL_VERSION)) assertTrue(SUPPORTED_PROTOCOL_VERSIONS.contains("2024-11-05")) assertEquals(2, SUPPORTED_PROTOCOL_VERSIONS.size) @@ -34,7 +37,7 @@ class TypesTest { fun `should validate ResourceTemplateReference`() { val resourceRef = ResourceTemplateReference(uri = "file:///path/to/file.txt") - assertEquals("ref/resource", resourceRef.type) + assertEquals(ReferenceType.ResourceTemplate, resourceRef.type) assertEquals("file:///path/to/file.txt", resourceRef.uri) } @@ -46,7 +49,7 @@ class TypesTest { val decoded = McpJson.decodeFromString(json) assertIs(decoded) - assertEquals("ref/resource", decoded.type) + assertEquals(ReferenceType.ResourceTemplate, decoded.type) assertEquals("https://example.com/resource", decoded.uri) } @@ -54,7 +57,7 @@ class TypesTest { fun `should validate PromptReference`() { val promptRef = PromptReference(name = "greeting") - assertEquals("ref/prompt", promptRef.type) + assertEquals(ReferenceType.Prompt, promptRef.type) assertEquals("greeting", promptRef.name) } @@ -66,26 +69,16 @@ class TypesTest { val decoded = McpJson.decodeFromString(json) assertIs(decoded) - assertEquals("ref/prompt", decoded.type) + assertEquals(ReferenceType.Prompt, decoded.type) assertEquals("test-prompt", decoded.name) } - @Test - fun `should handle UnknownReference for invalid type`() { - val invalidJson = """{"type": "invalid_type"}""" - - val decoded = McpJson.decodeFromString(invalidJson) - - assertIs(decoded) - assertEquals("invalid_type", decoded.type) - } - // PromptMessageContent Tests @Test fun `should validate text content`() { val textContent = TextContent(text = "Hello, world!") - assertEquals("text", textContent.type) + assertEquals(ContentTypes.TEXT, textContent.type) assertEquals("Hello, world!", textContent.text) } @@ -97,7 +90,7 @@ class TypesTest { val decoded = McpJson.decodeFromString(json) assertIs(decoded) - assertEquals("text", decoded.type) + assertEquals(ContentTypes.TEXT, decoded.type) assertEquals("Test message", decoded.text) } @@ -108,7 +101,7 @@ class TypesTest { mimeType = "image/png", ) - assertEquals("image", imageContent.type) + assertEquals(ContentTypes.IMAGE, imageContent.type) assertEquals("aGVsbG8=", imageContent.data) assertEquals("image/png", imageContent.mimeType) } @@ -124,7 +117,7 @@ class TypesTest { val decoded = McpJson.decodeFromString(json) assertIs(decoded) - assertEquals("image", decoded.type) + assertEquals(ContentTypes.IMAGE, decoded.type) assertEquals("dGVzdA==", decoded.data) assertEquals("image/jpeg", decoded.mimeType) } @@ -136,7 +129,7 @@ class TypesTest { mimeType = "audio/mp3", ) - assertEquals("audio", audioContent.type) + assertEquals(ContentTypes.AUDIO, audioContent.type) assertEquals("aGVsbG8=", audioContent.data) assertEquals("audio/mp3", audioContent.mimeType) } @@ -152,7 +145,7 @@ class TypesTest { val decoded = McpJson.decodeFromString(json) assertIs(decoded) - assertEquals("audio", decoded.type) + assertEquals(ContentTypes.AUDIO, decoded.type) assertEquals("YXVkaW8=", decoded.data) assertEquals("audio/wav", decoded.mimeType) } @@ -166,7 +159,7 @@ class TypesTest { ) val embeddedResource = EmbeddedResource(resource = resource) - assertEquals("resource", embeddedResource.type) + assertEquals(ContentTypes.EMBEDDED_RESOURCE, embeddedResource.type) assertEquals(resource, embeddedResource.resource) } @@ -183,7 +176,7 @@ class TypesTest { val decoded = McpJson.decodeFromString(json) assertIs(decoded) - assertEquals("resource", decoded.type) + assertEquals(ContentTypes.EMBEDDED_RESOURCE, decoded.type) assertIs(decoded.resource) val decodedBlob = decoded.resource assertEquals("YmluYXJ5ZGF0YQ==", decodedBlob.blob) @@ -191,16 +184,6 @@ class TypesTest { assertEquals("application/octet-stream", decodedBlob.mimeType) } - @Test - fun `should handle unknown content type`() { - val unknownJson = """{"type": "unknown_type"}""" - - val decoded = McpJson.decodeFromString(unknownJson) - - assertIs(decoded) - assertEquals("unknown_type", decoded.type) - } - // PromptMessage Tests @Test fun `should validate prompt message with text content`() { @@ -212,7 +195,7 @@ class TypesTest { assertEquals(Role.user, promptMessage.role) assertEquals(textContent, promptMessage.content) - assertEquals("text", promptMessage.content.type) + assertEquals(ContentTypes.TEXT, promptMessage.content.type) } @Test @@ -229,7 +212,7 @@ class TypesTest { ) assertEquals(Role.assistant, promptMessage.role) - assertEquals("resource", promptMessage.content.type) + assertEquals(ContentTypes.EMBEDDED_RESOURCE, promptMessage.content.type) val content = promptMessage.content as EmbeddedResource val textResource = content.resource as TextResourceContents assertEquals("Primary application entry point", textResource.text) @@ -299,10 +282,10 @@ class TypesTest { ) assertEquals(3, toolResult.content.size) - assertEquals("text", toolResult.content[0].type) - assertEquals("resource", toolResult.content[1].type) - assertEquals("resource", toolResult.content[2].type) - assertEquals(false, toolResult.isError) + assertEquals(ContentTypes.TEXT, toolResult.content[0].type) + assertEquals(ContentTypes.EMBEDDED_RESOURCE, toolResult.content[1].type) + assertEquals(ContentTypes.EMBEDDED_RESOURCE, toolResult.content[2].type) + assertEquals(null, toolResult.isError) } @Test @@ -310,7 +293,7 @@ class TypesTest { val toolResult = CallToolResult(content = emptyList()) assertEquals(0, toolResult.content.size) - assertEquals(false, toolResult.isError) + assertEquals(null, toolResult.isError) } @Test @@ -324,7 +307,7 @@ class TypesTest { ) val json = McpJson.encodeToString(toolResult) - val decoded = McpJson.decodeFromString(json) + val decoded = McpJson.decodeFromString(json) assertEquals(2, decoded.content.size) assertIs(decoded.content[0]) @@ -336,62 +319,70 @@ class TypesTest { @Test fun `should validate CompleteRequest with prompt reference`() { val request = CompleteRequest( - ref = PromptReference(name = "greeting"), - argument = CompleteRequest.Argument(name = "name", value = "A"), + CompleteRequestParams( + ref = PromptReference(name = "greeting"), + argument = CompleteRequest.Argument(name = "name", value = "A"), + ), ) assertEquals("completion/complete", request.method.value) - assertIs(request.ref) - val promptRef = request.ref + assertIs(request.params.ref) + val promptRef = request.params.ref assertEquals("greeting", promptRef.name) - assertEquals("name", request.argument.name) - assertEquals("A", request.argument.value) + assertEquals("name", request.params.argument.name) + assertEquals("A", request.params.argument.value) } @Test fun `should validate CompleteRequest with resource reference`() { val request = CompleteRequest( - ref = ResourceTemplateReference(uri = "github://repos/{owner}/{repo}"), - argument = CompleteRequest.Argument(name = "repo", value = "t"), + CompleteRequestParams( + ref = ResourceTemplateReference(uri = "github://repos/{owner}/{repo}"), + argument = CompleteRequest.Argument(name = "repo", value = "t"), + ), ) assertEquals("completion/complete", request.method.value) - assertIs(request.ref) - val resourceRef = request.ref + assertIs(request.params.ref) + val resourceRef = request.params.ref assertEquals("github://repos/{owner}/{repo}", resourceRef.uri) - assertEquals("repo", request.argument.name) - assertEquals("t", request.argument.value) + assertEquals("repo", request.params.argument.name) + assertEquals("t", request.params.argument.value) } @Test fun `should serialize and deserialize CompleteRequest correctly`() { val request = CompleteRequest( - ref = PromptReference(name = "test"), - argument = CompleteRequest.Argument(name = "arg", value = ""), + CompleteRequestParams( + ref = PromptReference(name = "test"), + argument = CompleteRequest.Argument(name = "arg", value = ""), + ), ) val json = McpJson.encodeToString(request) - val decoded = McpJson.decodeFromString(json) + val decoded = McpJson.decodeFromString(json) assertEquals("completion/complete", decoded.method.value) - assertIs(decoded.ref) - val promptRef = decoded.ref + assertIs(decoded.params.ref) + val promptRef = decoded.params.ref assertEquals("test", promptRef.name) - assertEquals("arg", decoded.argument.name) - assertEquals("", decoded.argument.value) + assertEquals("arg", decoded.params.argument.name) + assertEquals("", decoded.params.argument.value) } @Test fun `should validate CompleteRequest with complex URIs`() { val request = CompleteRequest( - ref = ResourceTemplateReference(uri = "api://v1/{tenant}/{resource}/{id}"), - argument = CompleteRequest.Argument(name = "id", value = "123"), + CompleteRequestParams( + ref = ResourceTemplateReference(uri = "api://v1/{tenant}/{resource}/{id}"), + argument = CompleteRequest.Argument(name = "id", value = "123"), + ), ) - val resourceRef = request.ref as ResourceTemplateReference + val resourceRef = request.params.ref as ResourceTemplateReference assertEquals("api://v1/{tenant}/{resource}/{id}", resourceRef.uri) - assertEquals("id", request.argument.name) - assertEquals("123", request.argument.value) + assertEquals("id", request.params.argument.name) + assertEquals("123", request.params.argument.value) } // InitializeResult Tests @@ -399,6 +390,7 @@ class TypesTest { fun `should create InitializeResult with default instructions`() { val serverInfo = Implementation(name = "test-server", version = "1.0.0") val result = InitializeResult( + capabilities = ServerCapabilities(), serverInfo = serverInfo, ) @@ -412,6 +404,7 @@ class TypesTest { val serverInfo = Implementation(name = "test-server", version = "1.0.0") val instructions = "Use this server to perform calculations. Call the 'add' tool to add numbers." val result = InitializeResult( + capabilities = ServerCapabilities(), serverInfo = serverInfo, instructions = instructions, ) @@ -426,6 +419,7 @@ class TypesTest { val serverInfo = Implementation(name = "test-server", version = "1.0.0") val instructions = "This server provides file system access. Use the 'read' tool to read files." val result = InitializeResult( + capabilities = ServerCapabilities(), serverInfo = serverInfo, instructions = instructions, ) @@ -442,6 +436,7 @@ class TypesTest { fun `should serialize and deserialize InitializeResult without instructions`() { val serverInfo = Implementation(name = "test-server", version = "1.0.0") val result = InitializeResult( + capabilities = ServerCapabilities(), serverInfo = serverInfo, ) diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesUtilTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesUtilTest.kt deleted file mode 100644 index 5207af35..00000000 --- a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesUtilTest.kt +++ /dev/null @@ -1,252 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk - -import io.modelcontextprotocol.kotlin.sdk.shared.McpJson -import kotlinx.serialization.json.buildJsonObject -import kotlinx.serialization.json.put -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertIs - -class TypesUtilTest { - - // ErrorCode Serializer Tests - @Test - fun `should serialize and deserialize ErrorCode Defined correctly`() { - val errorCode: ErrorCode = ErrorCode.Defined.InvalidRequest - - val json = McpJson.encodeToString(errorCode) - val decoded = McpJson.decodeFromString(json) - - assertEquals(ErrorCode.Defined.InvalidRequest, decoded) - assertEquals(-32600, decoded.code) - } - - @Test - fun `should serialize and deserialize ErrorCode Unknown correctly`() { - val errorCode: ErrorCode = ErrorCode.Unknown(1001) - - val json = McpJson.encodeToString(errorCode) - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals(1001, decoded.code) - } - - // Method Serializer Tests - @Test - fun `should serialize and deserialize Method Defined correctly`() { - val method: Method = Method.Defined.Initialize - - val json = McpJson.encodeToString(method) - val decoded = McpJson.decodeFromString(json) - - assertEquals(Method.Defined.Initialize, decoded) - assertEquals("initialize", decoded.value) - } - - @Test - fun `should serialize and deserialize Method Custom correctly`() { - val method: Method = Method.Custom("custom/method") - - val json = McpJson.encodeToString(method) - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("custom/method", decoded.value) - } - - // StopReason Serializer Tests - @Test - fun `should serialize and deserialize StopReason EndTurn correctly`() { - val stopReason: StopReason = StopReason.EndTurn - - val json = McpJson.encodeToString(stopReason) - val decoded = McpJson.decodeFromString(json) - - assertEquals(StopReason.EndTurn, decoded) - assertEquals("endTurn", decoded.value) - } - - @Test - fun `should serialize and deserialize StopReason Other correctly`() { - val stopReason: StopReason = StopReason.Other("custom_reason") - - val json = McpJson.encodeToString(stopReason) - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("custom_reason", decoded.value) - } - - // Reference Polymorphic Serializer Tests - @Test - fun `should deserialize ResourceTemplateReference polymorphically`() { - val json = """{"type": "ref/resource", "uri": "file:///test.txt"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("ref/resource", decoded.type) - assertEquals("file:///test.txt", decoded.uri) - } - - @Test - fun `should deserialize PromptReference polymorphically`() { - val json = """{"type": "ref/prompt", "name": "test-prompt"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("ref/prompt", decoded.type) - assertEquals("test-prompt", decoded.name) - } - - @Test - fun `should deserialize UnknownReference for invalid type`() { - val json = """{"type": "unknown_ref", "data": "test"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("unknown_ref", decoded.type) - } - - // PromptMessageContent Polymorphic Serializer Tests - @Test - fun `should deserialize TextContent polymorphically`() { - val json = """{"type": "text", "text": "Hello world"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("text", decoded.type) - assertEquals("Hello world", decoded.text) - } - - @Test - fun `should deserialize ImageContent polymorphically`() { - val json = """{"type": "image", "data": "aW1hZ2U=", "mimeType": "image/png"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("image", decoded.type) - assertEquals("aW1hZ2U=", decoded.data) - assertEquals("image/png", decoded.mimeType) - } - - @Test - fun `should deserialize AudioContent polymorphically`() { - val json = """{"type": "audio", "data": "YXVkaW8=", "mimeType": "audio/mp3"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("audio", decoded.type) - assertEquals("YXVkaW8=", decoded.data) - assertEquals("audio/mp3", decoded.mimeType) - } - - @Test - fun `should deserialize EmbeddedResource polymorphically`() { - val json = - """{"type": "resource", "resource": {"uri": "file:///test.txt", "mimeType": "text/plain", "text": "content"}}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("resource", decoded.type) - assertIs(decoded.resource) - val textResource = decoded.resource - assertEquals("file:///test.txt", textResource.uri) - assertEquals("content", textResource.text) - } - - // ResourceContents Polymorphic Serializer Tests - @Test - fun `should deserialize TextResourceContents polymorphically`() { - val json = """{"uri": "file:///test.txt", "mimeType": "text/plain", "text": "file content"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("file:///test.txt", decoded.uri) - assertEquals("file content", decoded.text) - assertEquals("text/plain", decoded.mimeType) - } - - @Test - fun `should deserialize BlobResourceContents polymorphically`() { - val json = """{"uri": "file:///binary.dat", "mimeType": "application/octet-stream", "blob": "YmluYXJ5"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("file:///binary.dat", decoded.uri) - assertEquals("YmluYXJ5", decoded.blob) - assertEquals("application/octet-stream", decoded.mimeType) - } - - @Test - fun `should deserialize UnknownResourceContents for missing fields`() { - val json = """{"uri": "file:///unknown.dat", "mimeType": "unknown/type"}""" - - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("file:///unknown.dat", decoded.uri) - assertEquals("unknown/type", decoded.mimeType) - } - - // RequestId Serializer Tests - @Test - fun `should serialize and deserialize RequestId StringId correctly`() { - val requestId: RequestId = RequestId.StringId("test-id") - - val json = McpJson.encodeToString(requestId) - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals("test-id", decoded.value) - } - - @Test - fun `should serialize and deserialize RequestId NumberId correctly`() { - val requestId: RequestId = RequestId.NumberId(42L) - - val json = McpJson.encodeToString(requestId) - val decoded = McpJson.decodeFromString(json) - - assertIs(decoded) - assertEquals(42L, decoded.value) - } - - // Utility Functions Tests - @Test - fun `should create CallToolResult ok correctly`() { - val result = CallToolResult.ok("Success message") - - assertEquals(listOf(TextContent("Success message")), result.content) - assertEquals(false, result.isError) - assertEquals(EmptyJsonObject, result._meta) - } - - @Test - fun `should create CallToolResult error correctly`() { - val result = CallToolResult.error("Error message") - - assertEquals(listOf(TextContent("Error message")), result.content) - assertEquals(true, result.isError) - assertEquals(EmptyJsonObject, result._meta) - } - - @Test - fun `should create CallToolResult with custom meta`() { - val meta = buildJsonObject { put("custom", "value") } - val result = CallToolResult.ok("Success", meta) - - assertEquals(listOf(TextContent("Success")), result.content) - assertEquals(false, result.isError) - assertEquals(meta, result._meta) - } -} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/models/ProgressNotificationsTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/models/OldSchemaProgressNotificationsTest.kt similarity index 88% rename from kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/models/ProgressNotificationsTest.kt rename to kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/models/OldSchemaProgressNotificationsTest.kt index 33927ec5..29bc12da 100644 --- a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/models/ProgressNotificationsTest.kt +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/models/OldSchemaProgressNotificationsTest.kt @@ -6,7 +6,7 @@ import io.modelcontextprotocol.kotlin.sdk.RequestId import io.modelcontextprotocol.kotlin.sdk.shared.McpJson import kotlin.test.Test -class ProgressNotificationsTest { +class OldSchemaProgressNotificationsTest { /** * https://modelcontextprotocol.io/specification/2025-06-18/basic/utilities/progress#progress-flow @@ -27,7 +27,7 @@ class ProgressNotificationsTest { } """.trimIndent() - val result = McpJson.decodeFromString(json) + val result = McpJson.decodeFromString(json) result shouldBe ProgressNotification( params = ProgressNotification.Params( @@ -58,7 +58,7 @@ class ProgressNotificationsTest { } """.trimIndent() - val result = McpJson.decodeFromString(json) + val result = McpJson.decodeFromString(json) result shouldBe ProgressNotification( params = ProgressNotification.Params( progressToken = RequestId.NumberId(100500), diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CapabilitiesTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CapabilitiesTest.kt new file mode 100644 index 00000000..c288ccaf --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CapabilitiesTest.kt @@ -0,0 +1,636 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNull + +class CapabilitiesTest { + + @Test + fun `should serialize Implementation with minimal fields`() { + val implementation = Implementation( + name = "test-server", + version = "1.0.0", + ) + val json = McpJson.encodeToString(implementation) + + json shouldEqualJson """ + { + "name": "test-server", + "version": "1.0.0" + } + """.trimIndent() + } + + @Test + fun `should serialize Implementation with all fields`() { + val implementation = Implementation( + name = "test-server", + version = "1.0.0", + title = "Test Server", + websiteUrl = "https://example.com", + icons = listOf( + Icon(src = "https://example.com/icon.png"), + ), + ) + val json = McpJson.encodeToString(implementation) + + json shouldEqualJson """ + { + "name": "test-server", + "version": "1.0.0", + "title": "Test Server", + "websiteUrl": "https://example.com", + "icons": [ + {"src": "https://example.com/icon.png"} + ] + } + """.trimIndent() + } + + @Test + fun `should deserialize Implementation from JSON`() { + val json = """ + { + "name": "test-server", + "version": "2.1.3-beta", + "title": "Test Server", + "websiteUrl": "https://example.com" + } + """.trimIndent() + + val implementation = McpJson.decodeFromString(json) + + assertEquals("test-server", implementation.name) + assertEquals("2.1.3-beta", implementation.version) + assertEquals("Test Server", implementation.title) + assertEquals("https://example.com", implementation.websiteUrl) + } + + @Test + fun `should deserialize Implementation with minimal fields from JSON`() { + val json = """ + { + "name": "minimal-server", + "version": "0.1.0" + } + """.trimIndent() + + val implementation = McpJson.decodeFromString(json) + + assertEquals("minimal-server", implementation.name) + assertEquals("0.1.0", implementation.version) + assertNull(implementation.title) + assertNull(implementation.websiteUrl) + assertNull(implementation.icons) + } + + @Test + fun `should serialize and deserialize Implementation round trip`() { + val original = Implementation( + name = "round-trip-test", + version = "1.2.3", + title = "Round Trip Test", + websiteUrl = "https://test.com", + ) + + val json = McpJson.encodeToString(original) + val decoded = McpJson.decodeFromString(json) + + assertEquals(original.name, decoded.name) + assertEquals(original.version, decoded.version) + assertEquals(original.title, decoded.title) + assertEquals(original.websiteUrl, decoded.websiteUrl) + } + + // ClientCapabilities tests + @Test + fun `should serialize empty ClientCapabilities`() { + val capabilities = ClientCapabilities() + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson "{}" + } + + @Test + fun `should serialize ClientCapabilities with sampling`() { + val capabilities = ClientCapabilities( + sampling = ClientCapabilities.sampling, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "sampling": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ClientCapabilities with roots without listChanged`() { + val capabilities = ClientCapabilities( + roots = ClientCapabilities.Roots(), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "roots": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ClientCapabilities with roots with listChanged`() { + val capabilities = ClientCapabilities( + roots = ClientCapabilities.Roots(listChanged = true), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "roots": { + "listChanged": true + } + } + """.trimIndent() + } + + @Test + fun `should serialize ClientCapabilities with elicitation`() { + val capabilities = ClientCapabilities( + elicitation = ClientCapabilities.elicitation, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "elicitation": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ClientCapabilities with experimental`() { + val experimental = buildJsonObject { + put( + "customFeature", + buildJsonObject { + put("enabled", true) + }, + ) + } + val capabilities = ClientCapabilities( + experimental = experimental, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "experimental": { + "customFeature": { + "enabled": true + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ClientCapabilities with all fields`() { + val experimental = buildJsonObject { + put("feature1", buildJsonObject { put("enabled", true) }) + } + val capabilities = ClientCapabilities( + sampling = ClientCapabilities.sampling, + roots = ClientCapabilities.Roots(listChanged = true), + elicitation = ClientCapabilities.elicitation, + experimental = experimental, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "sampling": {}, + "roots": { + "listChanged": true + }, + "elicitation": {}, + "experimental": { + "feature1": { + "enabled": true + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ClientCapabilities from JSON`() { + val json = """ + { + "sampling": {}, + "roots": { + "listChanged": true + }, + "elicitation": {} + } + """.trimIndent() + + val capabilities = McpJson.decodeFromString(json) + + assertEquals(EmptyJsonObject, capabilities.sampling) + assertEquals(true, capabilities.roots?.listChanged) + assertEquals(EmptyJsonObject, capabilities.elicitation) + } + + @Test + fun `should deserialize empty ClientCapabilities from JSON`() { + val json = "{}" + + val capabilities = McpJson.decodeFromString(json) + + assertNull(capabilities.sampling) + assertNull(capabilities.roots) + assertNull(capabilities.elicitation) + assertNull(capabilities.experimental) + } + + @Test + fun `should serialize and deserialize ClientCapabilities round trip`() { + val original = ClientCapabilities( + sampling = ClientCapabilities.sampling, + roots = ClientCapabilities.Roots(listChanged = false), + elicitation = ClientCapabilities.elicitation, + ) + + val json = McpJson.encodeToString(original) + val decoded = McpJson.decodeFromString(json) + + assertEquals(original.sampling, decoded.sampling) + assertEquals(original.roots?.listChanged, decoded.roots?.listChanged) + assertEquals(original.elicitation, decoded.elicitation) + } + + // ServerCapabilities tests + @Test + fun `should serialize empty ServerCapabilities`() { + val capabilities = ServerCapabilities() + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson "{}" + } + + @Test + fun `should serialize ServerCapabilities with tools without listChanged`() { + val capabilities = ServerCapabilities( + tools = ServerCapabilities.Tools(), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "tools": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with tools with listChanged`() { + val capabilities = ServerCapabilities( + tools = ServerCapabilities.Tools(listChanged = true), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "tools": { + "listChanged": true + } + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with resources without options`() { + val capabilities = ServerCapabilities( + resources = ServerCapabilities.Resources(), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "resources": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with resources with listChanged`() { + val capabilities = ServerCapabilities( + resources = ServerCapabilities.Resources(listChanged = true), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "resources": { + "listChanged": true + } + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with resources with subscribe`() { + val capabilities = ServerCapabilities( + resources = ServerCapabilities.Resources(subscribe = true), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "resources": { + "subscribe": true + } + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with resources with both options`() { + val capabilities = ServerCapabilities( + resources = ServerCapabilities.Resources( + listChanged = true, + subscribe = false, + ), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "resources": { + "listChanged": true, + "subscribe": false + } + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with prompts without listChanged`() { + val capabilities = ServerCapabilities( + prompts = ServerCapabilities.Prompts(), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "prompts": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with prompts with listChanged`() { + val capabilities = ServerCapabilities( + prompts = ServerCapabilities.Prompts(listChanged = false), + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "prompts": { + "listChanged": false + } + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with logging`() { + val capabilities = ServerCapabilities( + logging = ServerCapabilities.Logging, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "logging": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with completions`() { + val capabilities = ServerCapabilities( + completions = ServerCapabilities.Completions, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "completions": {} + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with experimental`() { + val experimental = buildJsonObject { + put( + "customCapability", + buildJsonObject { + put("version", "1.0") + }, + ) + } + val capabilities = ServerCapabilities( + experimental = experimental, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "experimental": { + "customCapability": { + "version": "1.0" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ServerCapabilities with all fields`() { + val experimental = buildJsonObject { + put("feature1", buildJsonObject { put("enabled", true) }) + } + val capabilities = ServerCapabilities( + tools = ServerCapabilities.Tools(listChanged = true), + resources = ServerCapabilities.Resources( + listChanged = true, + subscribe = true, + ), + prompts = ServerCapabilities.Prompts(listChanged = false), + logging = ServerCapabilities.Logging, + completions = ServerCapabilities.Completions, + experimental = experimental, + ) + val json = McpJson.encodeToString(capabilities) + + json shouldEqualJson """ + { + "tools": { + "listChanged": true + }, + "resources": { + "listChanged": true, + "subscribe": true + }, + "prompts": { + "listChanged": false + }, + "logging": {}, + "completions": {}, + "experimental": { + "feature1": { + "enabled": true + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ServerCapabilities from JSON`() { + val json = """ + { + "tools": { + "listChanged": true + }, + "resources": { + "listChanged": false, + "subscribe": true + }, + "prompts": { + "listChanged": true + }, + "logging": {}, + "completions": {} + } + """.trimIndent() + + val capabilities = McpJson.decodeFromString(json) + + assertEquals(true, capabilities.tools?.listChanged) + assertEquals(false, capabilities.resources?.listChanged) + assertEquals(true, capabilities.resources?.subscribe) + assertEquals(true, capabilities.prompts?.listChanged) + assertEquals(EmptyJsonObject, capabilities.logging) + assertEquals(EmptyJsonObject, capabilities.completions) + } + + @Test + fun `should deserialize empty ServerCapabilities from JSON`() { + val json = "{}" + + val capabilities = McpJson.decodeFromString(json) + + assertNull(capabilities.tools) + assertNull(capabilities.resources) + assertNull(capabilities.prompts) + assertNull(capabilities.logging) + assertNull(capabilities.completions) + assertNull(capabilities.experimental) + } + + @Test + fun `should serialize and deserialize ServerCapabilities round trip`() { + val original = ServerCapabilities( + tools = ServerCapabilities.Tools(listChanged = true), + resources = ServerCapabilities.Resources( + listChanged = false, + subscribe = true, + ), + prompts = ServerCapabilities.Prompts(listChanged = true), + logging = ServerCapabilities.Logging, + ) + + val json = McpJson.encodeToString(original) + val decoded = McpJson.decodeFromString(json) + + assertEquals(original.tools?.listChanged, decoded.tools?.listChanged) + assertEquals(original.resources?.listChanged, decoded.resources?.listChanged) + assertEquals(original.resources?.subscribe, decoded.resources?.subscribe) + assertEquals(original.prompts?.listChanged, decoded.prompts?.listChanged) + assertEquals(original.logging, decoded.logging) + } + + // Additional nested type tests + @Test + fun `should deserialize ClientCapabilities Roots with null listChanged`() { + val json = """ + { + "roots": {} + } + """.trimIndent() + + val capabilities = McpJson.decodeFromString(json) + + assertNull(capabilities.roots?.listChanged) + } + + @Test + fun `should deserialize ServerCapabilities nested types with null values`() { + val json = """ + { + "tools": {}, + "resources": {}, + "prompts": {} + } + """.trimIndent() + + val capabilities = McpJson.decodeFromString(json) + + assertNull(capabilities.tools?.listChanged) + assertNull(capabilities.resources?.listChanged) + assertNull(capabilities.resources?.subscribe) + assertNull(capabilities.prompts?.listChanged) + } + + @Test + fun `should handle ClientCapabilities with additionalProperties in sampling`() { + val json = """ + { + "sampling": { + "customProperty": "customValue" + } + } + """.trimIndent() + + val capabilities = McpJson.decodeFromString(json) + + // Should not fail - additionalProperties are allowed + assertEquals("customValue", capabilities.sampling?.get("customProperty")?.toString()?.trim('"')) + } + + @Test + fun `should handle ServerCapabilities with additionalProperties in logging`() { + val json = """ + { + "logging": { + "level": "debug" + } + } + """.trimIndent() + + val capabilities = McpJson.decodeFromString(json) + + // Should not fail - additionalProperties are allowed + assertEquals("debug", capabilities.logging?.get("level")?.toString()?.trim('"')) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CommonTypeTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CommonTypeTest.kt new file mode 100644 index 00000000..6247a495 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CommonTypeTest.kt @@ -0,0 +1,184 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotEquals +import kotlin.test.assertNull +import kotlin.test.assertTrue + +class CommonTypeTest { + + @Test + fun `should have correct latest protocol version`() { + assertNotEquals("", LATEST_PROTOCOL_VERSION) + assertEquals("2025-03-26", LATEST_PROTOCOL_VERSION) + } + + @Test + fun `should have correct supported protocol versions`() { + assertIs>(SUPPORTED_PROTOCOL_VERSIONS) + assertTrue(SUPPORTED_PROTOCOL_VERSIONS.contains(LATEST_PROTOCOL_VERSION)) + assertTrue(SUPPORTED_PROTOCOL_VERSIONS.contains("2024-11-05")) + assertEquals(2, SUPPORTED_PROTOCOL_VERSIONS.size) + } + + @Test + fun `should serialize Icon with minimal fields`() { + val icon = Icon(src = "https://example.com/icon.png") + val json = McpJson.encodeToString(icon) + + json shouldEqualJson """ + { + "src": "https://example.com/icon.png" + } + """.trimIndent() + } + + @Test + fun `should serialize Icon with all fields`() { + val icon = Icon( + src = "https://example.com/icon.png", + mimeType = "image/png", + sizes = listOf("48x48", "96x96"), + theme = Icon.Theme.Light, + ) + val json = McpJson.encodeToString(icon) + + json shouldEqualJson """ + { + "src": "https://example.com/icon.png", + "mimeType": "image/png", + "sizes": ["48x48", "96x96"], + "theme": "light" + } + """.trimIndent() + } + + @Test + fun `should deserialize Icon from JSON`() { + val json = """ + { + "src": "https://example.com/icon.png", + "mimeType": "image/png", + "sizes": ["48x48"], + "theme": "dark" + } + """.trimIndent() + + val icon = McpJson.decodeFromString(json) + + assertEquals("https://example.com/icon.png", icon.src) + assertEquals("image/png", icon.mimeType) + assertEquals(listOf("48x48"), icon.sizes) + assertEquals(Icon.Theme.Dark, icon.theme) + } + + @Test + fun `should deserialize Icon with minimal fields from JSON`() { + val json = """{"src": "https://example.com/icon.png"}""" + + val icon = McpJson.decodeFromString(json) + + assertEquals("https://example.com/icon.png", icon.src) + assertNull(icon.mimeType) + assertNull(icon.sizes) + assertNull(icon.theme) + } + + @Test + fun `should serialize theme as lowercase strings`() { + val lightIcon = Icon(src = "test.png", theme = Icon.Theme.Light) + val darkIcon = Icon(src = "test.png", theme = Icon.Theme.Dark) + + val lightJson = McpJson.encodeToString(lightIcon) + val darkJson = McpJson.encodeToString(darkIcon) + + assertTrue(lightJson.contains("\"theme\":\"light\"")) + assertTrue(darkJson.contains("\"theme\":\"dark\"")) + } + + @Test + fun `should serialize Role as lowercase strings`() { + val userJson = McpJson.encodeToString(Role.User) + val assistantJson = McpJson.encodeToString(Role.Assistant) + + assertEquals("\"user\"", userJson) + assertEquals("\"assistant\"", assistantJson) + } + + @Test + fun `should deserialize Role from lowercase strings`() { + val user = McpJson.decodeFromString("\"user\"") + val assistant = McpJson.decodeFromString("\"assistant\"") + + assertEquals(Role.User, user) + assertEquals(Role.Assistant, assistant) + } + + @Test + fun `should serialize Annotations with all fields`() { + val annotations = Annotations( + audience = listOf(Role.User, Role.Assistant), + priority = 0.8, + lastModified = "2025-01-12T15:00:58Z", + ) + + val json = McpJson.encodeToString(annotations) + + json shouldEqualJson """ + { + "audience": ["user", "assistant"], + "priority": 0.8, + "lastModified": "2025-01-12T15:00:58Z" + } + """.trimIndent() + } + + @Test + fun `should serialize Annotations with minimal fields`() { + val annotations = Annotations(priority = 0.5) + + val json = McpJson.encodeToString(annotations) + + json shouldEqualJson """ + { + "priority": 0.5 + } + """.trimIndent() + } + + @Test + fun `should deserialize Annotations from JSON`() { + val json = """ + { + "audience": ["user"], + "priority": 0.9, + "lastModified": "2025-01-12T15:00:58Z" + } + """.trimIndent() + + val annotations = McpJson.decodeFromString(json) + + assertEquals(listOf(Role.User), annotations.audience) + assertEquals(0.9, annotations.priority) + assertEquals("2025-01-12T15:00:58Z", annotations.lastModified) + } + + @Test + fun `should serialize and deserialize Annotations round trip`() { + val original = Annotations( + audience = listOf(Role.User, Role.Assistant), + priority = 0.42, + lastModified = "2025-01-12T15:00:58Z", + ) + + val json = McpJson.encodeToString(original) + val decoded = McpJson.decodeFromString(json) + + assertEquals(original.audience, decoded.audience) + assertEquals(original.priority, decoded.priority) + assertEquals(original.lastModified, decoded.lastModified) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CompletionTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CompletionTest.kt new file mode 100644 index 00000000..9a27ac50 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/CompletionTest.kt @@ -0,0 +1,227 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFailsWith +import kotlin.test.assertIs +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class CompletionTest { + + @Test + fun `should serialize CompleteRequest with minimal fields`() { + val request = CompleteRequest( + CompleteRequestParams( + argument = CompleteRequestParams.Argument( + name = "name", + value = "A", + ), + ref = PromptReference(name = "greeting"), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "completion/complete", + "params": { + "argument": { + "name": "name", + "value": "A" + }, + "ref": { + "type": "ref/prompt", + "name": "greeting" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize CompleteRequest with context and meta`() { + val request = CompleteRequest( + CompleteRequestParams( + argument = CompleteRequestParams.Argument( + name = "repo", + value = "mcp", + ), + ref = ResourceTemplateReference(uri = "github://repos/{owner}/{repo}"), + context = CompleteRequestParams.Context( + arguments = mapOf( + "owner" to "modelcontextprotocol", + "language" to "kotlin", + ), + ), + meta = RequestMeta( + buildJsonObject { + put("progressToken", "token-123") + }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "completion/complete", + "params": { + "argument": { + "name": "repo", + "value": "mcp" + }, + "ref": { + "type": "ref/resource", + "uri": "github://repos/{owner}/{repo}" + }, + "context": { + "arguments": { + "owner": "modelcontextprotocol", + "language": "kotlin" + } + }, + "_meta": { + "progressToken": "token-123" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CompleteRequest from JSON`() { + val json = """ + { + "method": "completion/complete", + "params": { + "argument": { + "name": "file", + "value": "mai" + }, + "ref": { + "type": "ref/resource", + "uri": "file:///{path}" + }, + "context": { + "arguments": { + "path": "src/main" + } + }, + "_meta": { + "progressToken": 42 + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + assertEquals(Method.Defined.CompletionComplete, request.method) + + val params = request.params + assertEquals("file", params.argument.name) + assertEquals("mai", params.argument.value) + val ref = params.ref + assertIs(ref) + assertEquals("file:///{path}", ref.uri) + assertNotNull(params.context) + assertEquals(mapOf("path" to "src/main"), params.context.arguments) + assertEquals(ProgressToken(42), params.meta?.progressToken) + } + + @Test + fun `should serialize CompleteResult with all fields`() { + val result = CompleteResult( + completion = CompleteResult.Completion( + values = listOf("src/main/kotlin/App.kt", "src/main/kotlin/Main.kt"), + total = 25, + hasMore = true, + ), + meta = buildJsonObject { + put("source", "cache") + }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "completion": { + "values": [ + "src/main/kotlin/App.kt", + "src/main/kotlin/Main.kt" + ], + "total": 25, + "hasMore": true + }, + "_meta": { + "source": "cache" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CompleteResult from JSON`() { + val json = """ + { + "completion": { + "values": ["README.md", "CONTRIBUTING.md"], + "total": 2, + "hasMore": false + }, + "_meta": { + "fetchedAt": "2025-01-12T15:00:58Z" + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + assertEquals(listOf("README.md", "CONTRIBUTING.md"), result.completion.values) + assertEquals(2, result.completion.total) + assertEquals(false, result.completion.hasMore) + assertNotNull(result.meta) + assertEquals( + "2025-01-12T15:00:58Z", + result.meta["fetchedAt"]?.jsonPrimitive?.content, + ) + } + + @Test + fun `should allow omitting optional Total and HasMore`() { + val result = CompleteResult( + completion = CompleteResult.Completion(values = listOf("foo")), + meta = null, + ) + + val json = McpJson.encodeToString(result) + json shouldEqualJson """ + { + "completion": { + "values": ["foo"] + } + } + """.trimIndent() + + val decoded = McpJson.decodeFromString(json) + assertEquals(listOf("foo"), decoded.completion.values) + assertNull(decoded.completion.total) + assertNull(decoded.completion.hasMore) + assertNull(decoded.meta) + } + + @Test + fun `should enforce maximum of 100 completion values`() { + val values = (1..101).map { "entry-$it" } + + assertFailsWith { + CompleteResult.Completion(values = values) + } + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ContentTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ContentTest.kt new file mode 100644 index 00000000..2290dce7 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ContentTest.kt @@ -0,0 +1,301 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNull + +class ContentTest { + + @Test + fun `should serialize TextContent with minimal fields`() { + val content = TextContent(text = "Hello, MCP!") + + val json = McpJson.encodeToString(content) + + json shouldEqualJson """ + { + "type": "text", + "text": "Hello, MCP!" + } + """.trimIndent() + } + + @Test + fun `should serialize and deserialize TextContent with annotations`() { + val content = TextContent( + text = "Need help?", + annotations = Annotations(audience = listOf(Role.User)), + meta = buildJsonObject { put("origin", "assistant") }, + ) + + val json = McpJson.encodeToString(content) + + json shouldEqualJson """ + { + "type": "text", + "text": "Need help?", + "annotations": { + "audience": ["user"] + }, + "_meta": { + "origin": "assistant" + } + } + """.trimIndent() + + val decoded = McpJson.decodeFromString(json) as TextContent + assertEquals("Need help?", decoded.text) + assertEquals(listOf(Role.User), decoded.annotations?.audience) + assertEquals("assistant", decoded.meta?.get("origin")?.jsonPrimitive?.content) + } + + @Test + fun `should serialize ImageContent`() { + val content = ImageContent( + data = "aW1hZ2VEYXRh", + mimeType = "image/png", + ) + + val json = McpJson.encodeToString(content) + + json shouldEqualJson """ + { + "type": "image", + "data": "aW1hZ2VEYXRh", + "mimeType": "image/png" + } + """.trimIndent() + } + + @Test + fun `should deserialize ImageContent from JSON`() { + val json = """ + { + "type": "image", + "data": "Zm9vYmFy", + "mimeType": "image/jpeg", + "annotations": {"priority": 0.6} + } + """.trimIndent() + + val content = McpJson.decodeFromString(json) as ImageContent + assertEquals("Zm9vYmFy", content.data) + assertEquals("image/jpeg", content.mimeType) + assertEquals(0.6, content.annotations?.priority) + assertNull(content.meta) + } + + @Test + fun `should serialize AudioContent`() { + val content = AudioContent( + data = "YXVkaW9kYXRh", + mimeType = "audio/wav", + meta = buildJsonObject { put("durationMs", 1200) }, + ) + + val json = McpJson.encodeToString(content) + + json shouldEqualJson """ + { + "type": "audio", + "data": "YXVkaW9kYXRh", + "mimeType": "audio/wav", + "_meta": { + "durationMs": 1200 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize AudioContent from JSON`() { + val json = """ + { + "type": "audio", + "data": "YmF6", + "mimeType": "audio/mpeg", + "_meta": {"speaker": "user"} + } + """.trimIndent() + + val content = McpJson.decodeFromString(json) as AudioContent + assertEquals("audio/mpeg", content.mimeType) + assertEquals("YmF6", content.data) + assertEquals("user", content.meta?.get("speaker")?.jsonPrimitive?.content) + } + + @Test + fun `should serialize ResourceLink with minimal fields`() { + val resource = ResourceLink( + name = "README", + uri = "file:///workspace/README.md", + ) + + val json = McpJson.encodeToString(resource) + + json shouldEqualJson """ + { + "type": "resource_link", + "name": "README", + "uri": "file:///workspace/README.md" + } + """.trimIndent() + } + + @Test + fun `should serialize ResourceLink with all fields`() { + val resource = ResourceLink( + name = "README", + uri = "file:///workspace/README.md", + title = "Workspace README", + size = 2048, + mimeType = "text/markdown", + description = "Primary documentation", + icons = listOf(Icon(src = "https://example.com/icon.png")), + annotations = Annotations(priority = 0.75), + meta = buildJsonObject { put("etag", "1234") }, + ) + + val json = McpJson.encodeToString(resource) + + json shouldEqualJson """ + { + "type": "resource_link", + "name": "README", + "uri": "file:///workspace/README.md", + "title": "Workspace README", + "size": 2048, + "mimeType": "text/markdown", + "description": "Primary documentation", + "icons": [ + { + "src": "https://example.com/icon.png" + } + ], + "annotations": { + "priority": 0.75 + }, + "_meta": { + "etag": "1234" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ResourceLink from JSON`() { + val json = """ + { + "type": "resource_link", + "name": "config", + "uri": "file:///config.yaml", + "size": 512, + "annotations": { "lastModified": "2025-01-12T15:00:58Z" } + } + """.trimIndent() + + val resource = McpJson.decodeFromString(json) as ResourceLink + assertEquals("config", resource.name) + assertEquals("file:///config.yaml", resource.uri) + assertEquals(512, resource.size) + assertEquals("2025-01-12T15:00:58Z", resource.annotations?.lastModified) + assertNull(resource.meta) + } + + @Test + fun `should serialize EmbeddedResource with text contents`() { + val embedded = EmbeddedResource( + resource = TextResourceContents( + text = "fun main() = println(\"Hello\")", + uri = "file:///workspace/Main.kt", + mimeType = "text/x-kotlin", + meta = buildJsonObject { put("languageId", "kotlin") }, + ), + annotations = Annotations(audience = listOf(Role.Assistant)), + meta = buildJsonObject { put("source", "analysis") }, + ) + + val json = McpJson.encodeToString(embedded) + + json shouldEqualJson """ + { + "type": "resource", + "resource": { + "text": "fun main() = println(\"Hello\")", + "uri": "file:///workspace/Main.kt", + "mimeType": "text/x-kotlin", + "_meta": { + "languageId": "kotlin" + } + }, + "annotations": { + "audience": ["assistant"] + }, + "_meta": { + "source": "analysis" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize EmbeddedResource with blob contents`() { + val json = """ + { + "type": "resource", + "resource": { + "blob": "YmFzZTY0", + "uri": "file:///workspace/archive.bin", + "mimeType": "application/octet-stream" + }, + "_meta": {"encoding": "base64"} + } + """.trimIndent() + + val embedded = McpJson.decodeFromString(json) as EmbeddedResource + assertEquals(ContentTypes.EMBEDDED_RESOURCE, embedded.type) + assertNull(embedded.annotations) + assertEquals("base64", embedded.meta?.get("encoding")?.jsonPrimitive?.content) + + val resource = embedded.resource + assertIs(resource) + assertEquals("YmFzZTY0", resource.blob) + assertEquals("file:///workspace/archive.bin", resource.uri) + assertEquals("application/octet-stream", resource.mimeType) + } + + @Test + fun `should decode heterogeneous content blocks`() { + val json = """ + [ + { + "type": "text", + "text": "Hello" + }, + { + "type": "resource_link", + "name": "log", + "uri": "file:///tmp/log.txt" + }, + { + "type": "resource", + "resource": { + "text": "line1", + "uri": "file:///tmp/log.txt" + } + } + ] + """.trimIndent() + + val content = McpJson.decodeFromString>(json) + assertEquals(3, content.size) + assertIs(content[0]) + assertIs(content[1]) + assertIs(content[2]) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ElicitationTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ElicitationTest.kt new file mode 100644 index 00000000..c59c23fc --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ElicitationTest.kt @@ -0,0 +1,206 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFailsWith +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class ElicitationTest { + + @Test + fun `should serialize ElicitRequest with requested schema`() { + val request = ElicitRequest( + ElicitRequestParams( + message = "Provide repository details", + requestedSchema = ElicitRequestParams.RequestedSchema( + properties = buildJsonObject { + put( + "owner", + buildJsonObject { + put("type", "string") + put("description", "GitHub organization") + }, + ) + put( + "repository", + buildJsonObject { + put("type", "string") + put("title", "Repository name") + }, + ) + put( + "private", + buildJsonObject { + put("type", "boolean") + put("description", "Is the repository private?") + }, + ) + }, + required = listOf("owner", "repository"), + ), + meta = RequestMeta( + buildJsonObject { + put("progressToken", "token-42") + }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "elicitation/create", + "params": { + "message": "Provide repository details", + "requestedSchema": { + "properties": { + "owner": { + "type": "string", + "description": "GitHub organization" + }, + "repository": { + "type": "string", + "title": "Repository name" + }, + "private": { + "type": "boolean", + "description": "Is the repository private?" + } + }, + "required": ["owner", "repository"], + "type": "object" + }, + "_meta": { + "progressToken": "token-42" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ElicitRequest from JSON`() { + val json = """ + { + "method": "elicitation/create", + "params": { + "message": "Tell us about the repository", + "requestedSchema": { + "properties": { + "name": { + "type": "string", + "title": "Repository name" + }, + "stars": { + "type": "number", + "description": "GitHub stars" + } + }, + "type": "object" + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + assertEquals(Method.Defined.ElicitationCreate, request.method) + + val params = request.params + assertEquals("Tell us about the repository", params.message) + assertNull(params.meta) + + val schema = params.requestedSchema + assertEquals("object", schema.type) + assertNull(schema.required) + + val nameDefinition = schema.properties["name"]?.jsonObject + assertNotNull(nameDefinition) + assertEquals("string", nameDefinition["type"]?.jsonPrimitive?.content) + assertEquals("Repository name", nameDefinition["title"]?.jsonPrimitive?.content) + + val starsDefinition = schema.properties["stars"]?.jsonObject + assertNotNull(starsDefinition) + assertEquals("number", starsDefinition["type"]?.jsonPrimitive?.content) + assertEquals("GitHub stars", starsDefinition["description"]?.jsonPrimitive?.content) + } + + @Test + fun `should serialize and deserialize accept result with content`() { + val result = ElicitResult( + action = ElicitResult.Action.Accept, + content = buildJsonObject { + put("repository", "kotlin-sdk") + put("stars", 128) + put("private", false) + }, + meta = buildJsonObject { + put("submittedAt", "2025-01-12T15:00:58Z") + }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "action": "accept", + "content": { + "repository": "kotlin-sdk", + "stars": 128, + "private": false + }, + "_meta": { + "submittedAt": "2025-01-12T15:00:58Z" + } + } + """.trimIndent() + + val decoded = McpJson.decodeFromString(json) + assertEquals(ElicitResult.Action.Accept, decoded.action) + + val content = decoded.content + assertNotNull(content) + assertEquals("kotlin-sdk", content["repository"]?.jsonPrimitive?.content) + assertEquals(128, content["stars"]?.jsonPrimitive?.int) + assertEquals(false, content["private"]?.jsonPrimitive?.boolean) + + val meta = decoded.meta + assertNotNull(meta) + assertEquals("2025-01-12T15:00:58Z", meta["submittedAt"]?.jsonPrimitive?.content) + } + + @Test + fun `should deserialize decline result without content`() { + val json = """ + { + "action": "decline", + "_meta": { + "reason": "User skipped" + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + assertEquals(ElicitResult.Action.Decline, result.action) + assertNull(result.content) + assertEquals("User skipped", result.meta?.get("reason")?.jsonPrimitive?.content) + } + + @Test + fun `should require content only for accept action`() { + assertFailsWith { + ElicitResult( + action = ElicitResult.Action.Cancel, + content = buildJsonObject { put("value", "ignored") }, + ) + } + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/InitializeTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/InitializeTest.kt new file mode 100644 index 00000000..6af7c4e9 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/InitializeTest.kt @@ -0,0 +1,219 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class InitializeTest { + + @Test + fun `should serialize InitializeRequest with capabilities and meta`() { + val request = InitializeRequest( + InitializeRequestParams( + protocolVersion = "2024-11-05", + capabilities = ClientCapabilities( + sampling = ClientCapabilities.sampling, + roots = ClientCapabilities.Roots(listChanged = true), + elicitation = ClientCapabilities.elicitation, + experimental = buildJsonObject { + put( + "workspace-sync", + buildJsonObject { put("enabled", true) }, + ) + }, + ), + clientInfo = Implementation( + name = "dev-client", + version = "1.2.3", + title = "Dev Client", + icons = listOf(Icon(src = "https://example.com/icon.png")), + ), + meta = RequestMeta( + buildJsonObject { put("progressToken", "init-42") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "initialize", + "params": { + "protocolVersion": "2024-11-05", + "capabilities": { + "sampling": {}, + "roots": { + "listChanged": true + }, + "elicitation": {}, + "experimental": { + "workspace-sync": { + "enabled": true + } + } + }, + "clientInfo": { + "name": "dev-client", + "version": "1.2.3", + "title": "Dev Client", + "icons": [ + {"src": "https://example.com/icon.png"} + ] + }, + "_meta": { + "progressToken": "init-42" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize InitializeRequest from JSON`() { + val json = """ + { + "method": "initialize", + "params": { + "protocolVersion": "2025-03-26", + "capabilities": { + "sampling": {}, + "roots": { + "listChanged": false + }, + "experimental": { + "custom-cap": { + "enabled": true + } + } + }, + "clientInfo": { + "name": "sdk-client", + "version": "2.1.0", + "title": "SDK Client" + }, + "_meta": { + "progressToken": 99 + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + assertEquals(Method.Defined.Initialize, request.method) + + val params = request.params + assertEquals("2025-03-26", params.protocolVersion) + assertEquals("sdk-client", params.clientInfo.name) + assertEquals("2.1.0", params.clientInfo.version) + assertEquals("SDK Client", params.clientInfo.title) + assertEquals(ProgressToken(99), params.meta?.progressToken) + + val capabilities = params.capabilities + assertNotNull(capabilities.sampling) + assertEquals(false, capabilities.roots?.listChanged) + val experimental = capabilities.experimental + assertNotNull(experimental) + val custom = experimental["custom-cap"]?.jsonObject + assertNotNull(custom) + assertEquals(true, custom["enabled"]?.jsonPrimitive?.boolean) + } + + @Test + fun `should serialize InitializeResult with instructions`() { + val result = InitializeResult( + protocolVersion = "2024-11-05", + capabilities = ServerCapabilities( + tools = ServerCapabilities.Tools(listChanged = true), + resources = ServerCapabilities.Resources( + listChanged = true, + subscribe = true, + ), + prompts = ServerCapabilities.Prompts(listChanged = false), + logging = ServerCapabilities.Logging, + completions = buildJsonObject { put("defaultCount", 5) }, + ), + serverInfo = Implementation( + name = "demo-server", + version = "5.0.0", + websiteUrl = "https://example.com/server", + ), + instructions = "Call the `read` tool to fetch files.", + meta = buildJsonObject { put("issuedAt", "2025-01-12T15:00:58Z") }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "protocolVersion": "2024-11-05", + "capabilities": { + "tools": { + "listChanged": true + }, + "resources": { + "listChanged": true, + "subscribe": true + }, + "prompts": { + "listChanged": false + }, + "logging": {}, + "completions": { + "defaultCount": 5 + } + }, + "serverInfo": { + "name": "demo-server", + "version": "5.0.0", + "websiteUrl": "https://example.com/server" + }, + "instructions": "Call the `read` tool to fetch files.", + "_meta": { + "issuedAt": "2025-01-12T15:00:58Z" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize InitializeResult from JSON`() { + val json = """ + { + "protocolVersion": "2025-03-26", + "capabilities": { + "tools": {}, + "resources": { + "listChanged": true + } + }, + "serverInfo": { + "name": "result-server", + "version": "4.0.0" + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + assertEquals("2025-03-26", result.protocolVersion) + assertEquals("result-server", result.serverInfo.name) + assertEquals("4.0.0", result.serverInfo.version) + assertNull(result.instructions) + assertNull(result.meta) + + val capabilities = result.capabilities + assertNotNull(capabilities.tools) + assertEquals(true, capabilities.resources?.listChanged) + assertNull(capabilities.resources?.subscribe) + assertNull(capabilities.prompts) + assertNull(capabilities.logging) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/JsonRpcTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/JsonRpcTest.kt new file mode 100644 index 00000000..9b970322 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/JsonRpcTest.kt @@ -0,0 +1,401 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotNull + +class JsonRpcTest { + + @Test + fun `should convert Request to JSONRPCRequest`() { + val request = ListToolsRequest( + PaginatedRequestParams( + cursor = "page-2", + meta = RequestMeta( + buildJsonObject { + put("progressToken", "token-123") + }, + ), + ), + ) + + val jsonRpc = request.toJSON() + + assertEquals(Method.Defined.ToolsList.value, jsonRpc.method) + val params = jsonRpc.params?.jsonObject + assertNotNull(params) + assertEquals("page-2", params["cursor"]?.jsonPrimitive?.content) + val meta = params["_meta"]?.jsonObject + assertNotNull(meta) + assertEquals("token-123", meta["progressToken"]?.jsonPrimitive?.content) + } + + @Test + fun `should convert JSONRPCRequest to Request`() { + val jsonRpc = McpJson.decodeFromString( + """ + { + "id": 17, + "method": "tools/list", + "params": { + "cursor": "page-5", + "_meta": { + "progressToken": 42 + } + }, + "jsonrpc": "2.0" + } + """.trimIndent(), + ) + + val request = jsonRpc.fromJSON() + val listToolsRequest = assertIs(request) + val decodedParams = assertNotNull(listToolsRequest.params) + assertEquals("page-5", decodedParams.cursor) + val meta = decodedParams.meta?.json + assertNotNull(meta) + assertEquals(42, meta["progressToken"]?.jsonPrimitive?.int) + } + + @Test + fun `should convert Notification to JSONRPCNotification`() { + val notification = LoggingMessageNotification( + LoggingMessageNotificationParams( + level = LoggingLevel.Warning, + data = buildJsonObject { put("message", "Disk space low") }, + logger = "disk-monitor", + meta = buildJsonObject { put("requestId", "req-99") }, + ), + ) + + val json = McpJson.encodeToString(notification.toJSON()) + + json shouldEqualJson """ + { + "method": "notifications/message", + "params": { + "level": "warning", + "data": { + "message": "Disk space low" + }, + "logger": "disk-monitor", + "_meta": { + "requestId": "req-99" + } + }, + "jsonrpc": "2.0" + } + """.trimIndent() + } + + @Test + fun `should convert JSONRPCNotification to Notification`() { + val jsonRpc = McpJson.decodeFromString( + """ + { + "method": "notifications/message", + "params": { + "level": "error", + "data": { + "lines": { + "count": 3 + } + }, + "logger": "pipeline", + "_meta": { + "traceIds": ["abc"] + } + }, + "jsonrpc": "2.0" + } + """.trimIndent(), + ) + + val notification = jsonRpc.fromJSON() + val messageNotification = assertIs(notification) + val decodedParams = messageNotification.params + assertEquals(LoggingLevel.Error, decodedParams.level) + val data = decodedParams.data.jsonObject + assertEquals(3, data["lines"]?.jsonObject?.get("count")?.jsonPrimitive?.int) + assertEquals("pipeline", decodedParams.logger) + val meta = decodedParams.meta + assertNotNull(meta) + val traceIds = meta["traceIds"]?.jsonArray + assertNotNull(traceIds) + assertEquals("abc", traceIds.first().jsonPrimitive.content) + } + + @Test + fun `should serialize JSONRPCRequest with params`() { + val request = JSONRPCRequest( + id = RequestId("req-1"), + method = "tools/list", + params = buildJsonObject { + put("cursor", "abc") + put("includeInactive", true) + }, + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "id": "req-1", + "method": "tools/list", + "params": { + "cursor": "abc", + "includeInactive": true + }, + "jsonrpc": "2.0" + } + """.trimIndent() + } + + @Test + fun `should deserialize JSONRPCRequest with numeric id`() { + val json = """ + { + "id": 42, + "method": "resources/read", + "params": { + "uri": "file:///tmp/readme.md" + }, + "jsonrpc": "2.0" + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + + val id = request.id + assertIs(id) + assertEquals(42L, id.value) + assertEquals("resources/read", request.method) + val params = request.params?.jsonObject + assertNotNull(params) + assertEquals("file:///tmp/readme.md", params["uri"]?.jsonPrimitive?.content) + } + + @Test + fun `should serialize JSONRPCNotification with params`() { + val notification = JSONRPCNotification( + method = "notifications/log", + params = buildJsonObject { + put("level", "info") + put("message", "Completed operation") + }, + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/log", + "params": { + "level": "info", + "message": "Completed operation" + }, + "jsonrpc": "2.0" + } + """.trimIndent() + } + + @Test + fun `should deserialize JSONRPCNotification`() { + val json = """ + { + "method": "notifications/progress", + "params": { + "progress": 50, + "total": 100 + }, + "jsonrpc": "2.0" + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + assertEquals("notifications/progress", notification.method) + val params = notification.params?.jsonObject + assertNotNull(params) + assertEquals(50, params["progress"]?.jsonPrimitive?.int) + assertEquals(100, params["total"]?.jsonPrimitive?.int) + } + + @Test + fun `should serialize JSONRPCResponse with result`() { + val response = JSONRPCResponse( + id = RequestId("call-1"), + result = EmptyResult( + meta = buildJsonObject { put("durationMs", 15) }, + ), + ) + + val json = McpJson.encodeToString(response) + + json shouldEqualJson """ + { + "id": "call-1", + "result": { + "_meta": { + "durationMs": 15 + } + }, + "jsonrpc": "2.0" + } + """.trimIndent() + } + + @Test + fun `should deserialize JSONRPCResponse with EmptyResult`() { + val json = """ + { + "id": 7, + "jsonrpc": "2.0", + "result": { + "_meta": { + "cached": true + } + } + } + """.trimIndent() + + val response = McpJson.decodeFromString(json) + val result = response.result + assertIs(result) + assertEquals(RequestId.NumberId(7L), response.id) + val meta = result.meta + assertNotNull(meta) + assertEquals(true, meta["cached"]?.jsonPrimitive?.boolean) + } + + @Test + fun `should serialize JSONRPCError`() { + val error = JSONRPCError( + id = RequestId(99), + error = RPCError( + code = RPCError.ErrorCode.METHOD_NOT_FOUND, + message = "Method not found", + data = buildJsonObject { put("method", "tools/unknown") }, + ), + ) + + val json = McpJson.encodeToString(error) + + json shouldEqualJson """ + { + "id": 99, + "error": { + "code": -32601, + "message": "Method not found", + "data": { + "method": "tools/unknown" + } + }, + "jsonrpc": "2.0" + } + """.trimIndent() + } + + @Test + fun `should deserialize JSONRPCError`() { + val json = """ + { + "id": "req-404", + "jsonrpc": "2.0", + "error": { + "code": -32602, + "message": "Invalid params", + "data": { + "field": "limit", + "reason": "must be positive" + } + } + } + """.trimIndent() + + val error = McpJson.decodeFromString(json) + assertEquals(RequestId("req-404"), error.id) + assertEquals(RPCError.ErrorCode.INVALID_PARAMS, error.error.code) + assertEquals("Invalid params", error.error.message) + + val data = error.error.data?.jsonObject + assertNotNull(data) + assertEquals("limit", data["field"]?.jsonPrimitive?.content) + assertEquals("must be positive", data["reason"]?.jsonPrimitive?.content) + } + + @Test + fun `should decode JSONRPCMessage as request`() { + val json = """ + { + "id": "msg-1", + "method": "sampling/create", + "params": { + "model": "gpt", + "prompt": "Hello" + }, + "jsonrpc": "2.0" + } + """.trimIndent() + + val message = McpJson.decodeFromString(json) + val request = assertIs(message) + assertEquals("sampling/create", request.method) + val params = request.params?.jsonObject + assertNotNull(params) + assertEquals("gpt", params["model"]?.jsonPrimitive?.content) + assertEquals("Hello", params["prompt"]?.jsonPrimitive?.content) + } + + @Test + fun `should decode JSONRPCMessage as error response`() { + val json = """ + { + "id": 123, + "jsonrpc": "2.0", + "error": { + "code": -32001, + "message": "Request timeout", + "data": { + "timeoutMs": 1000 + } + } + } + """.trimIndent() + + val message = McpJson.decodeFromString(json) + val error = assertIs(message) + assertEquals(RPCError.ErrorCode.REQUEST_TIMEOUT, error.error.code) + val data = error.error.data?.jsonObject + assertNotNull(data) + assertEquals(1000, data["timeoutMs"]?.jsonPrimitive?.int) + } + + @Test + fun `should encode JSONRPCMessage polymorphically`() { + val message: JSONRPCMessage = JSONRPCNotification( + method = "notifications/log", + params = buildJsonObject { put("message", "Polymorphic") }, + ) + + val json = McpJson.encodeToString(message) + + json shouldEqualJson """ + { + "method": "notifications/log", + "params": { + "message": "Polymorphic" + }, + "jsonrpc": "2.0" + } + """.trimIndent() + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/LoggingTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/LoggingTest.kt new file mode 100644 index 00000000..2b8c61a5 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/LoggingTest.kt @@ -0,0 +1,166 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNull + +class LoggingTest { + + @Test + fun `should serialize LoggingLevel to expected schema values`() { + assertEquals("\"debug\"", McpJson.encodeToString(LoggingLevel.Debug)) + assertEquals("\"info\"", McpJson.encodeToString(LoggingLevel.Info)) + assertEquals("\"notice\"", McpJson.encodeToString(LoggingLevel.Notice)) + assertEquals("\"warning\"", McpJson.encodeToString(LoggingLevel.Warning)) + assertEquals("\"error\"", McpJson.encodeToString(LoggingLevel.Error)) + assertEquals("\"critical\"", McpJson.encodeToString(LoggingLevel.Critical)) + assertEquals("\"alert\"", McpJson.encodeToString(LoggingLevel.Alert)) + assertEquals("\"emergency\"", McpJson.encodeToString(LoggingLevel.Emergency)) + } + + @Test + fun `should deserialize LoggingLevel from schema values`() { + assertEquals(LoggingLevel.Debug, McpJson.decodeFromString("\"debug\"")) + assertEquals(LoggingLevel.Info, McpJson.decodeFromString("\"info\"")) + assertEquals(LoggingLevel.Notice, McpJson.decodeFromString("\"notice\"")) + assertEquals(LoggingLevel.Warning, McpJson.decodeFromString("\"warning\"")) + assertEquals(LoggingLevel.Error, McpJson.decodeFromString("\"error\"")) + assertEquals(LoggingLevel.Critical, McpJson.decodeFromString("\"critical\"")) + assertEquals(LoggingLevel.Alert, McpJson.decodeFromString("\"alert\"")) + assertEquals(LoggingLevel.Emergency, McpJson.decodeFromString("\"emergency\"")) + } + + @Test + fun `should serialize SetLevelRequest with meta`() { + val request = SetLevelRequest( + SetLevelRequestParams( + level = LoggingLevel.Warning, + meta = RequestMeta( + buildJsonObject { put("progressToken", "log-42") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "logging/setLevel", + "params": { + "level": "warning", + "_meta": { + "progressToken": "log-42" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize SetLevelRequest with numeric progress token`() { + val json = """ + { + "method": "logging/setLevel", + "params": { + "level": "alert", + "_meta": { + "progressToken": 1001 + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + assertEquals(Method.Defined.LoggingSetLevel, request.method) + assertEquals(LoggingLevel.Alert, request.params.level) + assertEquals(ProgressToken(1001), request.params.meta?.progressToken) + } + + @Test + fun `should serialize LoggingMessageNotification with logger`() { + val notification = LoggingMessageNotification( + LoggingMessageNotificationParams( + level = LoggingLevel.Error, + data = buildJsonObject { put("message", "Disk space critically low") }, + logger = "infra.monitor", + meta = buildJsonObject { put("source", "node-1") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/message", + "params": { + "level": "error", + "data": { + "message": "Disk space critically low" + }, + "logger": "infra.monitor", + "_meta": { + "source": "node-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize LoggingMessageNotification with text data`() { + val json = """ + { + "method": "notifications/message", + "params": { + "level": "info", + "data": "Service started successfully" + } + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + assertEquals(Method.Defined.NotificationsMessage, notification.method) + + val params = notification.params + assertEquals(LoggingLevel.Info, params.level) + assertEquals("Service started successfully", params.data.jsonPrimitive.content) + assertNull(params.logger) + assertNull(params.meta) + } + + @Test + fun `should deserialize LoggingMessageNotification with structured data`() { + val json = """ + { + "method": "notifications/message", + "params": { + "level": "critical", + "data": { + "code": "DB_CONN_FAIL", + "retry": false + }, + "logger": "database.monitor", + "_meta": { + "requestId": "req-77" + } + } + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + val params = notification.params + assertEquals(LoggingLevel.Critical, params.level) + val data = params.data.jsonObject + assertEquals("DB_CONN_FAIL", data["code"]?.jsonPrimitive?.content) + assertEquals(false, data["retry"]?.jsonPrimitive?.boolean) + assertEquals("database.monitor", params.logger) + val meta = params.meta + assertEquals("req-77", meta?.get("requestId")?.jsonPrimitive?.content) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/NotificationTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/NotificationTest.kt new file mode 100644 index 00000000..bbd209df --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/NotificationTest.kt @@ -0,0 +1,296 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNull + +class NotificationTest { + + @Test + fun `should serialize CancelledNotification with reason and meta`() { + val notification = CancelledNotification( + CancelledNotificationParams( + requestId = RequestId("req-1"), + reason = "User requested cancellation", + meta = buildJsonObject { put("source", "client") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/cancelled", + "params": { + "requestId": "req-1", + "reason": "User requested cancellation", + "_meta": { + "source": "client" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CancelledNotification with numeric request id`() { + val json = """ + { + "method": "notifications/cancelled", + "params": { + "requestId": 42, + "reason": "Timeout reached" + } + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + val params = notification.params + + assertEquals(Method.Defined.NotificationsCancelled, notification.method) + assertEquals(RequestId(42), params.requestId) + assertEquals("Timeout reached", params.reason) + assertNull(params.meta) + } + + @Test + fun `should serialize InitializedNotification with meta`() { + val notification = InitializedNotification( + BaseNotificationParams( + meta = buildJsonObject { put("readyAt", "2025-01-12T15:00:58Z") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/initialized", + "params": { + "_meta": { + "readyAt": "2025-01-12T15:00:58Z" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize InitializedNotification without params`() { + val json = """ + { + "method": "notifications/initialized" + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + + assertEquals(Method.Defined.NotificationsInitialized, notification.method) + assertNull(notification.params) + } + + @Test + fun `should serialize ProgressNotification with all fields`() { + val notification = ProgressNotification( + ProgressNotificationParams( + progressToken = ProgressToken("task-42"), + progress = 0.6, + total = 1.0, + message = "Syncing repository", + meta = buildJsonObject { put("stage", "download") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/progress", + "params": { + "progressToken": "task-42", + "progress": 0.6, + "total": 1.0, + "message": "Syncing repository", + "_meta": { + "stage": "download" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ProgressNotification with numeric token`() { + val json = """ + { + "method": "notifications/progress", + "params": { + "progressToken": 7, + "progress": 0.25 + } + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + val params = notification.params + + assertEquals(Method.Defined.NotificationsProgress, notification.method) + assertEquals(ProgressToken(7), params.progressToken) + assertEquals(0.25, params.progress) + assertNull(params.total) + assertNull(params.message) + assertNull(params.meta) + } + + @Test + fun `should serialize ResourceUpdatedNotification with meta`() { + val notification = ResourceUpdatedNotification( + ResourceUpdatedNotificationParams( + uri = "file:///workspace/README.md", + meta = buildJsonObject { put("checksum", "abcd1234") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/resources/updated", + "params": { + "uri": "file:///workspace/README.md", + "_meta": { + "checksum": "abcd1234" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ResourceUpdatedNotification`() { + val json = """ + { + "method": "notifications/resources/updated", + "params": { + "uri": "file:///docs/guide.md", + "_meta": { + "etag": "W/\"42\"" + } + } + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + val params = notification.params + + assertEquals(Method.Defined.NotificationsResourcesUpdated, notification.method) + assertEquals("file:///docs/guide.md", params.uri) + assertEquals("W/\"42\"", params.meta?.get("etag")?.jsonPrimitive?.content) + } + + @Test + fun `should serialize PromptListChangedNotification with meta`() { + val notification = PromptListChangedNotification( + BaseNotificationParams( + meta = buildJsonObject { put("reason", "catalog-updated") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/prompts/list_changed", + "params": { + "_meta": { + "reason": "catalog-updated" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize PromptListChangedNotification without params`() { + val json = """ + { + "method": "notifications/prompts/list_changed" + } + """.trimIndent() + + val notification = McpJson.decodeFromString(json) + + assertEquals(Method.Defined.NotificationsPromptsListChanged, notification.method) + assertNull(notification.params) + } + + @Test + fun `should serialize ResourceListChangedNotification with meta`() { + val notification = ResourceListChangedNotification( + BaseNotificationParams( + meta = buildJsonObject { put("reason", "subscription-updated") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/resources/list_changed", + "params": { + "_meta": { + "reason": "subscription-updated" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize RootsListChangedNotification with meta`() { + val notification = RootsListChangedNotification( + BaseNotificationParams( + meta = buildJsonObject { put("reason", "workspace-moved") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/roots/list_changed", + "params": { + "_meta": { + "reason": "workspace-moved" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ToolListChangedNotification with meta`() { + val notification = ToolListChangedNotification( + BaseNotificationParams( + meta = buildJsonObject { put("reason", "tool-added") }, + ), + ) + + val json = McpJson.encodeToString(notification) + + json shouldEqualJson """ + { + "method": "notifications/tools/list_changed", + "params": { + "_meta": { + "reason": "tool-added" + } + } + } + """.trimIndent() + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PingRequestTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PingRequestTest.kt new file mode 100644 index 00000000..070d58e7 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PingRequestTest.kt @@ -0,0 +1,95 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotNull + +class PingRequestTest { + + @Test + fun `should serialize PingRequest without params`() { + val request = PingRequest() + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "ping" + } + """.trimIndent() + } + + @Test + fun `should serialize PingRequest with meta`() { + val request = PingRequest( + BaseRequestParams( + meta = RequestMeta( + buildJsonObject { put("progressToken", "ping-42") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "ping", + "params": { + "_meta": { + "progressToken": "ping-42" + } + } + } + """.trimIndent() + } + + @Test + fun `should convert PingRequest to JSONRPCRequest`() { + val request = PingRequest( + BaseRequestParams( + meta = RequestMeta( + buildJsonObject { put("progressToken", 99) }, + ), + ), + ) + + val jsonRpc = request.toJSON() + + assertEquals("ping", jsonRpc.method) + val params = assertNotNull(jsonRpc.params).jsonObject + val meta = params["_meta"]?.jsonObject + assertNotNull(meta) + assertEquals(99, meta["progressToken"]?.jsonPrimitive?.int) + } + + @Test + fun `should deserialize JSONRPCRequest to PingRequest`() { + val json = """ + { + "id": "ping-1", + "method": "ping", + "jsonrpc": "2.0", + "params": { + "_meta": { + "progressToken": "pong-1" + } + } + } + """.trimIndent() + + val jsonRpc = McpJson.decodeFromString(json) + val request = jsonRpc.fromJSON() + + val pingRequest = assertIs(request) + val meta = pingRequest.params?.meta?.json + assertNotNull(meta) + assertEquals("pong-1", meta["progressToken"]?.jsonPrimitive?.content) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PromptsTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PromptsTest.kt new file mode 100644 index 00000000..01eb01c0 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/PromptsTest.kt @@ -0,0 +1,453 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.double +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class PromptsTest { + + @Test + fun `should serialize PromptArgument with minimal fields`() { + val argument = PromptArgument(name = "repository") + + val json = McpJson.encodeToString(argument) + + json shouldEqualJson """ + { + "name": "repository" + } + """.trimIndent() + } + + @Test + fun `should serialize PromptArgument with all fields`() { + val argument = PromptArgument( + name = "language", + description = "Programming language to use", + required = true, + title = "Language", + ) + + val json = McpJson.encodeToString(argument) + + json shouldEqualJson """ + { + "name": "language", + "description": "Programming language to use", + "required": true, + "title": "Language" + } + """.trimIndent() + } + + @Test + fun `should serialize Prompt with arguments and meta`() { + val prompt = Prompt( + name = "summarize_update", + title = "Summarize Update", + description = "Summarize the latest repository changes.", + arguments = listOf( + PromptArgument( + name = "summaryLength", + description = "Approximate length of the summary", + required = false, + title = "Summary length", + ), + ), + icons = listOf( + Icon(src = "https://example.com/icon.png"), + Icon(src = "https://example.com/icon-dark.svg", theme = Icon.Theme.Dark), + ), + meta = buildJsonObject { put("category", "status-report") }, + ) + + val json = McpJson.encodeToString(prompt) + + json shouldEqualJson """ + { + "name": "summarize_update", + "description": "Summarize the latest repository changes.", + "arguments": [ + { + "name": "summaryLength", + "description": "Approximate length of the summary", + "required": false, + "title": "Summary length" + } + ], + "title": "Summarize Update", + "icons": [ + { + "src": "https://example.com/icon.png" + }, + { + "src": "https://example.com/icon-dark.svg", + "theme": "dark" + } + ], + "_meta": { + "category": "status-report" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize Prompt from JSON`() { + val json = """ + { + "name": "code_review", + "description": "Generate a succinct code review.", + "title": "Code Review", + "arguments": [ + { + "name": "filePath", + "description": "Path to the file to review", + "required": true + }, + { + "name": "severity", + "title": "Issue severity" + } + ], + "icons": [ + {"src": "https://example.com/review.png"} + ], + "_meta": { + "category": "quality" + } + } + """.trimIndent() + + val prompt = McpJson.decodeFromString(json) + + assertEquals("code_review", prompt.name) + assertEquals("Generate a succinct code review.", prompt.description) + assertEquals("Code Review", prompt.title) + val arguments = prompt.arguments + assertNotNull(arguments) + assertEquals(2, arguments.size) + assertEquals("filePath", arguments[0].name) + assertEquals(true, arguments[0].required) + assertEquals("severity", arguments[1].name) + assertEquals("Issue severity", arguments[1].title) + val meta = prompt.meta + assertNotNull(meta) + assertEquals("quality", meta["category"]?.jsonPrimitive?.content) + } + + @Test + fun `should serialize PromptMessage with text content`() { + val message = PromptMessage( + role = Role.Assistant, + content = TextContent(text = "Provide a concise summary of the changes."), + ) + + val json = McpJson.encodeToString(message) + + json shouldEqualJson """ + { + "role": "assistant", + "content": { + "type": "text", + "text": "Provide a concise summary of the changes." + } + } + """.trimIndent() + } + + @Test + fun `should deserialize PromptMessage with resource content`() { + val json = """ + { + "role": "user", + "content": { + "type": "resource", + "resource": { + "uri": "file:///workspace/README.md", + "mimeType": "text/markdown", + "text": "# Project Overview" + } + } + } + """.trimIndent() + + val message = McpJson.decodeFromString(json) + + assertEquals(Role.User, message.role) + val content = message.content + assertIs(content) + val resource = assertIs(content.resource) + assertEquals("file:///workspace/README.md", resource.uri) + assertEquals("# Project Overview", resource.text) + } + + @Test + fun `should serialize and deserialize PromptReference`() { + val reference = PromptReference(name = "daily-summary", title = "Daily Summary") + + val json = McpJson.encodeToString(reference) + json shouldEqualJson """ + { + "type": "ref/prompt", + "name": "daily-summary", + "title": "Daily Summary" + } + """.trimIndent() + + val decoded = McpJson.decodeFromString(json) + val promptReference = assertIs(decoded) + assertEquals("daily-summary", promptReference.name) + assertEquals("Daily Summary", promptReference.title) + assertEquals(ReferenceType.Prompt, promptReference.type) + } + + @Test + fun `should serialize GetPromptRequest with arguments and meta`() { + val request = GetPromptRequest( + GetPromptRequestParams( + name = "generate_release_notes", + arguments = mapOf("version" to "1.2.3"), + meta = RequestMeta( + buildJsonObject { put("progressToken", "get-prompt-1") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "prompts/get", + "params": { + "name": "generate_release_notes", + "arguments": { + "version": "1.2.3" + }, + "_meta": { + "progressToken": "get-prompt-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize GetPromptRequest from JSON`() { + val json = """ + { + "method": "prompts/get", + "params": { + "name": "draft-response", + "arguments": { + "tone": "confident", + "audience": "executive" + }, + "_meta": { + "progressToken": 88 + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + + assertEquals(Method.Defined.PromptsGet, request.method) + val params = request.params + assertEquals("draft-response", params.name) + val args = params.arguments + assertNotNull(args) + assertEquals("confident", args["tone"]) + assertEquals("executive", args["audience"]) + assertEquals(ProgressToken(88), params.meta?.progressToken) + } + + @Test + fun `should serialize GetPromptResult with messages and meta`() { + val result = GetPromptResult( + messages = listOf( + PromptMessage( + role = Role.User, + content = TextContent(text = "Use concise language suitable for executives."), + ), + PromptMessage( + role = Role.Assistant, + content = TextContent(text = "Here is the summary you requested."), + ), + ), + description = "Executive summary response template.", + meta = buildJsonObject { put("generatedAt", "2025-01-12T15:00:58Z") }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "messages": [ + { + "role": "user", + "content": { + "type": "text", + "text": "Use concise language suitable for executives." + } + }, + { + "role": "assistant", + "content": { + "type": "text", + "text": "Here is the summary you requested." + } + } + ], + "description": "Executive summary response template.", + "_meta": { + "generatedAt": "2025-01-12T15:00:58Z" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize GetPromptResult from JSON`() { + val json = """ + { + "messages": [ + { + "role": "user", + "content": { + "type": "text", + "text": "Summarize today's standup." + } + } + ], + "description": "Collect information from the team." + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + val messages = result.messages + assertEquals(1, messages.size) + assertEquals(Role.User, messages.first().role) + val textContent = assertIs(messages.first().content) + assertEquals("Summarize today's standup.", textContent.text) + assertEquals("Collect information from the team.", result.description) + assertNull(result.meta) + } + + @Test + fun `should serialize ListPromptsRequest with pagination params`() { + val request = ListPromptsRequest( + PaginatedRequestParams( + cursor = "cursor-123", + meta = RequestMeta( + buildJsonObject { put("progressToken", "list-prompts-1") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "prompts/list", + "params": { + "cursor": "cursor-123", + "_meta": { + "progressToken": "list-prompts-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ListPromptsRequest without params`() { + val request = ListPromptsRequest() + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "prompts/list" + } + """.trimIndent() + } + + @Test + fun `should serialize ListPromptsResult with next cursor and meta`() { + val result = ListPromptsResult( + prompts = listOf( + Prompt(name = "morning-briefing"), + Prompt(name = "incident-response"), + ), + nextCursor = "cursor-2", + meta = buildJsonObject { put("page", 1) }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "prompts": [ + {"name": "morning-briefing"}, + {"name": "incident-response"} + ], + "nextCursor": "cursor-2", + "_meta": { + "page": 1 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ListPromptsResult from JSON`() { + val json = """ + { + "prompts": [ + { + "name": "weekly-update", + "description": "Summarize weekly activities.", + "arguments": [ + { + "name": "team", + "title": "Team name" + } + ] + } + ], + "nextCursor": "cursor-next", + "_meta": { + "page": 2, + "latencyMs": 12.5 + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + val prompts = result.prompts + assertEquals(1, prompts.size) + val prompt = prompts.first() + assertEquals("weekly-update", prompt.name) + assertEquals("Summarize weekly activities.", prompt.description) + val args = prompt.arguments + assertNotNull(args) + assertEquals("team", args.first().name) + assertEquals("Team name", args.first().title) + assertEquals("cursor-next", result.nextCursor) + val meta = result.meta + assertNotNull(meta) + assertEquals(2, meta["page"]?.jsonPrimitive?.int) + assertEquals(12.5, meta["latencyMs"]?.jsonPrimitive?.double) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/RequestTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/RequestTest.kt new file mode 100644 index 00000000..93412651 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/RequestTest.kt @@ -0,0 +1,182 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.double +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class RequestTest { + + @Test + fun `should expose progress token from RequestMeta`() { + val stringTokenMeta = RequestMeta(buildJsonObject { put("progressToken", "sync-1") }) + val numberTokenMeta = RequestMeta(buildJsonObject { put("progressToken", 7) }) + val customMeta = RequestMeta( + buildJsonObject { + put("progressToken", "ignored") + put("source", "client") + }, + ) + + assertEquals(ProgressToken("sync-1"), stringTokenMeta.progressToken) + assertEquals(ProgressToken(7), numberTokenMeta.progressToken) + assertEquals("client", customMeta["source"]?.jsonPrimitive?.content) + } + + @Test + fun `should serialize BaseRequestParams with meta`() { + val params = BaseRequestParams( + meta = RequestMeta( + buildJsonObject { + put("progressToken", "base-42") + put("origin", "test-suite") + }, + ), + ) + + val json = McpJson.encodeToString(params) + + json shouldEqualJson """ + { + "_meta": { + "progressToken": "base-42", + "origin": "test-suite" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize BaseRequestParams with numeric progress token`() { + val json = """ + { + "_meta": { + "progressToken": 501, + "latencyMs": 12.5 + } + } + """.trimIndent() + + val params = McpJson.decodeFromString(json) + + val meta = params.meta + assertNotNull(meta) + assertEquals(ProgressToken(501), meta.progressToken) + assertEquals(12.5, meta["latencyMs"]?.jsonPrimitive?.double) + } + + @Test + fun `should serialize PaginatedRequestParams with cursor and meta`() { + val params = PaginatedRequestParams( + cursor = "cursor-1", + meta = RequestMeta(buildJsonObject { put("progressToken", "page-req") }), + ) + + val json = McpJson.encodeToString(params) + + json shouldEqualJson """ + { + "cursor": "cursor-1", + "_meta": { + "progressToken": "page-req" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize PaginatedRequestParams`() { + val json = """ + { + "cursor": "cursor-2", + "_meta": { + "progressToken": 99 + } + } + """.trimIndent() + + val params = McpJson.decodeFromString(json) + + assertEquals("cursor-2", params.cursor) + assertEquals(ProgressToken(99), params.meta?.progressToken) + } + + @Test + fun `should serialize CustomRequest with params`() { + val request = CustomRequest( + method = Method.Custom("workspace/sync"), + params = BaseRequestParams( + meta = RequestMeta(buildJsonObject { put("progressToken", "sync-req") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "workspace/sync", + "params": { + "_meta": { + "progressToken": "sync-req" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize unknown method into CustomRequest`() { + val json = """ + { + "method": "extensions/customAction", + "params": { + "_meta": { + "progressToken": "custom-1" + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + + val custom = assertIs(request) + val method = custom.method + val customMethod = assertIs(method) + assertEquals("extensions/customAction", customMethod.value) + assertEquals("custom-1", custom.params?.meta?.json?.get("progressToken")?.jsonPrimitive?.content) + } + + @Test + fun `should serialize EmptyResult with meta`() { + val result = EmptyResult( + meta = buildJsonObject { + put("processedBy", "worker-1") + }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "_meta": { + "processedBy": "worker-1" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize EmptyResult without meta`() { + val json = "{}" + + val result = McpJson.decodeFromString(json) + + assertNull(result.meta) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ResourcesTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ResourcesTest.kt new file mode 100644 index 00000000..0313b758 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ResourcesTest.kt @@ -0,0 +1,539 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class ResourcesTest { + + @Test + fun `should serialize Resource with minimal fields`() { + val resource = Resource( + uri = "file:///workspace/README.md", + name = "README", + ) + + val json = McpJson.encodeToString(resource) + + json shouldEqualJson """ + { + "uri": "file:///workspace/README.md", + "name": "README" + } + """.trimIndent() + } + + @Test + fun `should serialize Resource with all fields`() { + val resource = Resource( + uri = "file:///workspace/CHANGELOG.md", + name = "CHANGELOG", + description = "Changelog for recent releases", + mimeType = "text/markdown", + size = 4096, + title = "Project Changelog", + annotations = Annotations(priority = 0.8, audience = listOf(Role.Assistant)), + icons = listOf( + Icon(src = "https://example.com/changelog.png"), + ), + meta = buildJsonObject { put("etag", "abc123") }, + ) + + val json = McpJson.encodeToString(resource) + + json shouldEqualJson """ + { + "uri": "file:///workspace/CHANGELOG.md", + "name": "CHANGELOG", + "description": "Changelog for recent releases", + "mimeType": "text/markdown", + "size": 4096, + "title": "Project Changelog", + "annotations": { + "priority": 0.8, + "audience": ["assistant"] + }, + "icons": [ + {"src": "https://example.com/changelog.png"} + ], + "_meta": { + "etag": "abc123" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize Resource from JSON`() { + val json = """ + { + "uri": "file:///config/settings.json", + "name": "config-settings", + "description": "Configuration file", + "mimeType": "application/json", + "size": 1024, + "title": "Settings", + "annotations": { + "priority": 0.5 + }, + "icons": [ + {"src": "https://example.com/settings.png"} + ], + "_meta": { + "etag": "\"98765\"" + } + } + """.trimIndent() + + val resource = McpJson.decodeFromString(json) + + assertEquals("file:///config/settings.json", resource.uri) + assertEquals("config-settings", resource.name) + assertEquals("Configuration file", resource.description) + assertEquals("application/json", resource.mimeType) + assertEquals(1024, resource.size) + assertEquals("Settings", resource.title) + assertEquals(0.5, resource.annotations?.priority) + val meta = resource.meta + assertNotNull(meta) + assertEquals("\"98765\"", meta["etag"]?.jsonPrimitive?.content) + } + + @Test + fun `should serialize ResourceTemplate with meta`() { + val template = ResourceTemplate( + uriTemplate = "file:///workspace/{path}", + name = "workspace-file", + description = "Workspace file template", + mimeType = "text/plain", + title = "Workspace File", + annotations = Annotations( + priority = 0.6, + audience = listOf(Role.User, Role.Assistant), + ), + icons = listOf(Icon(src = "https://example.com/file.svg", theme = Icon.Theme.Light)), + meta = buildJsonObject { put("requiresAuth", true) }, + ) + + val json = McpJson.encodeToString(template) + + json shouldEqualJson """ + { + "uriTemplate": "file:///workspace/{path}", + "name": "workspace-file", + "description": "Workspace file template", + "mimeType": "text/plain", + "title": "Workspace File", + "annotations": { + "priority": 0.6, + "audience": ["user", "assistant"] + }, + "icons": [ + { + "src": "https://example.com/file.svg", + "theme": "light" + } + ], + "_meta": { + "requiresAuth": true + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ResourceTemplate from JSON`() { + val json = """ + { + "uriTemplate": "db://users/{id}", + "name": "user-record", + "description": "Database record template", + "annotations": { + "priority": 1.0 + } + } + """.trimIndent() + + val template = McpJson.decodeFromString(json) + + assertEquals("db://users/{id}", template.uriTemplate) + assertEquals("user-record", template.name) + assertEquals("Database record template", template.description) + assertEquals(1.0, template.annotations?.priority) + assertNull(template.meta) + } + + @Test + fun `should serialize and deserialize ResourceTemplateReference`() { + val reference = ResourceTemplateReference(uri = "file:///workspace/{path}") + + val json = McpJson.encodeToString(reference) + + json shouldEqualJson """ + { + "type": "ref/resource", + "uri": "file:///workspace/{path}" + } + """.trimIndent() + + val decoded = McpJson.decodeFromString(json) + val templateReference = assertIs(decoded) + assertEquals("file:///workspace/{path}", templateReference.uri) + assertEquals(ReferenceType.ResourceTemplate, templateReference.type) + } + + @Test + fun `should serialize TextResourceContents`() { + val contents = TextResourceContents( + text = "Hello, MCP!", + uri = "file:///workspace/hello.txt", + mimeType = "text/plain", + meta = buildJsonObject { put("encoding", "utf-8") }, + ) + + val json = McpJson.encodeToString(contents) + + json shouldEqualJson """ + { + "text": "Hello, MCP!", + "uri": "file:///workspace/hello.txt", + "mimeType": "text/plain", + "_meta": { + "encoding": "utf-8" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize BlobResourceContents`() { + val json = """ + { + "blob": "YmluYXJ5ZGF0YQ==", + "uri": "file:///workspace/logo.png", + "mimeType": "image/png", + "_meta": { + "size": 128 + } + } + """.trimIndent() + + val contents = McpJson.decodeFromString(json) + val blobContents = assertIs(contents) + assertEquals("YmluYXJ5ZGF0YQ==", blobContents.blob) + assertEquals("file:///workspace/logo.png", blobContents.uri) + assertEquals("image/png", blobContents.mimeType) + assertEquals(128, blobContents.meta?.get("size")?.jsonPrimitive?.int) + } + + @Test + fun `should serialize UnknownResourceContents`() { + val contents = UnknownResourceContents( + uri = "custom://resource/42", + mimeType = "application/octet-stream", + ) + + val json = McpJson.encodeToString(contents) + + json shouldEqualJson """ + { + "uri": "custom://resource/42", + "mimeType": "application/octet-stream" + } + """.trimIndent() + } + + @Test + fun `should serialize ListResourcesRequest with cursor`() { + val request = ListResourcesRequest( + PaginatedRequestParams( + cursor = "cursor-1", + meta = RequestMeta(buildJsonObject { put("progressToken", "list-resources-1") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "resources/list", + "params": { + "cursor": "cursor-1", + "_meta": { + "progressToken": "list-resources-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ListResourcesRequest without params`() { + val request = ListResourcesRequest() + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "resources/list" + } + """.trimIndent() + } + + @Test + fun `should serialize ListResourcesResult`() { + val result = ListResourcesResult( + resources = listOf( + Resource(uri = "file:///workspace/README.md", name = "README"), + Resource(uri = "file:///workspace/CONTRIBUTING.md", name = "CONTRIBUTING"), + ), + nextCursor = "cursor-2", + meta = buildJsonObject { put("page", 1) }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "resources": [ + {"uri": "file:///workspace/README.md", "name": "README"}, + {"uri": "file:///workspace/CONTRIBUTING.md", "name": "CONTRIBUTING"} + ], + "nextCursor": "cursor-2", + "_meta": { + "page": 1 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ListResourcesResult`() { + val json = """ + { + "resources": [ + { + "uri": "file:///workspace/docs/guide.md", + "name": "guide", + "description": "User guide" + } + ], + "nextCursor": "cursor-next", + "_meta": { + "page": 2 + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + assertEquals("cursor-next", result.nextCursor) + val resources = result.resources + assertEquals(1, resources.size) + val resource = resources.first() + assertEquals("file:///workspace/docs/guide.md", resource.uri) + assertEquals("guide", resource.name) + assertEquals("User guide", resource.description) + assertEquals(2, result.meta?.get("page")?.jsonPrimitive?.int) + } + + @Test + fun `should serialize ReadResourceRequest`() { + val request = ReadResourceRequest( + ReadResourceRequestParams( + uri = "file:///workspace/notes.txt", + meta = RequestMeta(buildJsonObject { put("progressToken", "read-1") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "resources/read", + "params": { + "uri": "file:///workspace/notes.txt", + "_meta": { + "progressToken": "read-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ReadResourceResult with mixed contents`() { + val json = """ + { + "contents": [ + { + "text": "Section 1", + "uri": "file:///workspace/report.txt", + "mimeType": "text/plain" + }, + { + "blob": "aW1hZ2VEYXRh", + "uri": "file:///workspace/diagram.png", + "mimeType": "image/png" + } + ], + "_meta": { + "generatedAt": "2025-01-12T15:00:58Z" + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + val contents = result.contents + assertEquals(2, contents.size) + assertIs(contents[0]) + assertIs(contents[1]) + val meta = result.meta + assertNotNull(meta) + assertEquals("2025-01-12T15:00:58Z", meta["generatedAt"]?.jsonPrimitive?.content) + } + + @Test + fun `should serialize SubscribeRequest`() { + val request = SubscribeRequest( + SubscribeRequestParams( + uri = "file:///workspace/todo.md", + meta = RequestMeta(buildJsonObject { put("progressToken", 42) }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "resources/subscribe", + "params": { + "uri": "file:///workspace/todo.md", + "_meta": { + "progressToken": 42 + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize UnsubscribeRequest`() { + val request = UnsubscribeRequest( + UnsubscribeRequestParams( + uri = "file:///workspace/todo.md", + meta = RequestMeta(buildJsonObject { put("progressToken", "unsubscribe-1") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "resources/unsubscribe", + "params": { + "uri": "file:///workspace/todo.md", + "_meta": { + "progressToken": "unsubscribe-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ListResourceTemplatesRequest`() { + val request = ListResourceTemplatesRequest( + PaginatedRequestParams( + cursor = "template-1", + meta = RequestMeta(buildJsonObject { put("progressToken", "templates-1") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "resources/templates/list", + "params": { + "cursor": "template-1", + "_meta": { + "progressToken": "templates-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ListResourceTemplatesResult`() { + val result = ListResourceTemplatesResult( + resourceTemplates = listOf( + ResourceTemplate(uriTemplate = "file:///workspace/{path}", name = "workspace-file"), + ), + nextCursor = "cursor-templates-2", + meta = buildJsonObject { put("page", 3) }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "resourceTemplates": [ + { + "uriTemplate": "file:///workspace/{path}", + "name": "workspace-file" + } + ], + "nextCursor": "cursor-templates-2", + "_meta": { + "page": 3 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ListResourceTemplatesResult`() { + val json = """ + { + "resourceTemplates": [ + { + "uriTemplate": "db://records/{id}", + "name": "record", + "description": "Database record", + "icons": [ + {"src": "https://example.com/db.png"} + ] + } + ], + "nextCursor": "cursor-next", + "_meta": { + "page": 1 + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + assertEquals("cursor-next", result.nextCursor) + val templates = result.resourceTemplates + assertEquals(1, templates.size) + val template = templates.first() + assertEquals("db://records/{id}", template.uriTemplate) + assertEquals("record", template.name) + assertEquals("Database record", template.description) + val icons = template.icons + assertNotNull(icons) + assertEquals("https://example.com/db.png", icons.first().src) + assertEquals(1, result.meta?.get("page")?.jsonPrimitive?.int) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/RootsTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/RootsTest.kt new file mode 100644 index 00000000..3f1b8d66 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/RootsTest.kt @@ -0,0 +1,169 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotNull + +class RootsTest { + + @Test + fun `should serialize Root with minimal fields`() { + val root = Root(uri = "file:///workspace/project") + + val json = McpJson.encodeToString(root) + + json shouldEqualJson """ + { + "uri": "file:///workspace/project" + } + """.trimIndent() + } + + @Test + fun `should serialize Root with name and meta`() { + val root = Root( + uri = "file:///workspace/docs", + name = "Docs", + meta = buildJsonObject { put("writable", true) }, + ) + + val json = McpJson.encodeToString(root) + + json shouldEqualJson """ + { + "uri": "file:///workspace/docs", + "name": "Docs", + "_meta": { + "writable": true + } + } + """.trimIndent() + } + + @Test + fun `should deserialize Root with validation`() { + val json = """ + { + "uri": "file:///workspace/code", + "name": "Code", + "_meta": { + "default": true + } + } + """.trimIndent() + + val root = McpJson.decodeFromString(json) + + assertEquals("file:///workspace/code", root.uri) + assertEquals("Code", root.name) + assertEquals(true, root.meta?.get("default")?.jsonPrimitive?.boolean) + } + + @Test + fun `should serialize ListRootsRequest with meta`() { + val request = ListRootsRequest( + BaseRequestParams( + meta = RequestMeta( + buildJsonObject { put("progressToken", "roots-list-1") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "roots/list", + "params": { + "_meta": { + "progressToken": "roots-list-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ListRootsRequest without params`() { + val request = ListRootsRequest() + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "roots/list" + } + """.trimIndent() + } + + @Test + fun `should serialize ListRootsResult`() { + val result = ListRootsResult( + roots = listOf( + Root(uri = "file:///workspace/project", name = "Project"), + Root(uri = "file:///workspace/docs", name = "Docs"), + ), + meta = buildJsonObject { put("issuedAt", "2025-01-12T15:00:58Z") }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "roots": [ + {"uri": "file:///workspace/project", "name": "Project"}, + {"uri": "file:///workspace/docs", "name": "Docs"} + ], + "_meta": { + "issuedAt": "2025-01-12T15:00:58Z" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ListRootsResult`() { + val json = """ + { + "roots": [ + { + "uri": "file:///workspace/code", + "name": "Code" + } + ], + "_meta": { + "updatedBy": "client-1" + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + val roots = result.roots + assertEquals(1, roots.size) + val root = roots.first() + assertEquals("file:///workspace/code", root.uri) + assertEquals("Code", root.name) + val meta = result.meta + assertNotNull(meta) + assertEquals("client-1", meta["updatedBy"]?.jsonPrimitive?.content) + } + + @Test + fun `should reject non file URI roots`() { + val json = """ + { + "uri": "https://example.com/root" + } + """.trimIndent() + + val exception = runCatching { McpJson.decodeFromString(json) }.exceptionOrNull() + assertNotNull(exception) + assertEquals(true, exception.message?.contains("Root URI must start with 'file://'")) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/SamplingTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/SamplingTest.kt new file mode 100644 index 00000000..7dc3fe6d --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/SamplingTest.kt @@ -0,0 +1,258 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.double +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFailsWith +import kotlin.test.assertIs +import kotlin.test.assertNotNull + +class SamplingTest { + + @Test + fun `should serialize ModelHint`() { + val hint = ModelHint(name = "claude-3-5-sonnet") + + val json = McpJson.encodeToString(hint) + + json shouldEqualJson """ + { + "name": "claude-3-5-sonnet" + } + """.trimIndent() + } + + @Test + fun `should serialize ModelPreferences with priorities`() { + val preferences = ModelPreferences( + hints = listOf(ModelHint(name = "haiku"), ModelHint(name = "openaichat")), + costPriority = 0.25, + speedPriority = 0.75, + intelligencePriority = 1.0, + ) + + val json = McpJson.encodeToString(preferences) + + json shouldEqualJson """ + { + "hints": [ + {"name": "haiku"}, + {"name": "openaichat"} + ], + "costPriority": 0.25, + "speedPriority": 0.75, + "intelligencePriority": 1.0 + } + """.trimIndent() + } + + @Test + fun `should reject ModelPreferences with invalid priority`() { + assertFailsWith { + ModelPreferences(costPriority = 1.5) + } + } + + @Test + fun `should serialize SamplingMessage`() { + val message = SamplingMessage( + role = Role.User, + content = TextContent(text = "Summarize the latest release."), + ) + + val json = McpJson.encodeToString(message) + + json shouldEqualJson """ + { + "role": "user", + "content": { + "type": "text", + "text": "Summarize the latest release." + } + } + """.trimIndent() + } + + @Test + fun `should serialize CreateMessageRequest with all fields`() { + val request = CreateMessageRequest( + CreateMessageRequestParams( + maxTokens = 512, + messages = listOf( + SamplingMessage( + role = Role.User, + content = TextContent(text = "You are a helpful assistant."), + ), + SamplingMessage( + role = Role.User, + content = TextContent(text = "Provide a short summary."), + ), + ), + modelPreferences = ModelPreferences( + hints = listOf(ModelHint(name = "claude")), + speedPriority = 0.6, + ), + systemPrompt = "Respond with concise bullet points.", + includeContext = IncludeContext.AllServers, + temperature = 0.8, + stopSequences = listOf("END"), + metadata = buildJsonObject { put("provider", "anthropic") }, + meta = RequestMeta(buildJsonObject { put("progressToken", "sample-1") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "sampling/createMessage", + "params": { + "maxTokens": 512, + "messages": [ + { + "role": "user", + "content": { + "type": "text", + "text": "You are a helpful assistant." + } + }, + { + "role": "user", + "content": { + "type": "text", + "text": "Provide a short summary." + } + } + ], + "modelPreferences": { + "hints": [ + {"name": "claude"} + ], + "speedPriority": 0.6 + }, + "systemPrompt": "Respond with concise bullet points.", + "includeContext": "allServers", + "temperature": 0.8, + "stopSequences": ["END"], + "metadata": { + "provider": "anthropic" + }, + "_meta": { + "progressToken": "sample-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CreateMessageRequest`() { + val json = """ + { + "method": "sampling/createMessage", + "params": { + "maxTokens": 256, + "messages": [ + { + "role": "user", + "content": { + "type": "text", + "text": "Draft a project update." + } + } + ], + "modelPreferences": { + "costPriority": 0.4 + }, + "includeContext": "thisServer", + "temperature": 1.1, + "stopSequences": ["\n\n"], + "metadata": { + "provider": "openai" + }, + "_meta": { + "progressToken": 42 + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + + assertEquals(Method.Defined.SamplingCreateMessage, request.method) + val params = request.params + assertEquals(256, params.maxTokens) + assertEquals(IncludeContext.ThisServer, params.includeContext) + assertEquals(ProgressToken(42), params.meta?.progressToken) + assertEquals("openai", params.metadata?.get("provider")?.jsonPrimitive?.content) + + val message = params.messages.first() + assertEquals(Role.User, message.role) + val content = assertIs(message.content) + assertEquals("Draft a project update.", content.text) + + val preferences = assertNotNull(params.modelPreferences) + assertEquals(0.4, preferences.costPriority) + } + + @Test + fun `should serialize CreateMessageResult with stop reason`() { + val result = CreateMessageResult( + role = Role.Assistant, + content = TextContent(text = "Here is the requested update."), + model = "claude-3-5-sonnet", + stopReason = StopReason.MaxTokens, + meta = buildJsonObject { put("latencyMs", 850) }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "role": "assistant", + "content": { + "type": "text", + "text": "Here is the requested update." + }, + "model": "claude-3-5-sonnet", + "stopReason": "maxTokens", + "_meta": { + "latencyMs": 850 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CreateMessageResult`() { + val json = """ + { + "role": "assistant", + "content": { + "type": "text", + "text": "Summary complete." + }, + "model": "gpt-4o", + "stopReason": "stopSequence", + "_meta": { + "latencyMs": 1200.5 + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + assertEquals(Role.Assistant, result.role) + val text = assertIs(result.content) + assertEquals("Summary complete.", text.text) + assertEquals("gpt-4o", result.model) + assertEquals(StopReason.StopSequence, result.stopReason) + val meta = result.meta + assertNotNull(meta) + assertEquals(1200.5, meta["latencyMs"]?.jsonPrimitive?.double) + } +} diff --git a/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ToolsTest.kt b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ToolsTest.kt new file mode 100644 index 00000000..a662e441 --- /dev/null +++ b/kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/types/ToolsTest.kt @@ -0,0 +1,523 @@ +package io.modelcontextprotocol.kotlin.sdk.types + +import io.kotest.assertions.json.shouldEqualJson +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertIs +import kotlin.test.assertNotNull + +class ToolsTest { + + @Test + fun `should serialize Tool with minimal fields`() { + val tool = Tool( + name = "search", + inputSchema = ToolSchema(), + ) + + val json = McpJson.encodeToString(tool) + + json shouldEqualJson """ + { + "name": "search", + "inputSchema": { + "type": "object" + } + } + """.trimIndent() + } + + @Test + fun `should serialize Tool with annotations and schemas`() { + val inputSchema = ToolSchema( + properties = buildJsonObject { + put( + "query", + buildJsonObject { + put("type", "string") + put("description", "Search query") + }, + ) + }, + required = listOf("query"), + ) + val outputSchema = ToolSchema( + properties = buildJsonObject { + put( + "results", + buildJsonObject { + put("type", "array") + }, + ) + }, + ) + val tool = Tool( + name = "web-search", + inputSchema = inputSchema, + description = "Search the web for information", + outputSchema = outputSchema, + title = "Web Search", + annotations = ToolAnnotations( + title = "Web Search (Preferred)", + readOnlyHint = true, + destructiveHint = false, + idempotentHint = true, + openWorldHint = true, + ), + icons = listOf(Icon(src = "https://example.com/search.png")), + meta = buildJsonObject { put("category", "search") }, + ) + + val json = McpJson.encodeToString(tool) + + json shouldEqualJson """ + { + "name": "web-search", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search query" + } + }, + "required": ["query"] + }, + "description": "Search the web for information", + "outputSchema": { + "type": "object", + "properties": { + "results": { + "type": "array" + } + } + }, + "title": "Web Search", + "annotations": { + "title": "Web Search (Preferred)", + "readOnlyHint": true, + "destructiveHint": false, + "idempotentHint": true, + "openWorldHint": true + }, + "icons": [ + {"src": "https://example.com/search.png"} + ], + "_meta": { + "category": "search" + } + } + """.trimIndent() + } + + @Test + fun `should deserialize Tool from JSON`() { + val json = """ + { + "name": "translate", + "inputSchema": { + "type": "object", + "properties": { + "text": {"type": "string"}, + "targetLanguage": {"type": "string"} + }, + "required": ["text", "targetLanguage"] + }, + "annotations": { + "title": "Translate Text", + "readOnlyHint": true + }, + "_meta": { + "category": "language" + } + } + """.trimIndent() + + val tool = McpJson.decodeFromString(json) + + assertEquals("translate", tool.name) + assertEquals("Translate Text", tool.annotations?.title) + assertEquals(true, tool.annotations?.readOnlyHint) + val schema = tool.inputSchema + val properties = schema.properties + assertNotNull(properties) + assertNotNull(properties["text"]) + assertEquals(listOf("text", "targetLanguage"), schema.required) + assertEquals("language", tool.meta?.get("category")?.jsonPrimitive?.content) + } + + @Test + fun `should serialize CallToolRequest with arguments`() { + val request = CallToolRequest( + CallToolRequestParams( + name = "web-search", + arguments = buildJsonObject { put("query", "MCP protocol") }, + meta = RequestMeta( + buildJsonObject { put("progressToken", "call-1") }, + ), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "tools/call", + "params": { + "name": "web-search", + "arguments": { + "query": "MCP protocol" + }, + "_meta": { + "progressToken": "call-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CallToolRequest`() { + val json = """ + { + "method": "tools/call", + "params": { + "name": "analyze-code", + "arguments": { + "path": "src/main.kt" + }, + "_meta": { + "progressToken": 77 + } + } + } + """.trimIndent() + + val request = McpJson.decodeFromString(json) + + assertEquals(Method.Defined.ToolsCall, request.method) + val params = request.params + assertEquals("analyze-code", params.name) + assertEquals("src/main.kt", params.arguments?.get("path")?.jsonPrimitive?.content) + assertEquals(ProgressToken(77), params.meta?.progressToken) + } + + @Test + fun `should serialize CallToolResult with structured content`() { + val result = CallToolResult( + content = listOf( + TextContent(text = "Found 3 relevant documents."), + ), + isError = false, + structuredContent = buildJsonObject { + put("count", 3) + put("items", buildJsonObject { put("first", "doc.md") }) + }, + meta = buildJsonObject { put("elapsedMs", 1200) }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "content": [ + { + "type": "text", + "text": "Found 3 relevant documents." + } + ], + "isError": false, + "structuredContent": { + "count": 3, + "items": { + "first": "doc.md" + } + }, + "_meta": { + "elapsedMs": 1200 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize CallToolResult`() { + val json = """ + { + "content": [ + { + "type": "text", + "text": "Unable to reach server." + } + ], + "isError": true, + "structuredContent": { + "errorCode": "NETWORK", + "retryable": true + }, + "_meta": { + "requestId": "req-9" + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + assertEquals(true, result.isError) + val text = assertIs(result.content.first()) + assertEquals("Unable to reach server.", text.text) + val structured = result.structuredContent + assertNotNull(structured) + assertEquals("NETWORK", structured["errorCode"]?.jsonPrimitive?.content) + assertEquals("req-9", result.meta?.get("requestId")?.jsonPrimitive?.content) + } + + @Test + fun `should serialize ListToolsRequest with cursor`() { + val request = ListToolsRequest( + PaginatedRequestParams( + cursor = "cursor-1", + meta = RequestMeta(buildJsonObject { put("progressToken", "tools-list-1") }), + ), + ) + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "tools/list", + "params": { + "cursor": "cursor-1", + "_meta": { + "progressToken": "tools-list-1" + } + } + } + """.trimIndent() + } + + @Test + fun `should serialize ListToolsRequest without params`() { + val request = ListToolsRequest() + + val json = McpJson.encodeToString(request) + + json shouldEqualJson """ + { + "method": "tools/list" + } + """.trimIndent() + } + + @Test + fun `should serialize ListToolsResult`() { + val result = ListToolsResult( + tools = listOf( + Tool(name = "search", inputSchema = ToolSchema()), + Tool(name = "summarize", inputSchema = ToolSchema()), + ), + nextCursor = "cursor-2", + meta = buildJsonObject { put("page", 1) }, + ) + + val json = McpJson.encodeToString(result) + + json shouldEqualJson """ + { + "tools": [ + { + "name": "search", + "inputSchema": { + "type": "object" + } + }, + { + "name": "summarize", + "inputSchema": { + "type": "object" + } + } + ], + "nextCursor": "cursor-2", + "_meta": { + "page": 1 + } + } + """.trimIndent() + } + + @Test + fun `should deserialize ListToolsResult`() { + val json = """ + { + "tools": [ + { + "name": "search", + "inputSchema": { + "type": "object" + }, + "description": "Search the workspace" + } + ], + "nextCursor": "cursor-next", + "_meta": { + "page": 3 + } + } + """.trimIndent() + + val result = McpJson.decodeFromString(json) + + assertEquals("cursor-next", result.nextCursor) + val tools = result.tools + assertEquals(1, tools.size) + val tool = tools.first() + assertEquals("search", tool.name) + assertEquals("Search the workspace", tool.description) + assertEquals("object", tool.inputSchema.type) + assertEquals(3, result.meta?.get("page")?.jsonPrimitive?.int) + } + + @Test + fun `should build success CallToolResult with text content`() { + val meta = buildJsonObject { put("source", "toolkit") } + + val result = CallToolResult.success("Operation complete", meta) + + assertEquals(false, result.isError) + val text = assertIs(result.content.single()) + assertEquals("Operation complete", text.text) + assertEquals("toolkit", result.meta?.get("source")?.jsonPrimitive?.content) + assertEquals(null, result.structuredContent) + } + + @Test + fun `should build error CallToolResult with text content`() { + val meta = buildJsonObject { put("code", "ERR42") } + + val result = CallToolResult.error("Failed to connect", meta) + + assertEquals(true, result.isError) + val text = assertIs(result.content.single()) + assertEquals("Failed to connect", text.text) + assertEquals("ERR42", result.meta?.get("code")?.jsonPrimitive?.content) + assertEquals(null, result.structuredContent) + } + + @Test + fun `should serialize tool schema type even when defaults disabled`() { + val tool = weatherTool() + + val customJson = Json(from = McpJson) { + encodeDefaults = false + } + val encoded = customJson.encodeToString(Tool.serializer(), tool) + val element = Json.parseToJsonElement(encoded).jsonObject + + val inputSchema = element["inputSchema"]?.jsonObject + val outputSchema = element["outputSchema"]?.jsonObject + + assertNotNull(inputSchema) + assertEquals("object", inputSchema["type"]?.jsonPrimitive?.content) + assertNotNull(outputSchema) + assertEquals("object", outputSchema["type"]?.jsonPrimitive?.content) + } + + @Test + fun `should deserialize complex tool definition`() { + val expected = weatherTool() + val actual = McpJson.decodeFromString(weatherToolJson()) + + assertEquals(expected, actual) + } + + private fun weatherTool(): Tool = Tool( + name = "get_weather", + title = "Get weather", + description = "Get the current weather in a given location", + inputSchema = ToolSchema( + properties = buildJsonObject { + put( + "location", + buildJsonObject { + put("type", "string") + put("description", "The city and state, e.g. San Francisco, CA") + }, + ) + }, + required = listOf("location"), + ), + outputSchema = ToolSchema( + properties = buildJsonObject { + put( + "temperature", + buildJsonObject { + put("type", "number") + put("description", "Temperature in celsius") + }, + ) + put( + "conditions", + buildJsonObject { + put("type", "string") + put("description", "Weather conditions description") + }, + ) + put( + "humidity", + buildJsonObject { + put("type", "number") + put("description", "Humidity percentage") + }, + ) + }, + required = listOf("temperature", "conditions", "humidity"), + ), + meta = buildJsonObject { put("_for_test_only", true) }, + ) + + private fun weatherToolJson(): String = """ + { + "name": "get_weather", + "title": "Get weather", + "description": "Get the current weather in a given location", + "inputSchema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state, e.g. San Francisco, CA" + } + }, + "required": ["location"] + }, + "outputSchema": { + "type": "object", + "properties": { + "temperature": { + "type": "number", + "description": "Temperature in celsius" + }, + "conditions": { + "type": "string", + "description": "Weather conditions description" + }, + "humidity": { + "type": "number", + "description": "Humidity percentage" + } + }, + "required": ["temperature", "conditions", "humidity"] + }, + "_meta": { + "_for_test_only": true + } + } + """.trimIndent() +} diff --git a/kotlin-sdk-server/api/kotlin-sdk-server.api b/kotlin-sdk-server/api/kotlin-sdk-server.api index f8594469..48e2ca7e 100644 --- a/kotlin-sdk-server/api/kotlin-sdk-server.api +++ b/kotlin-sdk-server/api/kotlin-sdk-server.api @@ -6,62 +6,62 @@ public final class io/modelcontextprotocol/kotlin/sdk/server/KtorServerKt { } public final class io/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt : io/modelcontextprotocol/kotlin/sdk/server/Feature { - public fun (Lio/modelcontextprotocol/kotlin/sdk/Prompt;Lkotlin/jvm/functions/Function2;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Prompt; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Prompt;Lkotlin/jvm/functions/Function2;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Prompt; public final fun component2 ()Lkotlin/jvm/functions/Function2; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Prompt;Lkotlin/jvm/functions/Function2;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt;Lio/modelcontextprotocol/kotlin/sdk/Prompt;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/Prompt;Lkotlin/jvm/functions/Function2;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt;Lio/modelcontextprotocol/kotlin/sdk/types/Prompt;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredPrompt; public fun equals (Ljava/lang/Object;)Z public fun getKey ()Ljava/lang/String; public final fun getMessageProvider ()Lkotlin/jvm/functions/Function2; - public final fun getPrompt ()Lio/modelcontextprotocol/kotlin/sdk/Prompt; + public final fun getPrompt ()Lio/modelcontextprotocol/kotlin/sdk/types/Prompt; public fun hashCode ()I public fun toString ()Ljava/lang/String; } public final class io/modelcontextprotocol/kotlin/sdk/server/RegisteredResource : io/modelcontextprotocol/kotlin/sdk/server/Feature { - public fun (Lio/modelcontextprotocol/kotlin/sdk/Resource;Lkotlin/jvm/functions/Function2;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Resource; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Resource;Lkotlin/jvm/functions/Function2;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Resource; public final fun component2 ()Lkotlin/jvm/functions/Function2; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Resource;Lkotlin/jvm/functions/Function2;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredResource; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredResource;Lio/modelcontextprotocol/kotlin/sdk/Resource;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredResource; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/Resource;Lkotlin/jvm/functions/Function2;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredResource; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredResource;Lio/modelcontextprotocol/kotlin/sdk/types/Resource;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredResource; public fun equals (Ljava/lang/Object;)Z public fun getKey ()Ljava/lang/String; public final fun getReadHandler ()Lkotlin/jvm/functions/Function2; - public final fun getResource ()Lio/modelcontextprotocol/kotlin/sdk/Resource; + public final fun getResource ()Lio/modelcontextprotocol/kotlin/sdk/types/Resource; public fun hashCode ()I public fun toString ()Ljava/lang/String; } public final class io/modelcontextprotocol/kotlin/sdk/server/RegisteredTool : io/modelcontextprotocol/kotlin/sdk/server/Feature { - public fun (Lio/modelcontextprotocol/kotlin/sdk/Tool;Lkotlin/jvm/functions/Function2;)V - public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/Tool; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Tool;Lkotlin/jvm/functions/Function2;)V + public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/types/Tool; public final fun component2 ()Lkotlin/jvm/functions/Function2; - public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/Tool;Lkotlin/jvm/functions/Function2;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredTool; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredTool;Lio/modelcontextprotocol/kotlin/sdk/Tool;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredTool; + public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/types/Tool;Lkotlin/jvm/functions/Function2;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredTool; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredTool;Lio/modelcontextprotocol/kotlin/sdk/types/Tool;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/server/RegisteredTool; public fun equals (Ljava/lang/Object;)Z public final fun getHandler ()Lkotlin/jvm/functions/Function2; public fun getKey ()Ljava/lang/String; - public final fun getTool ()Lio/modelcontextprotocol/kotlin/sdk/Tool; + public final fun getTool ()Lio/modelcontextprotocol/kotlin/sdk/types/Tool; public fun hashCode ()I public fun toString ()Ljava/lang/String; } public class io/modelcontextprotocol/kotlin/sdk/server/Server { - public fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun addPrompt (Lio/modelcontextprotocol/kotlin/sdk/Prompt;Lkotlin/jvm/functions/Function2;)V + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun addPrompt (Lio/modelcontextprotocol/kotlin/sdk/types/Prompt;Lkotlin/jvm/functions/Function2;)V public final fun addPrompt (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function2;)V public static synthetic fun addPrompt$default (Lio/modelcontextprotocol/kotlin/sdk/server/Server;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V public final fun addPrompts (Ljava/util/List;)V public final fun addResource (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V public static synthetic fun addResource$default (Lio/modelcontextprotocol/kotlin/sdk/server/Server;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V public final fun addResources (Ljava/util/List;)V - public final fun addTool (Lio/modelcontextprotocol/kotlin/sdk/Tool;Lkotlin/jvm/functions/Function2;)V - public final fun addTool (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/functions/Function2;)V - public static synthetic fun addTool$default (Lio/modelcontextprotocol/kotlin/sdk/server/Server;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Input;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/Tool$Output;Lio/modelcontextprotocol/kotlin/sdk/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V + public final fun addTool (Lio/modelcontextprotocol/kotlin/sdk/types/Tool;Lkotlin/jvm/functions/Function2;)V + public final fun addTool (Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/functions/Function2;)V + public static synthetic fun addTool$default (Lio/modelcontextprotocol/kotlin/sdk/server/Server;Ljava/lang/String;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ToolSchema;Lio/modelcontextprotocol/kotlin/sdk/types/ToolAnnotations;Lkotlinx/serialization/json/JsonObject;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V public final fun addTools (Ljava/util/List;)V public final fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun connect (Lio/modelcontextprotocol/kotlin/sdk/shared/Transport;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -70,7 +70,7 @@ public class io/modelcontextprotocol/kotlin/sdk/server/Server { protected final fun getOptions ()Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions; public final fun getPrompts ()Ljava/util/Map; public final fun getResources ()Ljava/util/Map; - protected final fun getServerInfo ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; + protected final fun getServerInfo ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; public final fun getTools ()Ljava/util/Map; public final fun onClose (Lkotlin/jvm/functions/Function0;)V public final fun onConnect (Lkotlin/jvm/functions/Function0;)V @@ -84,34 +84,34 @@ public class io/modelcontextprotocol/kotlin/sdk/server/Server { } public final class io/modelcontextprotocol/kotlin/sdk/server/ServerOptions : io/modelcontextprotocol/kotlin/sdk/shared/ProtocolOptions { - public fun (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;Z)V - public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/ServerCapabilities; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;Z)V + public synthetic fun (Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/types/ServerCapabilities; } public class io/modelcontextprotocol/kotlin/sdk/server/ServerSession : io/modelcontextprotocol/kotlin/sdk/shared/Protocol { - public fun (Lio/modelcontextprotocol/kotlin/sdk/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Ljava/lang/String;)V - protected fun assertCapabilityForMethod (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - protected fun assertNotificationCapability (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public fun assertRequestHandlerCapability (Lio/modelcontextprotocol/kotlin/sdk/Method;)V - public final fun createElicitation (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun createElicitation$default (Lio/modelcontextprotocol/kotlin/sdk/server/ServerSession;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/CreateElicitationRequest$RequestedSchema;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun createMessage (Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun createMessage$default (Lio/modelcontextprotocol/kotlin/sdk/server/ServerSession;Lio/modelcontextprotocol/kotlin/sdk/CreateMessageRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun getClientCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/ClientCapabilities; - public final fun getClientVersion ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; + public fun (Lio/modelcontextprotocol/kotlin/sdk/types/Implementation;Lio/modelcontextprotocol/kotlin/sdk/server/ServerOptions;Ljava/lang/String;)V + protected fun assertCapabilityForMethod (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + protected fun assertNotificationCapability (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public fun assertRequestHandlerCapability (Lio/modelcontextprotocol/kotlin/sdk/types/Method;)V + public final fun createElicitation (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun createElicitation$default (Lio/modelcontextprotocol/kotlin/sdk/server/ServerSession;Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequestParams$RequestedSchema;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun createMessage (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun createMessage$default (Lio/modelcontextprotocol/kotlin/sdk/server/ServerSession;Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun getClientCapabilities ()Lio/modelcontextprotocol/kotlin/sdk/types/ClientCapabilities; + public final fun getClientVersion ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; protected final fun getInstructions ()Ljava/lang/String; - protected final fun getServerInfo ()Lio/modelcontextprotocol/kotlin/sdk/Implementation; + protected final fun getServerInfo ()Lio/modelcontextprotocol/kotlin/sdk/types/Implementation; public final fun listRoots (Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun listRoots$default (Lio/modelcontextprotocol/kotlin/sdk/server/ServerSession;Lkotlinx/serialization/json/JsonObject;Lio/modelcontextprotocol/kotlin/sdk/shared/RequestOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public fun onClose ()V public final fun onClose (Lkotlin/jvm/functions/Function0;)V public final fun onInitialized (Lkotlin/jvm/functions/Function0;)V public final fun ping (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun sendLoggingMessage (Lio/modelcontextprotocol/kotlin/sdk/LoggingMessageNotification;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun sendLoggingMessage (Lio/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotification;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun sendPromptListChanged (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun sendResourceListChanged (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun sendResourceUpdated (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun sendResourceUpdated (Lio/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotification;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun sendToolListChanged (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -121,14 +121,14 @@ public final class io/modelcontextprotocol/kotlin/sdk/server/SseServerTransport public final fun getSessionId ()Ljava/lang/String; public final fun handleMessage (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun handlePostMessage (Lio/ktor/server/application/ApplicationCall;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class io/modelcontextprotocol/kotlin/sdk/server/StdioServerTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport { public fun (Lkotlinx/io/Source;Lkotlinx/io/Sink;)V public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } diff --git a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Features.kt b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Features.kt index a956f1b7..78bed9cd 100644 --- a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Features.kt +++ b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Features.kt @@ -1,14 +1,14 @@ package io.modelcontextprotocol.kotlin.sdk.server -import io.modelcontextprotocol.kotlin.sdk.CallToolRequest -import io.modelcontextprotocol.kotlin.sdk.CallToolResult -import io.modelcontextprotocol.kotlin.sdk.GetPromptRequest -import io.modelcontextprotocol.kotlin.sdk.GetPromptResult -import io.modelcontextprotocol.kotlin.sdk.Prompt -import io.modelcontextprotocol.kotlin.sdk.ReadResourceRequest -import io.modelcontextprotocol.kotlin.sdk.ReadResourceResult -import io.modelcontextprotocol.kotlin.sdk.Resource -import io.modelcontextprotocol.kotlin.sdk.Tool +import io.modelcontextprotocol.kotlin.sdk.types.CallToolRequest +import io.modelcontextprotocol.kotlin.sdk.types.CallToolResult +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequest +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptResult +import io.modelcontextprotocol.kotlin.sdk.types.Prompt +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequest +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceResult +import io.modelcontextprotocol.kotlin.sdk.types.Resource +import io.modelcontextprotocol.kotlin.sdk.types.Tool internal typealias FeatureKey = String diff --git a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/SSEServerTransport.kt b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/SSEServerTransport.kt index 64e32fed..b8c15563 100644 --- a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/SSEServerTransport.kt +++ b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/SSEServerTransport.kt @@ -8,9 +8,9 @@ import io.ktor.server.request.contentType import io.ktor.server.request.receiveText import io.ktor.server.response.respondText import io.ktor.server.sse.ServerSSESession -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport -import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage +import io.modelcontextprotocol.kotlin.sdk.types.McpJson import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.job import kotlin.concurrent.atomics.AtomicBoolean diff --git a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Server.kt b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Server.kt index 99f7aa84..3ce426f1 100644 --- a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Server.kt +++ b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/Server.kt @@ -1,32 +1,32 @@ package io.modelcontextprotocol.kotlin.sdk.server import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.CallToolRequest -import io.modelcontextprotocol.kotlin.sdk.CallToolResult -import io.modelcontextprotocol.kotlin.sdk.EmptyJsonObject -import io.modelcontextprotocol.kotlin.sdk.GetPromptRequest -import io.modelcontextprotocol.kotlin.sdk.GetPromptResult -import io.modelcontextprotocol.kotlin.sdk.Implementation -import io.modelcontextprotocol.kotlin.sdk.ListPromptsRequest -import io.modelcontextprotocol.kotlin.sdk.ListPromptsResult -import io.modelcontextprotocol.kotlin.sdk.ListResourceTemplatesRequest -import io.modelcontextprotocol.kotlin.sdk.ListResourceTemplatesResult -import io.modelcontextprotocol.kotlin.sdk.ListResourcesRequest -import io.modelcontextprotocol.kotlin.sdk.ListResourcesResult -import io.modelcontextprotocol.kotlin.sdk.ListToolsRequest -import io.modelcontextprotocol.kotlin.sdk.ListToolsResult -import io.modelcontextprotocol.kotlin.sdk.Method -import io.modelcontextprotocol.kotlin.sdk.Prompt -import io.modelcontextprotocol.kotlin.sdk.PromptArgument -import io.modelcontextprotocol.kotlin.sdk.ReadResourceRequest -import io.modelcontextprotocol.kotlin.sdk.ReadResourceResult -import io.modelcontextprotocol.kotlin.sdk.Resource -import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities -import io.modelcontextprotocol.kotlin.sdk.TextContent -import io.modelcontextprotocol.kotlin.sdk.Tool -import io.modelcontextprotocol.kotlin.sdk.ToolAnnotations import io.modelcontextprotocol.kotlin.sdk.shared.ProtocolOptions import io.modelcontextprotocol.kotlin.sdk.shared.Transport +import io.modelcontextprotocol.kotlin.sdk.types.CallToolRequest +import io.modelcontextprotocol.kotlin.sdk.types.CallToolResult +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequest +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptResult +import io.modelcontextprotocol.kotlin.sdk.types.Implementation +import io.modelcontextprotocol.kotlin.sdk.types.ListPromptsRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListPromptsResult +import io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListResourceTemplatesResult +import io.modelcontextprotocol.kotlin.sdk.types.ListResourcesRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListResourcesResult +import io.modelcontextprotocol.kotlin.sdk.types.ListToolsRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListToolsResult +import io.modelcontextprotocol.kotlin.sdk.types.Method +import io.modelcontextprotocol.kotlin.sdk.types.Prompt +import io.modelcontextprotocol.kotlin.sdk.types.PromptArgument +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequest +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceResult +import io.modelcontextprotocol.kotlin.sdk.types.Resource +import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities +import io.modelcontextprotocol.kotlin.sdk.types.TextContent +import io.modelcontextprotocol.kotlin.sdk.types.Tool +import io.modelcontextprotocol.kotlin.sdk.types.ToolAnnotations +import io.modelcontextprotocol.kotlin.sdk.types.ToolSchema import kotlinx.atomicfu.atomic import kotlinx.atomicfu.update import kotlinx.collections.immutable.persistentListOf @@ -245,7 +245,7 @@ public open class Server( * @param inputSchema The expected input schema for the tool. * @param outputSchema The optional expected output schema for the tool. * @param toolAnnotations Optional additional tool information. - * @param _meta Optional metadata as a [JsonObject]. + * @param meta Optional metadata as a [JsonObject]. * @param handler A suspend function that handles executing the tool when called by the client. * @throws IllegalStateException If the server does not support tools. */ @@ -253,21 +253,21 @@ public open class Server( public fun addTool( name: String, description: String, - inputSchema: Tool.Input = Tool.Input(), + inputSchema: ToolSchema = ToolSchema(), title: String? = null, - outputSchema: Tool.Output? = null, + outputSchema: ToolSchema? = null, toolAnnotations: ToolAnnotations? = null, - @Suppress("LocalVariableName") _meta: JsonObject? = null, + meta: JsonObject? = null, handler: suspend (CallToolRequest) -> CallToolResult, ) { val tool = Tool( name = name, - title = title, - description = description, inputSchema = inputSchema, outputSchema = outputSchema, + description = description, + title = title, annotations = toolAnnotations, - _meta = _meta ?: EmptyJsonObject, + meta = meta, ) addTool(tool, handler) } @@ -474,13 +474,14 @@ public open class Server( } private suspend fun handleCallTool(request: CallToolRequest): CallToolResult { - logger.debug { "Handling tool call request for tool: ${request.name}" } + val requestParams = request.params + logger.debug { "Handling tool call request for tool: ${requestParams.name}" } // Check if the tool exists - val tool = toolRegistry.get(request.name) ?: run { - logger.error { "Tool not found: ${request.name}" } + val tool = toolRegistry.get(requestParams.name) ?: run { + logger.error { "Tool not found: ${requestParams.name}" } return CallToolResult( - content = listOf(TextContent(text = "Tool ${request.name} not found")), + content = listOf(TextContent(text = "Tool ${requestParams.name} not found")), isError = true, ) } @@ -488,14 +489,14 @@ public open class Server( @Suppress("TooGenericExceptionCaught") // Execute the tool handler and catch any errors return try { - logger.trace { "Executing tool ${request.name} with input: ${request.arguments}" } + logger.trace { "Executing tool ${requestParams.name} with input: ${requestParams.arguments}" } tool.handler(request) } catch (e: CancellationException) { throw e } catch (e: Exception) { - logger.error(e) { "Error executing tool ${request.name}" } + logger.error(e) { "Error executing tool ${requestParams.name}" } CallToolResult( - content = listOf(TextContent(text = "Error executing tool ${request.name}: ${e.message}")), + content = listOf(TextContent(text = "Error executing tool ${requestParams.name}: ${e.message}")), isError = true, ) } @@ -507,11 +508,12 @@ public open class Server( } private suspend fun handleGetPrompt(request: GetPromptRequest): GetPromptResult { - logger.debug { "Handling get prompt request for: ${request.name}" } - val prompt = promptRegistry.get(request.name) + val requestParams = request.params + logger.debug { "Handling get prompt request for: ${requestParams.name}" } + val prompt = promptRegistry.get(requestParams.name) ?: run { - logger.error { "Prompt not found: ${request.name}" } - throw IllegalArgumentException("Prompt not found: ${request.name}") + logger.error { "Prompt not found: ${requestParams.name}" } + throw IllegalArgumentException("Prompt not found: ${requestParams.name}") } return prompt.messageProvider(request) } @@ -522,11 +524,12 @@ public open class Server( } private suspend fun handleReadResource(request: ReadResourceRequest): ReadResourceResult { - logger.debug { "Handling read resource request for: ${request.uri}" } - val resource = resourceRegistry.get(request.uri) + val requestParams = request.params + logger.debug { "Handling read resource request for: ${requestParams.uri}" } + val resource = resourceRegistry.get(requestParams.uri) ?: run { - logger.error { "Resource not found: ${request.uri}" } - throw IllegalArgumentException("Resource not found: ${request.uri}") + logger.error { "Resource not found: ${requestParams.uri}" } + throw IllegalArgumentException("Resource not found: ${requestParams.uri}") } return resource.readHandler(request) } diff --git a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerSession.kt b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerSession.kt index 887b57bd..53d47b68 100644 --- a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerSession.kt +++ b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerSession.kt @@ -1,33 +1,36 @@ package io.modelcontextprotocol.kotlin.sdk.server import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.ClientCapabilities -import io.modelcontextprotocol.kotlin.sdk.CreateElicitationRequest -import io.modelcontextprotocol.kotlin.sdk.CreateElicitationRequest.RequestedSchema -import io.modelcontextprotocol.kotlin.sdk.CreateElicitationResult -import io.modelcontextprotocol.kotlin.sdk.CreateMessageRequest -import io.modelcontextprotocol.kotlin.sdk.CreateMessageResult -import io.modelcontextprotocol.kotlin.sdk.EmptyJsonObject -import io.modelcontextprotocol.kotlin.sdk.EmptyRequestResult -import io.modelcontextprotocol.kotlin.sdk.Implementation -import io.modelcontextprotocol.kotlin.sdk.InitializeRequest -import io.modelcontextprotocol.kotlin.sdk.InitializeResult -import io.modelcontextprotocol.kotlin.sdk.InitializedNotification -import io.modelcontextprotocol.kotlin.sdk.LATEST_PROTOCOL_VERSION -import io.modelcontextprotocol.kotlin.sdk.ListRootsRequest -import io.modelcontextprotocol.kotlin.sdk.ListRootsResult -import io.modelcontextprotocol.kotlin.sdk.LoggingLevel -import io.modelcontextprotocol.kotlin.sdk.LoggingMessageNotification -import io.modelcontextprotocol.kotlin.sdk.Method -import io.modelcontextprotocol.kotlin.sdk.Method.Defined -import io.modelcontextprotocol.kotlin.sdk.PingRequest -import io.modelcontextprotocol.kotlin.sdk.PromptListChangedNotification -import io.modelcontextprotocol.kotlin.sdk.ResourceListChangedNotification -import io.modelcontextprotocol.kotlin.sdk.ResourceUpdatedNotification -import io.modelcontextprotocol.kotlin.sdk.SUPPORTED_PROTOCOL_VERSIONS -import io.modelcontextprotocol.kotlin.sdk.ToolListChangedNotification import io.modelcontextprotocol.kotlin.sdk.shared.Protocol import io.modelcontextprotocol.kotlin.sdk.shared.RequestOptions +import io.modelcontextprotocol.kotlin.sdk.types.BaseRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.ClientCapabilities +import io.modelcontextprotocol.kotlin.sdk.types.CreateMessageRequest +import io.modelcontextprotocol.kotlin.sdk.types.CreateMessageResult +import io.modelcontextprotocol.kotlin.sdk.types.ElicitRequest +import io.modelcontextprotocol.kotlin.sdk.types.ElicitRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.ElicitResult +import io.modelcontextprotocol.kotlin.sdk.types.EmptyJsonObject +import io.modelcontextprotocol.kotlin.sdk.types.EmptyResult +import io.modelcontextprotocol.kotlin.sdk.types.Implementation +import io.modelcontextprotocol.kotlin.sdk.types.InitializeRequest +import io.modelcontextprotocol.kotlin.sdk.types.InitializeResult +import io.modelcontextprotocol.kotlin.sdk.types.InitializedNotification +import io.modelcontextprotocol.kotlin.sdk.types.LATEST_PROTOCOL_VERSION +import io.modelcontextprotocol.kotlin.sdk.types.ListRootsRequest +import io.modelcontextprotocol.kotlin.sdk.types.ListRootsResult +import io.modelcontextprotocol.kotlin.sdk.types.LoggingLevel +import io.modelcontextprotocol.kotlin.sdk.types.LoggingMessageNotification +import io.modelcontextprotocol.kotlin.sdk.types.Method +import io.modelcontextprotocol.kotlin.sdk.types.Method.Defined +import io.modelcontextprotocol.kotlin.sdk.types.PingRequest +import io.modelcontextprotocol.kotlin.sdk.types.PromptListChangedNotification +import io.modelcontextprotocol.kotlin.sdk.types.RequestMeta +import io.modelcontextprotocol.kotlin.sdk.types.ResourceListChangedNotification +import io.modelcontextprotocol.kotlin.sdk.types.ResourceUpdatedNotification +import io.modelcontextprotocol.kotlin.sdk.types.SUPPORTED_PROTOCOL_VERSIONS +import io.modelcontextprotocol.kotlin.sdk.types.SetLevelRequest +import io.modelcontextprotocol.kotlin.sdk.types.ToolListChangedNotification import kotlinx.atomicfu.AtomicRef import kotlinx.atomicfu.atomic import kotlinx.coroutines.CompletableDeferred @@ -81,10 +84,10 @@ public open class ServerSession( // Logging level handler if (options.capabilities.logging != null) { - setRequestHandler(Defined.LoggingSetLevel) { request, _ -> - currentLoggingLevel.value = request.level - logger.debug { "Logging level set to: ${request.level}" } - EmptyRequestResult() + setRequestHandler(Defined.LoggingSetLevel) { request, _ -> + currentLoggingLevel.value = request.params.level + logger.debug { "Logging level set to: ${request.params.level}" } + EmptyResult() } } } @@ -125,7 +128,7 @@ public open class ServerSession( * @return The result of the ping request. * @throws IllegalStateException If for some reason the method is not supported or the connection is closed. */ - public suspend fun ping(): EmptyRequestResult = request(PingRequest()) + public suspend fun ping(): EmptyResult = request(PingRequest()) /** * Creates a message using the server's sampling capability. @@ -140,8 +143,7 @@ public open class ServerSession( options: RequestOptions? = null, ): CreateMessageResult { logger.debug { - "Creating message with ${params.messages.size} messages, maxTokens=${params.maxTokens}, " + - "temperature=${params.temperature}, systemPrompt=${if (params.systemPrompt != null) "present" else "absent"}" + "Creating message with ${params.params.messages.size} messages, maxTokens=${params.params.maxTokens}, temperature=${params.params.temperature}, systemPrompt=${if (params.params.systemPrompt != null) "present" else "absent"}" } logger.trace { "Full createMessage params: $params" } return request(params, options) @@ -160,20 +162,20 @@ public open class ServerSession( options: RequestOptions? = null, ): ListRootsResult { logger.debug { "Listing roots with params: $params" } - return request(ListRootsRequest(params), options) + return request(ListRootsRequest(BaseRequestParams(RequestMeta(params))), options) } public suspend fun createElicitation( message: String, - requestedSchema: RequestedSchema, + requestedSchema: ElicitRequestParams.RequestedSchema, options: RequestOptions? = null, - ): CreateElicitationResult { + ): ElicitResult { logger.debug { "Creating elicitation with message length=${message.length}, " + "schema properties count=${requestedSchema.properties.size}" } logger.trace { "Full elicitation message: $message, requestedSchema: $requestedSchema" } - return request(CreateElicitationRequest(message, requestedSchema), options) + return request(ElicitRequest(ElicitRequestParams(message, requestedSchema)), options) } /** @@ -336,7 +338,7 @@ public open class ServerSession( logger.trace { "Asserting request handler capability for method: ${method.value}" } when (method) { Defined.SamplingCreateMessage -> { - if (serverCapabilities.sampling == null) { + if (serverCapabilities.experimental?.get("sampling") == null) { logger.error { "Server capability assertion failed: sampling not supported" } throw IllegalStateException("Server does not support sampling (required for $method)") } @@ -388,10 +390,10 @@ public open class ServerSession( private suspend fun handleInitialize(request: InitializeRequest): InitializeResult { logger.debug { "Handling initialization request from client" } - clientCapabilities = request.capabilities - clientVersion = request.clientInfo + clientCapabilities = request.params.capabilities + clientVersion = request.params.clientInfo - val requestedVersion = request.protocolVersion + val requestedVersion = request.params.protocolVersion val protocolVersion = if (SUPPORTED_PROTOCOL_VERSIONS.contains(requestedVersion)) { requestedVersion } else { @@ -418,7 +420,7 @@ public open class ServerSession( private fun isMessageIgnored(level: LoggingLevel): Boolean { val current = currentLoggingLevel.value ?: return false // If no level is set, don't filter - return level.ordinal < current.ordinal + return level < current } /** diff --git a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/StdioServerTransport.kt b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/StdioServerTransport.kt index 0fa18b8f..b65aecd0 100644 --- a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/StdioServerTransport.kt +++ b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/StdioServerTransport.kt @@ -1,11 +1,11 @@ package io.modelcontextprotocol.kotlin.sdk.server import io.github.oshai.kotlinlogging.KotlinLogging -import io.modelcontextprotocol.kotlin.sdk.JSONRPCMessage import io.modelcontextprotocol.kotlin.sdk.internal.IODispatcher import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport import io.modelcontextprotocol.kotlin.sdk.shared.ReadBuffer import io.modelcontextprotocol.kotlin.sdk.shared.serializeMessage +import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.NonCancellable diff --git a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt index cfa8ed8f..b4d88498 100644 --- a/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt +++ b/kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt @@ -11,10 +11,10 @@ import io.ktor.server.websocket.WebSockets import io.ktor.server.websocket.webSocket import io.ktor.utils.io.CancellationException import io.ktor.utils.io.KtorDsl -import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.LIB_VERSION -import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.shared.IMPLEMENTATION_NAME +import io.modelcontextprotocol.kotlin.sdk.types.Implementation +import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities import kotlinx.coroutines.awaitCancellation private val logger = KotlinLogging.logger {} diff --git a/kotlin-sdk-test/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/ClientTest.kt b/kotlin-sdk-test/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldSchemaClientTest.kt similarity index 97% rename from kotlin-sdk-test/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/ClientTest.kt rename to kotlin-sdk-test/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldSchemaClientTest.kt index ad2a9586..4c3c752e 100644 --- a/kotlin-sdk-test/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/ClientTest.kt +++ b/kotlin-sdk-test/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/OldSchemaClientTest.kt @@ -3,7 +3,6 @@ package io.modelcontextprotocol.kotlin.sdk.client import io.modelcontextprotocol.kotlin.sdk.ClientCapabilities import io.modelcontextprotocol.kotlin.sdk.CreateElicitationRequest import io.modelcontextprotocol.kotlin.sdk.CreateElicitationResult -import io.modelcontextprotocol.kotlin.sdk.CreateMessageRequest import io.modelcontextprotocol.kotlin.sdk.CreateMessageResult import io.modelcontextprotocol.kotlin.sdk.EmptyJsonObject import io.modelcontextprotocol.kotlin.sdk.Implementation @@ -23,7 +22,6 @@ import io.modelcontextprotocol.kotlin.sdk.LoggingMessageNotification import io.modelcontextprotocol.kotlin.sdk.Method import io.modelcontextprotocol.kotlin.sdk.Role import io.modelcontextprotocol.kotlin.sdk.Root -import io.modelcontextprotocol.kotlin.sdk.RootsListChangedNotification import io.modelcontextprotocol.kotlin.sdk.SUPPORTED_PROTOCOL_VERSIONS import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.TextContent @@ -52,7 +50,7 @@ import kotlin.test.assertIs import kotlin.test.assertTrue import kotlin.test.fail -class ClientTest { +class OldSchemaClientTest { @Test fun `should initialize with matching protocol version`() = runTest { var initialised = false @@ -545,7 +543,12 @@ class ClientTest { ), ) - client.setRequestHandler(Method.Defined.SamplingCreateMessage) { _, _ -> + client.setRequestHandler( + Method.Defined.SamplingCreateMessage, + ) { + _, + _, + -> CreateMessageResult( model = "test-model", role = Role.assistant, @@ -643,7 +646,6 @@ class ClientTest { assertEquals(request.id, receivedAsResponse.id) assertEquals(request.jsonrpc, receivedAsResponse.jsonrpc) assertEquals(serverListToolsResult, receivedAsResponse.result) - assertEquals(null, receivedAsResponse.error) } @Test @@ -818,7 +820,7 @@ class ClientTest { ).joinAll() val serverSession = serverSessionResult.await() - serverSession.setNotificationHandler( + serverSession.setNotificationHandler( Method.Defined.NotificationsRootsListChanged, ) { rootListChangedNotificationReceived = true @@ -906,8 +908,10 @@ class ClientTest { val (clientTransport, serverTransport) = InMemoryTransport.createLinkedPair() - val receivedMessages = mutableListOf() - client.setNotificationHandler(Method.Defined.NotificationsMessage) { notification -> + val receivedMessages = mutableListOf() + client.setNotificationHandler( + Method.Defined.NotificationsMessage, + ) { notification -> receivedMessages.add(notification) CompletableDeferred(Unit) } @@ -930,7 +934,7 @@ class ClientTest { // Set logging level to warning val minLevel = LoggingLevel.warning val result = client.setLoggingLevel(minLevel) - assertEquals(EmptyJsonObject, result._meta) + assertEquals(null, result.meta) // Send messages of different levels val testMessages = listOf( @@ -993,8 +997,8 @@ class ClientTest { } client.setElicitationHandler { request -> - assertEquals(elicitationMessage, request.message) - assertEquals(requestedSchema, request.requestedSchema) + assertEquals(elicitationMessage, request.params.message) + assertEquals(requestedSchema, request.params.requestedSchema) CreateElicitationResult( action = elicitationResultAction, diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractPromptIntegrationTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractPromptIntegrationTest.kt similarity index 88% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractPromptIntegrationTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractPromptIntegrationTest.kt index d5644bbc..1c7c1304 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractPromptIntegrationTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractPromptIntegrationTest.kt @@ -7,6 +7,8 @@ import io.modelcontextprotocol.kotlin.sdk.PromptMessage import io.modelcontextprotocol.kotlin.sdk.Role import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.TextContent +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.McpException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking @@ -17,7 +19,7 @@ import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -abstract class AbstractPromptIntegrationTest : KotlinTestBase() { +abstract class OldSchemaAbstractPromptIntegrationTest : OldSchemaKotlinTestBase() { private val basicPromptName = "basic-prompt" private val basicPromptDescription = "A basic prompt for testing" @@ -37,11 +39,12 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { private val specialCharsPromptDescription = "A prompt with special characters" private val specialCharsContent = "!@#$%^&*()_+{}|:\"<>?~`-=[]\\;',./\n\t" - override fun configureServerCapabilities(): ServerCapabilities = ServerCapabilities( - prompts = ServerCapabilities.Prompts( - listChanged = true, - ), - ) + override fun configureServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + ServerCapabilities( + prompts = ServerCapabilities.Prompts( + listChanged = true, + ), + ) override fun configureServer() { // basic prompt with a name parameter @@ -56,7 +59,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ), ), ) { request -> - val name = request.arguments?.get("name") ?: "World" + val name = request.params.arguments?.get("name") ?: "World" GetPromptResult( description = basicPromptDescription, @@ -85,7 +88,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ), ), ) { request -> - val special = request.arguments?.get("special") ?: specialCharsContent + val special = request.params.arguments?.get("special") ?: specialCharsContent GetPromptResult( description = specialCharsPromptDescription, @@ -114,7 +117,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ), ), ) { request -> - val size = request.arguments?.get("size")?.toIntOrNull() ?: 1 + val size = request.params.arguments?.get("size")?.toIntOrNull() ?: 1 val content = largePromptContent.repeat(size) GetPromptResult( @@ -152,7 +155,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { // validate required arguments val requiredArgs = listOf("arg1", "arg2", "arg3") for (argName in requiredArgs) { - if (request.arguments?.get(argName) == null) { + if (request.params.arguments?.get(argName) == null) { throw IllegalArgumentException("Missing required argument: $argName") } } @@ -160,7 +163,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { val args = mutableMapOf() for (i in 1..10) { val argName = "arg$i" - val argValue = request.arguments?.get(argName) + val argValue = request.params.arguments?.get(argName) if (argValue != null) { args[argName] = argValue } @@ -199,7 +202,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ), ), ) { request -> - val topic = request.arguments?.get("topic") ?: "weather" + val topic = request.params.arguments?.get("topic") ?: "weather" GetPromptResult( description = conversationPromptDescription, @@ -261,7 +264,7 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ), ), ) { request -> - val args = request.arguments ?: emptyMap() + val args = request.params.arguments ?: emptyMap() val arg1 = args["requiredArg1"] ?: throw IllegalArgumentException( "Missing required argument: requiredArg1", ) @@ -319,8 +322,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { val testName = "Alice" val result = client.getPrompt( GetPromptRequest( - name = basicPromptName, - arguments = mapOf("name" to testName), + GetPromptRequestParams( + name = basicPromptName, + arguments = mapOf("name" to testName), + ), ), ) @@ -373,12 +378,14 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ) // test missing required arg - val exception = assertThrows { + val exception = assertThrows { runBlocking { client.getPrompt( GetPromptRequest( - name = strictPromptName, - arguments = mapOf("requiredArg1" to "value1"), + GetPromptRequestParams( + name = strictPromptName, + arguments = mapOf("requiredArg1" to "value1"), + ), ), ) } @@ -391,12 +398,14 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { ) // test with no args - val exception2 = assertThrows { + val exception2 = assertThrows { runBlocking { client.getPrompt( GetPromptRequest( - name = strictPromptName, - arguments = emptyMap(), + GetPromptRequestParams( + name = strictPromptName, + arguments = emptyMap(), + ), ), ) } @@ -411,10 +420,12 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { // test with all required args val result = client.getPrompt( GetPromptRequest( - name = strictPromptName, - arguments = mapOf( - "requiredArg1" to "value1", - "requiredArg2" to "value2", + GetPromptRequestParams( + name = strictPromptName, + arguments = mapOf( + "requiredArg1" to "value1", + "requiredArg2" to "value2", + ), ), ), ) @@ -436,8 +447,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { val topic = "climate change" val result = client.getPrompt( GetPromptRequest( - name = conversationPromptName, - arguments = mapOf("topic" to topic), + GetPromptRequestParams( + name = conversationPromptName, + arguments = mapOf("topic" to topic), + ), ), ) @@ -487,8 +500,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { val testName = "Alice" val result = client.getPrompt( GetPromptRequest( - name = basicPromptName, - arguments = mapOf("name" to testName), + GetPromptRequestParams( + name = basicPromptName, + arguments = mapOf("name" to testName), + ), ), ) @@ -520,8 +535,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { val result = client.getPrompt( GetPromptRequest( - name = complexPromptName, - arguments = arguments, + GetPromptRequestParams( + name = complexPromptName, + arguments = arguments, + ), ), ) @@ -556,8 +573,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { fun testLargePrompt() = runBlocking(Dispatchers.IO) { val result = client.getPrompt( GetPromptRequest( - name = largePromptName, - arguments = mapOf("size" to "1"), + GetPromptRequestParams( + name = largePromptName, + arguments = mapOf("size" to "1"), + ), ), ) @@ -578,8 +597,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { fun testSpecialCharacters() = runBlocking(Dispatchers.IO) { val result = client.getPrompt( GetPromptRequest( - name = specialCharsPromptName, - arguments = mapOf("special" to specialCharsContent), + GetPromptRequestParams( + name = specialCharsPromptName, + arguments = mapOf("special" to specialCharsContent), + ), ), ) @@ -630,8 +651,10 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { val result = client.getPrompt( GetPromptRequest( - name = promptName, - arguments = arguments, + GetPromptRequestParams( + name = promptName, + arguments = arguments, + ), ), ) @@ -654,19 +677,21 @@ abstract class AbstractPromptIntegrationTest : KotlinTestBase() { fun testNonExistentPrompt() = runTest { val nonExistentPromptName = "non-existent-prompt" - val exception = assertThrows { + val exception = assertThrows { runBlocking { client.getPrompt( GetPromptRequest( - name = nonExistentPromptName, - arguments = mapOf("name" to "Test"), + GetPromptRequestParams( + name = nonExistentPromptName, + arguments = mapOf("name" to "Test"), + ), ), ) } } val msg = exception.message ?: "" - val expectedMessage = "JSONRPCError(code=InternalError, message=Prompt not found: non-existent-prompt, data={})" + val expectedMessage = "MCP error -32603: Prompt not found: non-existent-prompt" assertEquals(expectedMessage, msg, "Unexpected error message for non-existent prompt") } diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractResourceIntegrationTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractResourceIntegrationTest.kt similarity index 83% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractResourceIntegrationTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractResourceIntegrationTest.kt index ad80567a..a7a4202a 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractResourceIntegrationTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractResourceIntegrationTest.kt @@ -7,6 +7,10 @@ import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.SubscribeRequest import io.modelcontextprotocol.kotlin.sdk.TextResourceContents import io.modelcontextprotocol.kotlin.sdk.UnsubscribeRequest +import io.modelcontextprotocol.kotlin.sdk.types.McpException +import io.modelcontextprotocol.kotlin.sdk.types.ReadResourceRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.SubscribeRequestParams +import io.modelcontextprotocol.kotlin.sdk.types.UnsubscribeRequestParams import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking @@ -19,7 +23,7 @@ import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -abstract class AbstractResourceIntegrationTest : KotlinTestBase() { +abstract class OldSchemaAbstractResourceIntegrationTest : OldSchemaKotlinTestBase() { private val testResourceUri = "test://example.txt" private val testResourceName = "Test Resource" @@ -41,12 +45,13 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { private val dynamicResourceName = "Dynamic Resource" private val dynamicResourceContent = AtomicBoolean(false) - override fun configureServerCapabilities(): ServerCapabilities = ServerCapabilities( - resources = ServerCapabilities.Resources( - subscribe = true, - listChanged = true, - ), - ) + override fun configureServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + ServerCapabilities( + resources = ServerCapabilities.Resources( + subscribe = true, + listChanged = true, + ), + ) override fun configureServer() { server.addResource( @@ -59,7 +64,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { contents = listOf( TextResourceContents( text = testResourceContent, - uri = request.uri, + uri = request.params.uri, mimeType = "text/plain", ), ), @@ -76,7 +81,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { contents = listOf( TextResourceContents( text = testResourceContent, - uri = request.uri, + uri = request.params.uri, mimeType = "text/plain", ), ), @@ -93,7 +98,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { contents = listOf( BlobResourceContents( blob = binaryResourceContent, - uri = request.uri, + uri = request.params.uri, mimeType = "image/png", ), ), @@ -110,7 +115,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { contents = listOf( TextResourceContents( text = largeResourceContent, - uri = request.uri, + uri = request.params.uri, mimeType = "text/plain", ), ), @@ -127,7 +132,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { contents = listOf( TextResourceContents( text = if (dynamicResourceContent.get()) "Updated content" else "Original content", - uri = request.uri, + uri = request.params.uri, mimeType = "text/plain", ), ), @@ -150,7 +155,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { @Test fun testReadResource() = runBlocking(Dispatchers.IO) { - val result = client.readResource(ReadResourceRequest(uri = testResourceUri)) + val result = client.readResource(ReadResourceRequest(ReadResourceRequestParams(uri = testResourceUri))) assertNotNull(result, "Read resource result should not be null") assertTrue(result.contents.isNotEmpty(), "Resource contents should not be empty") @@ -164,17 +169,19 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { @Test fun testSubscribeAndUnsubscribe() { runBlocking(Dispatchers.IO) { - val subscribeResult = client.subscribeResource(SubscribeRequest(uri = testResourceUri)) + val subscribeResult = + client.subscribeResource(SubscribeRequest(SubscribeRequestParams(uri = testResourceUri))) assertNotNull(subscribeResult, "Subscribe result should not be null") - val unsubscribeResult = client.unsubscribeResource(UnsubscribeRequest(uri = testResourceUri)) + val unsubscribeResult = + client.unsubscribeResource(UnsubscribeRequest(UnsubscribeRequestParams(uri = testResourceUri))) assertNotNull(unsubscribeResult, "Unsubscribe result should not be null") } } @Test fun testBinaryResource() = runBlocking(Dispatchers.IO) { - val result = client.readResource(ReadResourceRequest(uri = binaryResourceUri)) + val result = client.readResource(ReadResourceRequest(ReadResourceRequestParams(uri = binaryResourceUri))) assertNotNull(result, "Read resource result should not be null") assertTrue(result.contents.isNotEmpty(), "Resource contents should not be empty") @@ -187,7 +194,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { @Test fun testLargeResource() = runBlocking(Dispatchers.IO) { - val result = client.readResource(ReadResourceRequest(uri = largeResourceUri)) + val result = client.readResource(ReadResourceRequest(ReadResourceRequestParams(uri = largeResourceUri))) assertNotNull(result, "Read resource result should not be null") assertTrue(result.contents.isNotEmpty(), "Resource contents should not be empty") @@ -202,22 +209,24 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { fun testInvalidResourceUri() = runTest { val invalidUri = "test://nonexistent.txt" - val exception = assertThrows { + val exception = assertThrows { runBlocking { - client.readResource(ReadResourceRequest(uri = invalidUri)) + client.readResource(ReadResourceRequest(ReadResourceRequestParams(uri = invalidUri))) } } val msg = exception.message ?: "" val expectedMessage = - "JSONRPCError(code=InternalError, message=Resource not found: test://nonexistent.txt, data={})" + "MCP error -32603: Resource not found: test://nonexistent.txt" assertEquals(expectedMessage, msg, "Unexpected error message for invalid resource URI") } @Test fun testDynamicResource() = runBlocking(Dispatchers.IO) { - val initialResult = client.readResource(ReadResourceRequest(uri = dynamicResourceUri)) + val initialResult = client.readResource( + ReadResourceRequest(ReadResourceRequestParams(uri = dynamicResourceUri)), + ) assertNotNull(initialResult, "Initial read result should not be null") val initialContent = (initialResult.contents.firstOrNull() as? TextResourceContents)?.text assertEquals("Original content", initialContent, "Initial content should match") @@ -225,7 +234,9 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { // update resource dynamicResourceContent.set(true) - val updatedResult = client.readResource(ReadResourceRequest(uri = dynamicResourceUri)) + val updatedResult = client.readResource( + ReadResourceRequest(ReadResourceRequestParams(uri = dynamicResourceUri)), + ) assertNotNull(updatedResult, "Updated read result should not be null") val updatedContent = (updatedResult.contents.firstOrNull() as? TextResourceContents)?.text assertEquals("Updated content", updatedContent, "Updated content should match") @@ -248,7 +259,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { contents = listOf( TextResourceContents( text = "New resource content", - uri = request.uri, + uri = request.params.uri, mimeType = "text/plain", ), ), @@ -288,7 +299,7 @@ abstract class AbstractResourceIntegrationTest : KotlinTestBase() { else -> largeResourceUri } - val result = client.readResource(ReadResourceRequest(uri = uri)) + val result = client.readResource(ReadResourceRequest(ReadResourceRequestParams(uri = uri))) synchronized(results) { results.add(result) } diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractToolIntegrationTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractToolIntegrationTest.kt similarity index 87% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractToolIntegrationTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractToolIntegrationTest.kt index ca88723f..6086b47b 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractToolIntegrationTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaAbstractToolIntegrationTest.kt @@ -3,12 +3,12 @@ package io.modelcontextprotocol.kotlin.sdk.integration.kotlin import io.kotest.assertions.json.shouldEqualJson import io.modelcontextprotocol.kotlin.sdk.CallToolRequest import io.modelcontextprotocol.kotlin.sdk.CallToolResult -import io.modelcontextprotocol.kotlin.sdk.CallToolResultBase import io.modelcontextprotocol.kotlin.sdk.ImageContent import io.modelcontextprotocol.kotlin.sdk.PromptMessageContent import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.Tool +import io.modelcontextprotocol.kotlin.sdk.types.CallToolRequestParams import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -28,7 +28,7 @@ import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -abstract class AbstractToolIntegrationTest : KotlinTestBase() { +abstract class OldSchemaAbstractToolIntegrationTest : OldSchemaKotlinTestBase() { private val testToolName = "echo" private val testToolDescription = "A simple echo tool that returns the input text" private val complexToolName = "calculator" @@ -52,11 +52,12 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { private val specialCharsToolDescription = "A tool that handles special characters" private val specialCharsContent = "!@#$%^&*()_+{}|:\"<>?~`-=[]\\;',./\n\t" - override fun configureServerCapabilities(): ServerCapabilities = ServerCapabilities( - tools = ServerCapabilities.Tools( - listChanged = true, - ), - ) + override fun configureServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + ServerCapabilities( + tools = ServerCapabilities.Tools( + listChanged = true, + ), + ) override fun configureServer() { setupEchoTool() @@ -82,7 +83,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { required = listOf("text"), ), ) { request -> - val text = (request.arguments["text"] as? JsonPrimitive)?.content ?: "No text provided" + val text = (request.params.arguments?.get("text") as? JsonPrimitive)?.content ?: "No text provided" CallToolResult( content = listOf(TextContent(text = "Echo: $text")), @@ -110,7 +111,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { required = listOf("text"), ), ) { request -> - val text = (request.arguments["text"] as? JsonPrimitive)?.content ?: "No text provided" + val text = (request.params.arguments?.get("text") as? JsonPrimitive)?.content ?: "No text provided" CallToolResult( content = listOf(TextContent(text = "Echo: $text")), @@ -135,7 +136,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { }, ), ) { request -> - val special = (request.arguments["special"] as? JsonPrimitive)?.content ?: specialCharsContent + val special = (request.params.arguments?.get("special") as? JsonPrimitive)?.content ?: specialCharsContent CallToolResult( content = listOf(TextContent(text = "Received special characters: $special")), @@ -161,7 +162,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { }, ), ) { request -> - val delay = (request.arguments["delay"] as? JsonPrimitive)?.content?.toIntOrNull() ?: 1000 + val delay = (request.params.arguments?.get("delay") as? JsonPrimitive)?.content?.toIntOrNull() ?: 1000 // simulate slow operation runBlocking { @@ -191,7 +192,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { }, ), ) { request -> - val size = (request.arguments["size"] as? JsonPrimitive)?.content?.toIntOrNull() ?: 1 + val size = (request.params.arguments?.get("size") as? JsonPrimitive)?.content?.toIntOrNull() ?: 1 val content = largeToolContent.take(largeToolContent.length.coerceAtMost(size * 1000)) CallToolResult( @@ -270,12 +271,13 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { required = listOf("operation", "a", "b"), ), ) { request -> - val operation = (request.arguments["operation"] as? JsonPrimitive)?.content ?: "add" - val a = (request.arguments["a"] as? JsonPrimitive)?.content?.toDoubleOrNull() ?: 0.0 - val b = (request.arguments["b"] as? JsonPrimitive)?.content?.toDoubleOrNull() ?: 0.0 - val precision = (request.arguments["precision"] as? JsonPrimitive)?.content?.toIntOrNull() ?: 2 - val showSteps = (request.arguments["showSteps"] as? JsonPrimitive)?.content?.toBoolean() ?: false - val tags = (request.arguments["tags"] as? JsonArray)?.mapNotNull { + val operation = (request.params.arguments?.get("operation") as? JsonPrimitive)?.content ?: "add" + val a = (request.params.arguments?.get("a") as? JsonPrimitive)?.content?.toDoubleOrNull() ?: 0.0 + val b = (request.params.arguments?.get("b") as? JsonPrimitive)?.content?.toDoubleOrNull() ?: 0.0 + val precision = (request.params.arguments?.get("precision") as? JsonPrimitive)?.content?.toIntOrNull() ?: 2 + val showSteps = + (request.params.arguments?.get("showSteps") as? JsonPrimitive)?.content?.toBoolean() ?: false + val tags = (request.params.arguments?.get("tags") as? JsonArray)?.mapNotNull { (it as? JsonPrimitive)?.content } ?: emptyList() @@ -348,8 +350,8 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { required = listOf("errorType"), ), ) { request -> - val errorType = (request.arguments["errorType"] as? JsonPrimitive)?.content ?: "none" - val message = (request.arguments["message"] as? JsonPrimitive)?.content ?: "An error occurred" + val errorType = (request.params.arguments?.get("errorType") as? JsonPrimitive)?.content ?: "none" + val message = (request.params.arguments?.get("message") as? JsonPrimitive)?.content ?: "An error occurred" when (errorType) { "exception" -> throw IllegalArgumentException(message) @@ -398,8 +400,9 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { required = listOf("text"), ), ) { request -> - val text = (request.arguments["text"] as? JsonPrimitive)?.content ?: "Default text" - val includeImage = (request.arguments["includeImage"] as? JsonPrimitive)?.content?.toBoolean() ?: true + val text = (request.params.arguments?.get("text") as? JsonPrimitive)?.content ?: "Default text" + val includeImage = + (request.params.arguments?.get("includeImage") as? JsonPrimitive)?.content?.toBoolean() ?: true val content = mutableListOf( TextContent(text = "Text content: $text"), @@ -446,7 +449,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { val testText = "Hello, world!" val arguments = mapOf("text" to testText) - val result = client.callTool(testToolName, arguments) as CallToolResultBase + val result = client.callTool(testToolName, arguments) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val actualContent = result.structuredContent.toString() val expectedContent = """ @@ -472,7 +475,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { "tags" to listOf("test", "calculator", "integration"), ) - val result = client.callTool(complexToolName, arguments) as CallToolResultBase + val result = client.callTool( + complexToolName, + arguments, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val actualContent = result.structuredContent.toString() val expectedContent = """ @@ -509,7 +515,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { "errorType" to "error", "message" to "Custom error message", ) - val errorResult = client.callTool(errorToolName, errorArgs) as CallToolResultBase + val errorResult = client.callTool( + errorToolName, + errorArgs, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val actualError = errorResult.structuredContent.toString() val expectedError = """ @@ -526,7 +535,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { "message" to "My exception message", ) - val exceptionResult = client.callTool(errorToolName, exceptionArgs) as CallToolResultBase + val exceptionResult = client.callTool( + errorToolName, + exceptionArgs, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertTrue(exceptionResult.isError ?: false, "isError should be true for exception") @@ -548,7 +560,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { "includeImage" to true, ) - val result = client.callTool(multiContentToolName, arguments) as CallToolResultBase + val result = client.callTool( + multiContentToolName, + arguments, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertEquals( 2, @@ -585,7 +600,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { "includeImage" to false, ) - val textOnlyResult = client.callTool(multiContentToolName, textOnlyArgs) as CallToolResultBase + val textOnlyResult = client.callTool( + multiContentToolName, + textOnlyArgs, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertEquals( 1, @@ -622,10 +640,12 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { val result = client.callTool( CallToolRequest( - name = complexToolName, - arguments = arguments, + CallToolRequestParams( + name = complexToolName, + arguments = arguments, + ), ), - ) as CallToolResultBase + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val actualContent = result.structuredContent.toString() val expectedContent = """ @@ -648,7 +668,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { val size = 10 val arguments = mapOf("size" to size) - val result = client.callTool(largeToolName, arguments) as CallToolResultBase + val result = client.callTool( + largeToolName, + arguments, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val content = result.content.firstOrNull() as TextContent assertNotNull(content, "Tool result content should be TextContent") @@ -669,7 +692,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { val arguments = mapOf("delay" to delay) val startTime = System.currentTimeMillis() - val result = client.callTool(slowToolName, arguments) as CallToolResultBase + val result = client.callTool(slowToolName, arguments) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val endTime = System.currentTimeMillis() val content = result.content.firstOrNull() as? TextContent @@ -692,7 +715,10 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { runBlocking(Dispatchers.IO) { val arguments = mapOf("special" to specialCharsContent) - val result = client.callTool(specialCharsToolName, arguments) as CallToolResultBase + val result = client.callTool( + specialCharsToolName, + arguments, + ) as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val content = result.content.firstOrNull() as? TextContent assertNotNull(content, "Tool result content should be TextContent") @@ -715,7 +741,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { @Test fun testConcurrentToolCalls() = runTest { val concurrentCount = 10 - val results = mutableListOf() + val results = mutableListOf() runBlocking { repeat(concurrentCount) { index -> @@ -776,7 +802,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() { } assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertTrue(callResult.isError ?: false, "isError should be true for non-existent tool") val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/KotlinTestBase.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaKotlinTestBase.kt similarity index 97% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/KotlinTestBase.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaKotlinTestBase.kt index 66b166cc..c781fdf5 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/KotlinTestBase.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/OldSchemaKotlinTestBase.kt @@ -8,7 +8,6 @@ import io.ktor.server.engine.EmbeddedServer import io.ktor.server.engine.embeddedServer import io.ktor.server.routing.routing import io.modelcontextprotocol.kotlin.sdk.Implementation -import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.client.Client import io.modelcontextprotocol.kotlin.sdk.client.SseClientTransport import io.modelcontextprotocol.kotlin.sdk.client.StdioClientTransport @@ -34,7 +33,7 @@ import io.ktor.server.cio.CIO as ServerCIO import io.ktor.server.sse.SSE as ServerSSE @Retry(times = 3) -abstract class KotlinTestBase { +abstract class OldSchemaKotlinTestBase { protected val host = "localhost" protected var port: Int = 0 @@ -52,7 +51,7 @@ abstract class KotlinTestBase { private var stdioClientInput: Source? = null private var stdioClientOutput: Sink? = null - protected abstract fun configureServerCapabilities(): ServerCapabilities + protected abstract fun configureServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities protected abstract fun configureServer() @BeforeEach diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaPromptIntegrationTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaPromptIntegrationTestSse.kt new file mode 100644 index 00000000..63d5865d --- /dev/null +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaPromptIntegrationTestSse.kt @@ -0,0 +1,7 @@ +package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.sse + +import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.OldSchemaAbstractPromptIntegrationTest + +class OldSchemaPromptIntegrationTestSse : OldSchemaAbstractPromptIntegrationTest() { + override val transportKind: TransportKind = TransportKind.SSE +} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaResourceIntegrationTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaResourceIntegrationTestSse.kt new file mode 100644 index 00000000..68377530 --- /dev/null +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaResourceIntegrationTestSse.kt @@ -0,0 +1,7 @@ +package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.sse + +import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.OldSchemaAbstractResourceIntegrationTest + +class OldSchemaResourceIntegrationTestSse : OldSchemaAbstractResourceIntegrationTest() { + override val transportKind: TransportKind = TransportKind.SSE +} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaToolIntegrationTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaToolIntegrationTestSse.kt new file mode 100644 index 00000000..bd39d77b --- /dev/null +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/OldSchemaToolIntegrationTestSse.kt @@ -0,0 +1,7 @@ +package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.sse + +import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.OldSchemaAbstractToolIntegrationTest + +class OldSchemaToolIntegrationTestSse : OldSchemaAbstractToolIntegrationTest() { + override val transportKind: TransportKind = TransportKind.SSE +} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/PromptIntegrationTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/PromptIntegrationTestSse.kt deleted file mode 100644 index d8f218b9..00000000 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/PromptIntegrationTestSse.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.sse - -import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.AbstractPromptIntegrationTest - -class PromptIntegrationTestSse : AbstractPromptIntegrationTest() { - override val transportKind: TransportKind = TransportKind.SSE -} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/ResourceIntegrationTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/ResourceIntegrationTestSse.kt deleted file mode 100644 index bf1240df..00000000 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/ResourceIntegrationTestSse.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.sse - -import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.AbstractResourceIntegrationTest - -class ResourceIntegrationTestSse : AbstractResourceIntegrationTest() { - override val transportKind: TransportKind = TransportKind.SSE -} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/ToolIntegrationTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/ToolIntegrationTestSse.kt deleted file mode 100644 index dd007c6e..00000000 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/sse/ToolIntegrationTestSse.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.sse - -import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.AbstractToolIntegrationTest - -class ToolIntegrationTestSse : AbstractToolIntegrationTest() { - override val transportKind: TransportKind = TransportKind.SSE -} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaPromptIntegrationTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaPromptIntegrationTestStdio.kt new file mode 100644 index 00000000..68d03ebc --- /dev/null +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaPromptIntegrationTestStdio.kt @@ -0,0 +1,7 @@ +package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.stdio + +import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.OldSchemaAbstractPromptIntegrationTest + +class OldSchemaPromptIntegrationTestStdio : OldSchemaAbstractPromptIntegrationTest() { + override val transportKind: TransportKind = TransportKind.STDIO +} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaResourceIntegrationTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaResourceIntegrationTestStdio.kt new file mode 100644 index 00000000..4b077606 --- /dev/null +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaResourceIntegrationTestStdio.kt @@ -0,0 +1,7 @@ +package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.stdio + +import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.OldSchemaAbstractResourceIntegrationTest + +class OldSchemaResourceIntegrationTestStdio : OldSchemaAbstractResourceIntegrationTest() { + override val transportKind: TransportKind = TransportKind.STDIO +} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaToolIntegrationTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaToolIntegrationTestStdio.kt new file mode 100644 index 00000000..046eebfb --- /dev/null +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/OldSchemaToolIntegrationTestStdio.kt @@ -0,0 +1,7 @@ +package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.stdio + +import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.OldSchemaAbstractToolIntegrationTest + +class OldSchemaToolIntegrationTestStdio : OldSchemaAbstractToolIntegrationTest() { + override val transportKind: TransportKind = TransportKind.STDIO +} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/PromptIntegrationTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/PromptIntegrationTestStdio.kt deleted file mode 100644 index 88be1e80..00000000 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/PromptIntegrationTestStdio.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.stdio - -import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.AbstractPromptIntegrationTest - -class PromptIntegrationTestStdio : AbstractPromptIntegrationTest() { - override val transportKind: TransportKind = TransportKind.STDIO -} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/ResourceIntegrationTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/ResourceIntegrationTestStdio.kt deleted file mode 100644 index 88eca7b0..00000000 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/ResourceIntegrationTestStdio.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.stdio - -import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.AbstractResourceIntegrationTest - -class ResourceIntegrationTestStdio : AbstractResourceIntegrationTest() { - override val transportKind: TransportKind = TransportKind.STDIO -} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/ToolIntegrationTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/ToolIntegrationTestStdio.kt deleted file mode 100644 index 673d44bb..00000000 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/stdio/ToolIntegrationTestStdio.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.modelcontextprotocol.kotlin.sdk.integration.kotlin.stdio - -import io.modelcontextprotocol.kotlin.sdk.integration.kotlin.AbstractToolIntegrationTest - -class ToolIntegrationTestStdio : AbstractToolIntegrationTest() { - override val transportKind: TransportKind = TransportKind.STDIO -} diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/websocket/WebSocketIntegrationTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/websocket/OldSchemaWebSocketIntegrationTest.kt similarity index 94% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/websocket/WebSocketIntegrationTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/websocket/OldSchemaWebSocketIntegrationTest.kt index 6200e083..0ac98e34 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/websocket/WebSocketIntegrationTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/websocket/OldSchemaWebSocketIntegrationTest.kt @@ -19,6 +19,7 @@ import io.modelcontextprotocol.kotlin.sdk.client.mcpWebSocketTransport import io.modelcontextprotocol.kotlin.sdk.server.Server import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions import io.modelcontextprotocol.kotlin.sdk.server.mcpWebSocket +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequestParams import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.test.runTest import kotlinx.coroutines.withContext @@ -30,7 +31,7 @@ import io.ktor.client.plugins.websocket.WebSockets as ClientWebSocket import io.ktor.server.cio.CIO as ServerCIO import io.ktor.server.websocket.WebSockets as ServerWebSockets -class WebSocketIntegrationTest { +class OldSchemaWebSocketIntegrationTest { @Test fun `client should be able to connect to websocket server 2`() = runTest(timeout = 5.seconds) { @@ -154,11 +155,11 @@ class WebSocketIntegrationTest { ), ) { request -> GetPromptResult( - "Prompt for ${request.name}", + description = "Prompt for ${request.params.name}", messages = listOf( PromptMessage( role = Role.user, - content = TextContent("Prompt for client ${request.arguments?.get("client")}"), + content = TextContent("Prompt for client ${request.params.arguments?.get("client")}"), ), ), ) @@ -180,8 +181,10 @@ class WebSocketIntegrationTest { private suspend fun getPrompt(client: Client, clientName: String): String { val response = client.getPrompt( GetPromptRequest( - "prompt", - arguments = mapOf("client" to clientName), + GetPromptRequestParams( + "prompt", + arguments = mapOf("client" to clientName), + ), ), ) diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/AbstractSseIntegrationTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/OldSchemaAbstractSseIntegrationTest.kt similarity index 95% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/AbstractSseIntegrationTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/OldSchemaAbstractSseIntegrationTest.kt index 26289250..a0b3e192 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/AbstractSseIntegrationTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/OldSchemaAbstractSseIntegrationTest.kt @@ -23,7 +23,7 @@ import io.ktor.client.engine.cio.CIO as ClientCIO import io.ktor.server.cio.CIO as ServerCIO import io.ktor.server.sse.SSE as ServerSSE -open class AbstractSseIntegrationTest { +open class OldSchemaAbstractSseIntegrationTest { suspend fun EmbeddedServer<*, *>.actualPort() = engine.resolvedConnectors().single().port @@ -70,11 +70,11 @@ open class AbstractSseIntegrationTest { ), ) { request -> GetPromptResult( - "Prompt for ${request.name}", + description = "Prompt for ${request.params.name}", messages = listOf( PromptMessage( role = Role.user, - content = TextContent("Prompt for client ${request.arguments?.get("client")}"), + content = TextContent("Prompt for client ${request.params.arguments?.get("client")}"), ), ), ) diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/SseIntegrationTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/OldSchemaSseIntegrationTest.kt similarity index 93% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/SseIntegrationTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/OldSchemaSseIntegrationTest.kt index 55e833b3..a5cb133a 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/SseIntegrationTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/sse/OldSchemaSseIntegrationTest.kt @@ -5,6 +5,7 @@ import io.ktor.server.engine.EmbeddedServer import io.modelcontextprotocol.kotlin.sdk.GetPromptRequest import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client +import io.modelcontextprotocol.kotlin.sdk.types.GetPromptRequestParams import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.test.runTest import kotlinx.coroutines.withContext @@ -12,7 +13,7 @@ import kotlin.test.Test import kotlin.test.assertTrue import kotlin.time.Duration.Companion.seconds -class SseIntegrationTest : AbstractSseIntegrationTest() { +class OldSchemaSseIntegrationTest : OldSchemaAbstractSseIntegrationTest() { @Test fun `client should be able to connect to sse server`() = runTest(timeout = 5.seconds) { @@ -100,8 +101,10 @@ class SseIntegrationTest : AbstractSseIntegrationTest() { private suspend fun getPrompt(client: Client, clientName: String): String { val response = client.getPrompt( GetPromptRequest( - "prompt", - arguments = mapOf("client" to clientName), + GetPromptRequestParams( + "prompt", + arguments = mapOf("client" to clientName), + ), ), ) diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/AbstractKotlinClientTsServerTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/OldSchemaAbstractKotlinClientTsServerTest.kt similarity index 95% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/AbstractKotlinClientTsServerTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/OldSchemaAbstractKotlinClientTsServerTest.kt index 51179982..5d0406cb 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/AbstractKotlinClientTsServerTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/OldSchemaAbstractKotlinClientTsServerTest.kt @@ -1,6 +1,5 @@ package io.modelcontextprotocol.kotlin.sdk.integration.typescript -import io.modelcontextprotocol.kotlin.sdk.CallToolResult import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client import kotlinx.coroutines.Dispatchers @@ -12,7 +11,7 @@ import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -abstract class AbstractKotlinClientTsServerTest : TsTestBase() { +abstract class OldSchemaAbstractKotlinClientTsServerTest : TsTestBase() { protected abstract suspend fun useClient(block: suspend (Client) -> T): T @Test @@ -50,7 +49,7 @@ abstract class AbstractKotlinClientTsServerTest : TsTestBase() { val arguments = mapOf("name" to testName) val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present in the result") assertEquals("Hello, $testName!", textContent.text) diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerTestSse.kt index 95a80f0b..51fd2bf8 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerTestSse.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerTestSse.kt @@ -1,14 +1,14 @@ package io.modelcontextprotocol.kotlin.sdk.integration.typescript.sse import io.modelcontextprotocol.kotlin.sdk.client.Client -import io.modelcontextprotocol.kotlin.sdk.integration.typescript.AbstractKotlinClientTsServerTest +import io.modelcontextprotocol.kotlin.sdk.integration.typescript.OldSchemaAbstractKotlinClientTsServerTest import io.modelcontextprotocol.kotlin.sdk.integration.typescript.TransportKind import kotlinx.coroutines.withTimeout import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach import kotlin.time.Duration.Companion.seconds -class KotlinClientTsServerTestSse : AbstractKotlinClientTsServerTest() { +class KotlinClientTsServerTestSse : OldSchemaAbstractKotlinClientTsServerTest() { override val transportKind = TransportKind.SSE diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerEdgeCasesTestSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/OldSchemaKotlinClientTsServerEdgeCasesTestSse.kt similarity index 92% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerEdgeCasesTestSse.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/OldSchemaKotlinClientTsServerEdgeCasesTestSse.kt index de275666..44ff5a47 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinClientTsServerEdgeCasesTestSse.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/OldSchemaKotlinClientTsServerEdgeCasesTestSse.kt @@ -1,6 +1,5 @@ package io.modelcontextprotocol.kotlin.sdk.integration.typescript.sse -import io.modelcontextprotocol.kotlin.sdk.CallToolResult import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client import io.modelcontextprotocol.kotlin.sdk.integration.typescript.TransportKind @@ -23,7 +22,7 @@ import kotlin.test.assertNotNull import kotlin.test.assertTrue import kotlin.time.Duration.Companion.seconds -class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { +class OldSchemaKotlinClientTsServerEdgeCasesTestSse : TsTestBase() { override val transportKind = TransportKind.SSE @@ -76,7 +75,7 @@ class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { val result = client.callTool(nonExistentToolName, arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertTrue(callResult.isError ?: false, "isError should be true for non-existent tool") val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent @@ -100,7 +99,7 @@ class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present in the result") @@ -122,7 +121,7 @@ class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present in the result") @@ -148,7 +147,7 @@ class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null for client $i") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present for client $i") @@ -181,7 +180,7 @@ class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { val result = client.callTool("greet", invalidArguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertTrue(callResult.isError ?: false, "isError should be true for invalid arguments") val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent @@ -206,7 +205,7 @@ class KotlinClientTsServerEdgeCasesTestSse : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null for call $i") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present for call $i") diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinServerForTsClientSse.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/OldSchemaKotlinServerForTsClientSse.kt similarity index 96% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinServerForTsClientSse.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/OldSchemaKotlinServerForTsClientSse.kt index c51454df..5101bd89 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinServerForTsClientSse.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/OldSchemaKotlinServerForTsClientSse.kt @@ -39,6 +39,7 @@ import io.modelcontextprotocol.kotlin.sdk.server.Server import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport import io.modelcontextprotocol.kotlin.sdk.shared.McpJson +import io.modelcontextprotocol.kotlin.sdk.types.RPCError import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.channels.Channel @@ -224,7 +225,7 @@ class KotlinServerForTsClient { required = listOf("name"), ), ) { request -> - val name = (request.arguments["name"] as? JsonPrimitive)?.content ?: "World" + val name = (request.params.arguments?.get("name") as? JsonPrimitive)?.content ?: "World" CallToolResult( content = listOf(TextContent("Hello, $name!")), structuredContent = buildJsonObject { @@ -249,7 +250,7 @@ class KotlinServerForTsClient { required = listOf("name"), ), ) { request -> - val name = (request.arguments["name"] as? JsonPrimitive)?.content ?: "World" + val name = (request.params.arguments?.get("name") as? JsonPrimitive)?.content ?: "World" CallToolResult( content = listOf(TextContent("Multiple greetings sent to $name!")), @@ -272,12 +273,12 @@ class KotlinServerForTsClient { ), ) { request -> GetPromptResult( - "Greeting for ${request.name}", + description = "Greeting for ${request.params.name}", messages = listOf( PromptMessage( role = Role.user, content = TextContent( - "Please greet ${request.arguments?.get("name") ?: "someone"} in a friendly manner.", + "Please greet ${request.params.arguments?.get("name") ?: "someone"} in a friendly manner.", ), ), ), @@ -292,7 +293,7 @@ class KotlinServerForTsClient { ) { request -> ReadResourceResult( contents = listOf( - TextResourceContents("Hello, world!", request.uri, "text/plain"), + TextResourceContents("Hello, world!", request.params.uri, "text/plain"), ), ) } @@ -366,9 +367,9 @@ class HttpServerTransport(private val sessionId: String) : AbstractTransport() { logger.warn { "Timeout waiting for response to request ID: $id" } call.respondText( McpJson.encodeToString( - JSONRPCResponse( + JSONRPCError( id = message.id, - error = JSONRPCError( + error = RPCError( code = ErrorCode.Defined.RequestTimeout, message = "Request timed out", ), @@ -383,9 +384,9 @@ class HttpServerTransport(private val sessionId: String) : AbstractTransport() { if (!call.response.isCommitted) { call.respondText( McpJson.encodeToString( - JSONRPCResponse( + JSONRPCError( id = message.id, - error = JSONRPCError( + error = RPCError( code = ErrorCode.Defined.ConnectionClosed, message = "Request cancelled", ), @@ -403,9 +404,9 @@ class HttpServerTransport(private val sessionId: String) : AbstractTransport() { logger.error(e) { "Error handling request" } if (!call.response.isCommitted) { try { - val errorResponse = JSONRPCResponse( + val errorResponse = JSONRPCError( id = RequestId.NumberId(0), - error = JSONRPCError( + error = RPCError( code = ErrorCode.Defined.InternalError, message = "Internal server error: ${e.message}", ), diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/KotlinClientTsServerEdgeCasesTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/OldSchemaKotlinClientTsServerEdgeCasesTestStdio.kt similarity index 91% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/KotlinClientTsServerEdgeCasesTestStdio.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/OldSchemaKotlinClientTsServerEdgeCasesTestStdio.kt index b6e385f9..0ed86763 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/KotlinClientTsServerEdgeCasesTestStdio.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/OldSchemaKotlinClientTsServerEdgeCasesTestStdio.kt @@ -1,6 +1,5 @@ package io.modelcontextprotocol.kotlin.sdk.integration.typescript.stdio -import io.modelcontextprotocol.kotlin.sdk.CallToolResult import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client import io.modelcontextprotocol.kotlin.sdk.integration.typescript.TransportKind @@ -19,7 +18,7 @@ import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { +class OldSchemaKotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { override val transportKind = TransportKind.STDIO @@ -33,7 +32,7 @@ class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { val result = client.callTool(nonExistentToolName, arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertTrue(callResult.isError ?: false, "isError should be true for non-existent tool") val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent @@ -57,7 +56,7 @@ class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present in the result") @@ -79,7 +78,7 @@ class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present in the result") @@ -105,7 +104,7 @@ class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null for client $i") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present for client $i") @@ -138,7 +137,7 @@ class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { val result = client.callTool("greet", invalidArguments) assertNotNull(result, "Tool call result should not be null") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult assertTrue(callResult.isError ?: false, "isError should be true for invalid arguments") val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent @@ -163,7 +162,7 @@ class KotlinClientTsServerEdgeCasesTestStdio : TsTestBase() { val result = client.callTool("greet", arguments) assertNotNull(result, "Tool call result should not be null for call $i") - val callResult = result as CallToolResult + val callResult = result as io.modelcontextprotocol.kotlin.sdk.types.CallToolResult val textContent = callResult.content.firstOrNull { it is TextContent } as? TextContent assertNotNull(textContent, "Text content should be present for call $i") diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/KotlinClientTsServerTestStdio.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/OldSchemaKotlinClientTsServerTestStdio.kt similarity index 84% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/KotlinClientTsServerTestStdio.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/OldSchemaKotlinClientTsServerTestStdio.kt index 82737249..e87a5c88 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/KotlinClientTsServerTestStdio.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/stdio/OldSchemaKotlinClientTsServerTestStdio.kt @@ -1,10 +1,10 @@ package io.modelcontextprotocol.kotlin.sdk.integration.typescript.stdio import io.modelcontextprotocol.kotlin.sdk.client.Client -import io.modelcontextprotocol.kotlin.sdk.integration.typescript.AbstractKotlinClientTsServerTest +import io.modelcontextprotocol.kotlin.sdk.integration.typescript.OldSchemaAbstractKotlinClientTsServerTest import io.modelcontextprotocol.kotlin.sdk.integration.typescript.TransportKind -class KotlinClientTsServerTestStdio : AbstractKotlinClientTsServerTest() { +class OldSchemaKotlinClientTsServerTestStdio : OldSchemaAbstractKotlinClientTsServerTest() { override val transportKind = TransportKind.STDIO diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/AbstractServerFeaturesTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaAbstractServerFeaturesTest.kt similarity index 88% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/AbstractServerFeaturesTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaAbstractServerFeaturesTest.kt index 3feea029..d74c0b07 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/AbstractServerFeaturesTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaAbstractServerFeaturesTest.kt @@ -1,19 +1,18 @@ package io.modelcontextprotocol.kotlin.sdk.server import io.modelcontextprotocol.kotlin.sdk.Implementation -import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.client.Client import io.modelcontextprotocol.kotlin.sdk.shared.InMemoryTransport import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import org.junit.jupiter.api.BeforeEach -abstract class AbstractServerFeaturesTest { +abstract class OldSchemaAbstractServerFeaturesTest { protected lateinit var server: Server protected lateinit var client: Client - abstract fun getServerCapabilities(): ServerCapabilities + abstract fun getServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities protected open fun getServerInstructionsProvider(): (() -> String)? = null diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerPromptsTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerPromptsTest.kt similarity index 87% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerPromptsTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerPromptsTest.kt index ffaff6b4..fe0826b9 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerPromptsTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerPromptsTest.kt @@ -4,7 +4,6 @@ import io.modelcontextprotocol.kotlin.sdk.GetPromptResult import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.Method import io.modelcontextprotocol.kotlin.sdk.Prompt -import io.modelcontextprotocol.kotlin.sdk.PromptListChangedNotification import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.test.runTest @@ -14,11 +13,12 @@ import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertTrue -class ServerPromptsTest : AbstractServerFeaturesTest() { +class OldSchemaServerPromptsTest : OldSchemaAbstractServerFeaturesTest() { - override fun getServerCapabilities(): ServerCapabilities = ServerCapabilities( - prompts = ServerCapabilities.Prompts(false), - ) + override fun getServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + ServerCapabilities( + prompts = ServerCapabilities.Prompts(false), + ) @Test fun `removePrompt should remove a prompt`() = runTest { @@ -67,7 +67,9 @@ class ServerPromptsTest : AbstractServerFeaturesTest() { fun `removePrompt should return false when prompt does not exist`() = runTest { // Track notifications var promptListChangedNotificationReceived = false - client.setNotificationHandler(Method.Defined.NotificationsPromptsListChanged) { + client.setNotificationHandler( + Method.Defined.NotificationsPromptsListChanged, + ) { promptListChangedNotificationReceived = true CompletableDeferred(Unit) } diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerResourcesTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerResourcesTest.kt similarity index 91% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerResourcesTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerResourcesTest.kt index ac9e979e..90cb9a02 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerResourcesTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerResourcesTest.kt @@ -3,7 +3,6 @@ package io.modelcontextprotocol.kotlin.sdk.server import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.Method import io.modelcontextprotocol.kotlin.sdk.ReadResourceResult -import io.modelcontextprotocol.kotlin.sdk.ResourceListChangedNotification import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.TextResourceContents import kotlinx.coroutines.CompletableDeferred @@ -14,11 +13,12 @@ import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertTrue -class ServerResourcesTest : AbstractServerFeaturesTest() { +class OldSchemaServerResourcesTest : OldSchemaAbstractServerFeaturesTest() { - override fun getServerCapabilities(): ServerCapabilities = ServerCapabilities( - resources = ServerCapabilities.Resources(null, null), - ) + override fun getServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + ServerCapabilities( + resources = ServerCapabilities.Resources(null, null), + ) @Test fun `removeResource should remove a resource and send notification`() = runTest { @@ -97,7 +97,7 @@ class ServerResourcesTest : AbstractServerFeaturesTest() { fun `removeResource should return false when resource does not exist`() = runTest { // Track notifications var resourceListChangedNotificationReceived = false - client.setNotificationHandler( + client.setNotificationHandler( Method.Defined.NotificationsResourcesListChanged, ) { resourceListChangedNotificationReceived = true diff --git a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerToolsTest.kt b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerToolsTest.kt similarity index 86% rename from kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerToolsTest.kt rename to kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerToolsTest.kt index 2ccb4607..b956e2c3 100644 --- a/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/ServerToolsTest.kt +++ b/kotlin-sdk-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/server/OldSchemaServerToolsTest.kt @@ -6,7 +6,6 @@ import io.modelcontextprotocol.kotlin.sdk.Method import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.Tool -import io.modelcontextprotocol.kotlin.sdk.ToolListChangedNotification import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test @@ -15,11 +14,12 @@ import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertTrue -class ServerToolsTest : AbstractServerFeaturesTest() { +class OldSchemaServerToolsTest : OldSchemaAbstractServerFeaturesTest() { - override fun getServerCapabilities(): ServerCapabilities = ServerCapabilities( - tools = ServerCapabilities.Tools(null), - ) + override fun getServerCapabilities(): io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities = + ServerCapabilities( + tools = ServerCapabilities.Tools(null), + ) @Test fun `removeTool should remove a tool`() = runTest { @@ -39,7 +39,9 @@ class ServerToolsTest : AbstractServerFeaturesTest() { fun `removeTool should return false when tool does not exist`() = runTest { // Track notifications var toolListChangedNotificationReceived = false - client.setNotificationHandler(Method.Defined.NotificationsToolsListChanged) { + client.setNotificationHandler( + Method.Defined.NotificationsToolsListChanged, + ) { toolListChangedNotificationReceived = true CompletableDeferred(Unit) } diff --git a/samples/kotlin-mcp-client/src/main/kotlin/io/modelcontextprotocol/sample/client/MCPClient.kt b/samples/kotlin-mcp-client/src/main/kotlin/io/modelcontextprotocol/sample/client/MCPClient.kt index d9d482df..0a0817e7 100644 --- a/samples/kotlin-mcp-client/src/main/kotlin/io/modelcontextprotocol/sample/client/MCPClient.kt +++ b/samples/kotlin-mcp-client/src/main/kotlin/io/modelcontextprotocol/sample/client/MCPClient.kt @@ -9,6 +9,7 @@ import com.anthropic.models.messages.Tool import com.anthropic.models.messages.ToolUnion import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.databind.ObjectMapper +import io.modelcontextprotocol.kotlin.sdk.EmptyJsonObject import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client @@ -76,7 +77,7 @@ class MCPClient : AutoCloseable { .inputSchema( Tool.InputSchema.builder() .type(JsonValue.from(tool.inputSchema.type)) - .properties(tool.inputSchema.properties.toJsonValue()) + .properties(tool.inputSchema.properties?.toJsonValue() ?: EmptyJsonObject.toJsonValue()) .putAdditionalProperty("required", JsonValue.from(tool.inputSchema.required)) .build(), ) @@ -135,9 +136,11 @@ class MCPClient : AutoCloseable { """ "type": "tool_result", "tool_name": $toolName, - "result": ${result?.content?.joinToString("\n") { - (it as TextContent).text ?: "" - }} + "result": ${ + result?.content?.joinToString("\n") { + (it as TextContent).text ?: "" + } + } """.trimIndent(), ) .build(), diff --git a/samples/kotlin-mcp-server/src/main/kotlin/io/modelcontextprotocol/sample/server/server.kt b/samples/kotlin-mcp-server/src/main/kotlin/io/modelcontextprotocol/sample/server/server.kt index fc82c5d5..088b7caf 100644 --- a/samples/kotlin-mcp-server/src/main/kotlin/io/modelcontextprotocol/sample/server/server.kt +++ b/samples/kotlin-mcp-server/src/main/kotlin/io/modelcontextprotocol/sample/server/server.kt @@ -64,7 +64,7 @@ fun configureServer(): Server { ), ) { request -> GetPromptResult( - "Description for ${request.name}", + description = "Description for ${request.name}", messages = listOf( PromptMessage( role = Role.user, diff --git a/samples/kotlin-mcp-server/src/test/kotlin/SseServerIntegrationTest.kt b/samples/kotlin-mcp-server/src/test/kotlin/SseServerIntegrationTest.kt index 8399173a..09780ab0 100644 --- a/samples/kotlin-mcp-server/src/test/kotlin/SseServerIntegrationTest.kt +++ b/samples/kotlin-mcp-server/src/test/kotlin/SseServerIntegrationTest.kt @@ -2,7 +2,6 @@ import io.modelcontextprotocol.kotlin.sdk.EmptyJsonObject import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client import kotlinx.coroutines.runBlocking -import org.junit.jupiter.api.TestInstance import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertIs @@ -39,6 +38,6 @@ class SseServerIntegrationTest { assertIs(content, "Tool result should be a text content") assertEquals(expected = "Hello, world!", actual = content.text) - assertEquals(expected = "text", actual = content.type) + assertEquals(expected = "text", actual = "${content.type}".lowercase()) } } diff --git a/samples/weather-stdio-server/src/test/kotlin/io/modelcontextprotocol/sample/client/ClientStdio.kt b/samples/weather-stdio-server/src/test/kotlin/io/modelcontextprotocol/sample/client/ClientStdio.kt index c08d1566..480bc1c5 100644 --- a/samples/weather-stdio-server/src/test/kotlin/io/modelcontextprotocol/sample/client/ClientStdio.kt +++ b/samples/weather-stdio-server/src/test/kotlin/io/modelcontextprotocol/sample/client/ClientStdio.kt @@ -1,6 +1,5 @@ package io.modelcontextprotocol.sample.client -import io.modelcontextprotocol.kotlin.sdk.CallToolRequest import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.TextContent import io.modelcontextprotocol.kotlin.sdk.client.Client @@ -9,9 +8,6 @@ import kotlinx.coroutines.runBlocking import kotlinx.io.asSink import kotlinx.io.asSource import kotlinx.io.buffered -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.JsonPrimitive -import kotlinx.serialization.json.buildJsonObject fun main(): Unit = runBlocking { val process = ProcessBuilder("java", "-jar", "./build/libs/weather-stdio-server-0.1.0-all.jar") @@ -33,12 +29,10 @@ fun main(): Unit = runBlocking { println("Available Tools = $toolsList") val weatherForecastResult = client.callTool( - CallToolRequest( - name = "get_forecast", - arguments = buildJsonObject { - put("latitude", JsonPrimitive(38.5816)) - put("longitude", JsonPrimitive(-121.4944)) - }, + name = "get_forecast", + arguments = mapOf( + "latitude" to 38.5816, + "longitude" to -121.4944, ), )?.content?.map { if (it is TextContent) it.text else it.toString() } @@ -46,10 +40,8 @@ fun main(): Unit = runBlocking { val alertResult = client.callTool( - CallToolRequest( - name = "get_alerts", - arguments = JsonObject(mapOf("state" to JsonPrimitive("TX"))), - ), + name = "get_alert", + arguments = mapOf("state" to "TX"), )?.content?.map { if (it is TextContent) it.text else it.toString() } println("Alert Response = $alertResult")