@@ -8,13 +8,14 @@ namespace ModelContextProtocol.Protocol;
88/// </summary>
99/// <remarks>
1010/// <para>
11- /// Any errors that originate from the tool should be reported inside the result
12- /// object, with <see cref="IsError"/> set to true, rather than as a <see cref="JsonRpcError"/>.
11+ /// Tool execution errors (including input validation errors, API failures, and business logic errors)
12+ /// should be reported inside the result object with <see cref="IsError"/> set to <see langword="true"/>,
13+ /// rather than as a <see cref="JsonRpcError"/>. This allows language models to see error details
14+ /// and potentially self-correct in subsequent requests.
1315/// </para>
1416/// <para>
15- /// However, any errors in finding the tool, an error indicating that the
16- /// server does not support tool calls, or any other exceptional conditions,
17- /// should be reported as an MCP error response.
17+ /// Protocol-level errors (such as unknown tool names, malformed requests that fail schema validation,
18+ /// or server errors) should be reported as MCP protocol error responses using <see cref="McpErrorCode"/>.
1819/// </para>
1920/// <para>
2021/// See the <see href="https://github.com/modelcontextprotocol/specification/blob/main/schema/">schema</see> for details.
@@ -38,10 +39,18 @@ public sealed class CallToolResult : Result
3839 /// Gets or sets an indication of whether the tool call was unsuccessful.
3940 /// </summary>
4041 /// <remarks>
42+ /// <para>
4143 /// When set to <see langword="true"/>, it signifies that the tool execution failed.
42- /// Tool errors are reported with this property set to <see langword="true"/> and details in the <see cref="Content"/>
43- /// property, rather than as protocol-level errors. This allows LLMs to see that an error occurred
44- /// and potentially self-correct in subsequent requests.
44+ /// Tool execution errors (including input validation errors, API failures, and business logic errors)
45+ /// are reported with this property set to <see langword="true"/> and details in the <see cref="Content"/>
46+ /// property, rather than as protocol-level errors.
47+ /// </para>
48+ /// <para>
49+ /// This allows language models to receive detailed error feedback and potentially self-correct
50+ /// in subsequent requests. For example, if a date parameter is in the wrong format or out of range,
51+ /// the error message in <see cref="Content"/> can explain the issue, enabling the model to retry
52+ /// with corrected parameters.
53+ /// </para>
4554 /// </remarks>
4655 [ JsonPropertyName ( "isError" ) ]
4756 public bool ? IsError { get ; set ; }
0 commit comments