Skip to content

Commit df0c102

Browse files
authored
Require Tool inputSchema during deserialization (#1600)
1 parent a04c3e4 commit df0c102

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

  • src/ModelContextProtocol.Core/Protocol
  • tests/ModelContextProtocol.Tests/Protocol

src/ModelContextProtocol.Core/Protocol/Tool.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public sealed class Tool : IBaseMetadata
6464
/// </para>
6565
/// </remarks>
6666
[JsonPropertyName("inputSchema")]
67+
[JsonRequired]
6768
public JsonElement InputSchema
6869
{
6970
get => field;

tests/ModelContextProtocol.Tests/Protocol/ToolTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ public static void ToolInputSchema_HasValidDefaultSchema()
105105
Assert.Equal("object", typeElement.GetString());
106106
}
107107

108+
[Fact]
109+
public static void ToolInputSchema_DeserializationRejectsMissingInputSchema()
110+
{
111+
const string json = """{"name":"test"}""";
112+
113+
Assert.Throws<JsonException>(() => JsonSerializer.Deserialize<Tool>(json, McpJsonUtilities.DefaultOptions));
114+
}
115+
108116
[Theory]
109117
[InlineData("null")]
110118
[InlineData("false")]

0 commit comments

Comments
 (0)