namespace ModelContextProtocol.Protocol;
///
/// Provides constants with the names of common request methods used in the MCP protocol.
///
public static class RequestMethods
{
///
/// The name of the request method sent from the client to request a list of the server's tools.
///
public const string ToolsList = "tools/list";
///
/// The name of the request method sent from the client to request that the server invoke a specific tool.
///
public const string ToolsCall = "tools/call";
///
/// The name of the request method sent from the client to request a list of the server's prompts.
///
public const string PromptsList = "prompts/list";
///
/// The name of the request method sent by the client to get a prompt provided by the server.
///
public const string PromptsGet = "prompts/get";
///
/// The name of the request method sent from the client to request a list of the server's resources.
///
public const string ResourcesList = "resources/list";
///
/// The name of the request method sent from the client to read a specific server resource.
///
public const string ResourcesRead = "resources/read";
///
/// The name of the request method sent from the client to request a list of the server's resource templates.
///
public const string ResourcesTemplatesList = "resources/templates/list";
///
/// The name of the request method sent from the client to request
/// notifications from the server whenever a particular resource changes.
///
public const string ResourcesSubscribe = "resources/subscribe";
///
/// The name of the request method sent from the client to request unsubscribing from
/// notifications from the server.
///
public const string ResourcesUnsubscribe = "resources/unsubscribe";
///
/// The name of the request method sent from the server to request a list of the client's roots.
///
public const string RootsList = "roots/list";
///
/// The name of the request method sent by either endpoint to check that the connected endpoint is still alive.
///
public const string Ping = "ping";
///
/// The name of the request method sent from the client to the server to adjust the logging level.
///
///
/// This request allows clients to control which log messages they receive from the server
/// by setting a minimum severity threshold. After processing this request, the server will
/// send log messages with severity at or above the specified level to the client as
/// notifications.
///
public const string LoggingSetLevel = "logging/setLevel";
///
/// The name of the request method sent from the client to the server to ask for completion suggestions.
///
///
/// This is used to provide autocompletion-like functionality for arguments in a resource reference or a prompt template.
/// The client provides a reference (resource or prompt), argument name, and partial value, and the server
/// responds with matching completion options.
///
public const string CompletionComplete = "completion/complete";
///
/// The name of the request method sent from the server to sample a large language model (LLM) via the client.
///
///
/// This request allows servers to utilize an LLM available on the client side to generate text or image responses
/// based on provided messages. It is part of the sampling capability in the Model Context Protocol and enables servers to access
/// client-side AI models without needing direct API access to those models.
///
public const string SamplingCreateMessage = "sampling/createMessage";
///
/// The name of the request method sent from the server to elicit additional information from the user via the client.
///
///
///
/// This request is used when the server needs more information from the client to proceed with a task or interaction.
/// Servers can request structured data from users, with optional JSON schemas to validate responses (form mode),
/// or request URL mode (out-of-band) user interaction via navigation for sensitive operations.
///
///
/// Two modes are supported:
///
/// - form: In-band elicitation where structured data is collected and returned to the server
/// - url: URL mode (out-of-band) elicitation for sensitive operations like OAuth or payments
///
///
///
public const string ElicitationCreate = "elicitation/create";
///
/// The name of the request method sent from the client to the server when it first connects, asking it to initialize.
///
///
/// The initialize request is the first request sent by the client to the server. It provides client information
/// and capabilities to the server during connection establishment. The server responds with its own capabilities
/// and information, establishing the protocol version and available features for the session.
///
public const string Initialize = "initialize";
///
/// The name of the request method to retrieve task status.
///
///
/// Requestors poll for task completion by sending tasks/get requests. They should respect
/// the pollInterval provided in responses when determining polling frequency.
///
public const string TasksGet = "tasks/get";
///
/// The name of the request method to retrieve the result of a completed task.
///
///
/// This request blocks until the task reaches a terminal status (completed, failed, or cancelled).
/// The result structure matches the original request type (e.g., CallToolResult for tools/call).
///
public const string TasksResult = "tasks/result";
///
/// The name of the request method to retrieve a list of tasks with pagination support.
///
public const string TasksList = "tasks/list";
///
/// The name of the request method to explicitly cancel a task.
///
public const string TasksCancel = "tasks/cancel";
}