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 an indication of whether the tool call was unsuccessful.
///
///
///
/// When set to , it signifies that the tool execution failed.
/// 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 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; }
}