diff --git a/src/ModelContextProtocol.Core/Protocol/Tool.cs b/src/ModelContextProtocol.Core/Protocol/Tool.cs index 8abbfd88c..ce17d9f7d 100644 --- a/src/ModelContextProtocol.Core/Protocol/Tool.cs +++ b/src/ModelContextProtocol.Core/Protocol/Tool.cs @@ -64,6 +64,7 @@ public sealed class Tool : IBaseMetadata /// /// [JsonPropertyName("inputSchema")] + [JsonRequired] public JsonElement InputSchema { get => field; diff --git a/tests/ModelContextProtocol.Tests/Protocol/ToolTests.cs b/tests/ModelContextProtocol.Tests/Protocol/ToolTests.cs index 5b2160571..d8335c055 100644 --- a/tests/ModelContextProtocol.Tests/Protocol/ToolTests.cs +++ b/tests/ModelContextProtocol.Tests/Protocol/ToolTests.cs @@ -105,6 +105,14 @@ public static void ToolInputSchema_HasValidDefaultSchema() Assert.Equal("object", typeElement.GetString()); } + [Fact] + public static void ToolInputSchema_DeserializationRejectsMissingInputSchema() + { + const string json = """{"name":"test"}"""; + + Assert.Throws(() => JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions)); + } + [Theory] [InlineData("null")] [InlineData("false")]