using System.Text.Json.Nodes; using System.Text.Json.Serialization; namespace ModelContextProtocol.Protocol; /// /// Represents the result of a request from a client to invoke a tool provided by the server. /// /// /// /// Tool execution errors (including input validation errors, API failures, and business logic errors) /// should be reported inside the result object with set to , /// rather than as a . This allows language models to see error details /// and potentially self-correct in subsequent requests. /// /// /// Protocol-level errors (such as unknown tool names, malformed requests that fail schema validation, /// or server errors) should be reported as MCP protocol error responses using . /// /// /// See the schema for details. /// /// public sealed class CallToolResult : Result { /// /// Gets or sets the response content from the tool call. /// [JsonPropertyName("content")] public IList Content { get; set; } = []; /// /// Gets or sets an optional JSON object representing the structured result of the tool call. /// [JsonPropertyName("structuredContent")] public JsonNode? StructuredContent { get; set; } /// /// Gets or sets a value that indicates whether the tool call was unsuccessful. /// /// /// to signify that the tool execution failed; if it was successful. /// /// /// /// Tool execution errors (including input validation errors, API failures, and business logic errors) /// are reported with this property set to and details in the /// property, rather than as protocol-level errors. /// /// /// This design allows language models to receive detailed error feedback and potentially self-correct /// in subsequent requests. For example, if a date parameter is in the wrong format or out of range, /// the error message in can explain the issue, enabling the model to retry /// with corrected parameters. /// /// [JsonPropertyName("isError")] public bool? IsError { get; set; } }