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;