diff --git a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt index c4d0f351..7db24b40 100644 --- a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt +++ b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt @@ -1054,6 +1054,8 @@ public data class Tool( val properties: JsonObject = EmptyJsonObject, val required: List? = null, ) { + @OptIn(ExperimentalSerializationApi::class) + @EncodeDefault val type: String = "object" } } diff --git a/src/commonTest/kotlin/ToolSerializationTest.kt b/src/commonTest/kotlin/ToolSerializationTest.kt index 5fd4a518..4f6ff9dd 100644 --- a/src/commonTest/kotlin/ToolSerializationTest.kt +++ b/src/commonTest/kotlin/ToolSerializationTest.kt @@ -3,6 +3,7 @@ package io.modelcontextprotocol.kotlin.sdk import io.kotest.assertions.json.shouldEqualJson import io.modelcontextprotocol.kotlin.sdk.shared.McpJson import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.buildJsonObject import kotlin.test.Test @@ -54,4 +55,11 @@ class ToolSerializationTest { assertEquals(expected = getWeatherTool, actual = tool) } + @Test + fun `should always serialize default value`() { + val json = Json(from = McpJson) { + encodeDefaults = false + } + json.encodeToString(getWeatherTool) shouldEqualJson getWeatherToolJson + } }