using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; namespace ModelContextProtocol.Protocol; /// /// Represents the tasks capability configuration for servers and clients. /// /// /// /// The tasks capability enables requestors (clients or servers) to augment their requests with /// tasks for long-running operations. Tasks are durable state machines that carry information /// about the underlying execution state of requests. /// /// /// During initialization, both parties exchange their tasks capabilities to establish which /// operations support task-based execution. Requestors should only augment requests with a /// task if the corresponding capability has been declared by the receiver. /// /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class McpTasksCapability { /// /// Gets or sets whether this party supports the tasks/list operation. /// /// /// When present, indicates support for listing all tasks. /// [JsonPropertyName("list")] public ListMcpTasksCapability? List { get; set; } /// /// Gets or sets whether this party supports the tasks/cancel operation. /// /// /// When present, indicates support for cancelling tasks. /// [JsonPropertyName("cancel")] public CancelMcpTasksCapability? Cancel { get; set; } /// /// Gets or sets which request types support task augmentation. /// /// /// /// The set of capabilities in this property is exhaustive. If a request type is not present, /// it does not support task augmentation. /// /// /// For servers, this typically includes tools/call. For clients, this typically includes /// sampling/createMessage and elicitation/create. /// /// [JsonPropertyName("requests")] public RequestMcpTasksCapability? Requests { get; set; } } /// /// Represents task support for tool-specific requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class RequestMcpTasksCapability { /// /// Gets or sets task support for tool-related requests. /// [JsonPropertyName("tools")] public ToolsMcpTasksCapability? Tools { get; set; } /// /// Gets or sets task support for sampling-related requests. /// [JsonPropertyName("sampling")] public SamplingMcpTasksCapability? Sampling { get; set; } /// /// Gets or sets task support for elicitation-related requests. /// [JsonPropertyName("elicitation")] public ElicitationMcpTasksCapability? Elicitation { get; set; } } /// /// Represents task support for tool-related requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class ToolsMcpTasksCapability { /// /// Gets or sets whether tools/call requests support task augmentation. /// /// /// When present, indicates that the server supports task-augmented tools/call requests. /// [JsonPropertyName("call")] public CallToolMcpTasksCapability? Call { get; set; } } /// /// Represents task support for sampling-related requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class SamplingMcpTasksCapability { /// /// Gets or sets whether sampling/createMessage requests support task augmentation. /// /// /// When present, indicates that the client supports task-augmented sampling/createMessage requests. /// [JsonPropertyName("createMessage")] public CreateMessageMcpTasksCapability? CreateMessage { get; set; } } /// /// Represents task support for elicitation-related requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class ElicitationMcpTasksCapability { /// /// Gets or sets whether elicitation/create requests support task augmentation. /// /// /// When present, indicates that the client supports task-augmented elicitation/create requests. /// [JsonPropertyName("create")] public CreateElicitationMcpTasksCapability? Create { get; set; } } /// /// Represents the capability for listing tasks. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class ListMcpTasksCapability; /// /// Represents the capability for cancelling tasks. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class CancelMcpTasksCapability; /// /// Represents the capability for task-augmented tools/call requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class CallToolMcpTasksCapability; /// /// Represents the capability for task-augmented sampling/createMessage requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class CreateMessageMcpTasksCapability; /// /// Represents the capability for task-augmented elicitation/create requests. /// [Experimental(Experimentals.Tasks_DiagnosticId, UrlFormat = Experimentals.Tasks_Url)] public sealed class CreateElicitationMcpTasksCapability;