{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JsonRpcMessage",
"description": "Represents any JSON-RPC message that can be sent or received.\n\nThis enum covers all possible message types in the JSON-RPC protocol:\nindividual requests/responses, notifications, and errors.\nIt serves as the top-level message container for MCP communication.",
"anyOf": [
{
"description": "A single request expecting a response",
"allOf": [
{
"$ref": "#/definitions/JsonRpcRequest"
}
]
},
{
"description": "A response to a previous request",
"allOf": [
{
"$ref": "#/definitions/JsonRpcResponse"
}
]
},
{
"description": "A one-way notification (no response expected)",
"allOf": [
{
"$ref": "#/definitions/JsonRpcNotification"
}
]
},
{
"description": "An error response",
"allOf": [
{
"$ref": "#/definitions/JsonRpcError"
}
]
}
],
"definitions": {
"Annotations": {
"description": "Optional annotations for the client. The client can use annotations to inform how objects are\nused or displayed.",
"type": "object",
"properties": {
"audience": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Role"
}
},
"lastModified": {
"type": [
"string",
"null"
]
},
"priority": {
"type": [
"number",
"null"
],
"format": "float"
}
}
},
"ArrayTypeConst": {
"type": "string",
"format": "const",
"const": "array"
},
"AudioContent": {
"description": "Audio content with base64-encoded data (spec `AudioContent`).",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this content block.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional annotations describing how the client should use this content.",
"anyOf": [
{
"$ref": "#/definitions/Annotations"
},
{
"type": "null"
}
]
},
"data": {
"description": "The base64-encoded audio data.",
"type": "string"
},
"mimeType": {
"description": "The MIME type of the audio (e.g. `audio/wav`).",
"type": "string"
}
},
"required": [
"data",
"mimeType"
]
},
"BooleanSchema": {
"description": "Schema definition for boolean properties.",
"type": "object",
"properties": {
"default": {
"description": "Default value",
"type": [
"boolean",
"null"
]
},
"description": {
"description": "Human-readable description",
"type": [
"string",
"null"
]
},
"title": {
"description": "Optional title for the schema",
"type": [
"string",
"null"
]
},
"type": {
"description": "Type discriminator",
"allOf": [
{
"$ref": "#/definitions/BooleanTypeConst"
}
]
}
},
"required": [
"type"
]
},
"BooleanTypeConst": {
"type": "string",
"format": "const",
"const": "boolean"
},
"CacheScope": {
"description": "Scope describing who may cache cacheable list/read results (SEP-2549).\n\nDefaults to [`CacheScope::Public`] when absent from the wire.",
"oneOf": [
{
"description": "Any client or intermediary may cache and serve the response to any user.",
"type": "string",
"const": "public"
},
{
"description": "Only the requesting user's client may cache the response.",
"type": "string",
"const": "private"
}
]
},
"CallToolResult": {
"description": "The result of a tool call operation.\n\nContains the content returned by the tool execution and an optional\nflag indicating whether the operation resulted in an error.",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this result",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"content": {
"description": "The content returned by the tool (text, images, etc.)",
"type": "array",
"default": [],
"items": {
"$ref": "#/definitions/ContentBlock"
}
},
"isError": {
"description": "Whether this result represents an error condition",
"type": [
"boolean",
"null"
]
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
},
"structuredContent": {
"description": "An optional JSON object that represents the structured result of the tool call"
}
}
},
"CancelledNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/cancelled"
},
"CancelledNotificationParam": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/NotificationMetaObject"
},
{
"type": "null"
}
]
},
"reason": {
"type": [
"string",
"null"
]
},
"requestId": {
"anyOf": [
{
"$ref": "#/definitions/NumberOrString"
},
{
"type": "null"
}
]
}
}
},
"ClientCapabilities": {
"title": "Builder",
"description": "```rust\n# use rmcp::model::ClientCapabilities;\nlet cap = ClientCapabilities::builder()\n .enable_experimental()\n .build();\n```",
"type": "object",
"properties": {
"elicitation": {
"description": "Capability to handle elicitation requests from servers for interactive user input",
"anyOf": [
{
"$ref": "#/definitions/ElicitationCapability"
},
{
"type": "null"
}
]
},
"experimental": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"extensions": {
"description": "Optional MCP extensions that the client supports (SEP-1724).\nKeys are extension identifiers (e.g., `\"io.modelcontextprotocol/ui\"`),\nvalues are per-extension settings objects. An empty object indicates\nsupport with no settings.",
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"roots": {
"description": "Capability for filesystem roots (deprecated by SEP-2577).",
"anyOf": [
{
"$ref": "#/definitions/RootsCapabilities"
},
{
"type": "null"
}
]
},
"sampling": {
"description": "Capability for LLM sampling requests (SEP-1577, deprecated by SEP-2577).",
"anyOf": [
{
"$ref": "#/definitions/SamplingCapability"
},
{
"type": "null"
}
]
}
}
},
"CompleteResult": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"completion": {
"$ref": "#/definitions/CompletionInfo"
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
}
},
"required": [
"completion"
]
},
"CompletionInfo": {
"type": "object",
"properties": {
"hasMore": {
"type": [
"boolean",
"null"
]
},
"total": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0
},
"values": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"values"
]
},
"ConstTitle": {
"description": "Schema definition for enum properties.\n\nRepresent single entry for titled item",
"type": "object",
"properties": {
"const": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"const",
"title"
]
},
"ContentBlock": {
"description": "Unified content block union (spec `ContentBlock`).\n\n`text | image | audio | resource_link | resource`",
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "text"
}
},
"allOf": [
{
"$ref": "#/definitions/TextContent"
}
],
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "image"
}
},
"allOf": [
{
"$ref": "#/definitions/ImageContent"
}
],
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "audio"
}
},
"allOf": [
{
"$ref": "#/definitions/AudioContent"
}
],
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "resource"
}
},
"allOf": [
{
"$ref": "#/definitions/EmbeddedResource"
}
],
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "resource_link"
}
},
"allOf": [
{
"$ref": "#/definitions/Resource"
}
],
"required": [
"type"
]
}
]
},
"ContextInclusion": {
"description": "Specifies how much context should be included in sampling requests.\n\nThis allows clients to control what additional context information\nshould be provided to the LLM when processing sampling requests.",
"oneOf": [
{
"description": "Include context from all connected MCP servers",
"type": "string",
"const": "allServers"
},
{
"description": "Include no additional context",
"type": "string",
"const": "none"
},
{
"description": "Include context only from the requesting server",
"type": "string",
"const": "thisServer"
}
]
},
"CreateMessageRequestMethod": {
"type": "string",
"format": "const",
"const": "sampling/createMessage"
},
"CreateMessageRequestParams": {
"description": "Parameters for creating a message through LLM sampling.\n\nThis structure contains all the necessary information for a client to\ngenerate an LLM response, including conversation history, model preferences,\nand generation parameters.\n\nThis implements `TaskAugmentedRequestParamsMeta` as sampling requests can be\nlong-running and may benefit from task-based execution.",
"type": "object",
"properties": {
"_meta": {
"description": "Protocol-level metadata for this request (SEP-1319)",
"anyOf": [
{
"$ref": "#/definitions/RequestMetaObject"
},
{
"type": "null"
}
]
},
"includeContext": {
"description": "How much context to include from MCP servers",
"anyOf": [
{
"$ref": "#/definitions/ContextInclusion"
},
{
"type": "null"
}
]
},
"maxTokens": {
"description": "Maximum number of tokens to generate",
"type": "integer",
"format": "uint32",
"minimum": 0
},
"messages": {
"description": "The conversation history and current messages",
"type": "array",
"items": {
"$ref": "#/definitions/SamplingMessage"
}
},
"metadata": {
"description": "Additional metadata for the request"
},
"modelPreferences": {
"description": "Preferences for model selection and behavior",
"anyOf": [
{
"$ref": "#/definitions/ModelPreferences"
},
{
"type": "null"
}
]
},
"stopSequences": {
"description": "Sequences that should stop generation",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"systemPrompt": {
"description": "System prompt to guide the model's behavior",
"type": [
"string",
"null"
]
},
"temperature": {
"description": "Temperature for controlling randomness (0.0 to 1.0)",
"type": [
"number",
"null"
],
"format": "float"
},
"toolChoice": {
"description": "Tool selection behavior (SEP-1577)",
"anyOf": [
{
"$ref": "#/definitions/ToolChoice"
},
{
"type": "null"
}
]
},
"tools": {
"description": "Tools available for the model to call (SEP-1577)",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Tool"
}
}
},
"deprecated": true,
"required": [
"messages",
"maxTokens"
]
},
"CreateTaskResult": {
"description": "Result returned in lieu of a standard result to indicate the request will\nbe processed asynchronously (spec `CreateTaskResult`, `resultType: \"task\"`).\n\nThe embedded task is the seed state for the task; the client uses\n`task.task_id` for all subsequent `tasks/get`, `tasks/update`, and\n`tasks/cancel` calls.",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"createdAt": {
"description": "ISO 8601 timestamp when the task was created.",
"type": "string"
},
"lastUpdatedAt": {
"description": "ISO 8601 timestamp when the task was last updated.",
"type": "string"
},
"pollIntervalMs": {
"description": "Suggested polling interval in integer milliseconds. Clients SHOULD honor\nthis value to avoid overwhelming the server. This value MAY change over\nthe lifetime of a task.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"resultType": {
"description": "Always `\"task\"`.",
"allOf": [
{
"$ref": "#/definitions/ResultType"
}
]
},
"status": {
"description": "Current task status.",
"allOf": [
{
"$ref": "#/definitions/TaskStatus"
}
]
},
"statusMessage": {
"description": "Optional message describing the current task state.\nThis MAY be exposed to the end-user or model.",
"type": [
"string",
"null"
]
},
"taskId": {
"description": "Stable identifier for this task, generated by the server.",
"type": "string"
},
"ttlMs": {
"description": "Time-to-live duration from creation in integer milliseconds; `None`\n(serialized as `null`) means unlimited. The server may discard the task\nafter the TTL elapses. This value MAY change over the lifetime of a task.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"resultType",
"taskId",
"status",
"createdAt",
"lastUpdatedAt"
]
},
"CustomNotification": {
"description": "A catch-all notification either side can use to send custom messages to its peer.\n\nThis preserves the raw `method` name and `params` payload so handlers can\ndeserialize them into domain-specific types.",
"type": "object",
"properties": {
"method": {
"type": "string"
},
"params": true
},
"required": [
"method"
]
},
"CustomRequest": {
"description": "A catch-all request either side can use to send custom messages to its peer.\n\nThis preserves the raw `method` name and `params` payload so handlers can\ndeserialize them into domain-specific types.",
"type": "object",
"properties": {
"method": {
"type": "string"
},
"params": true
},
"required": [
"method"
]
},
"CustomResult": {
"description": "A catch-all response either side can use for custom requests."
},
"DiscoverResult": {
"description": "The server's response to a [`DiscoverRequest`].",
"type": "object",
"properties": {
"_meta": {
"description": "Protocol-level response metadata.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"cacheScope": {
"description": "Whether the cached result may be shared across authorization contexts.",
"allOf": [
{
"$ref": "#/definitions/CacheScope"
}
]
},
"capabilities": {
"description": "Capabilities provided by this server.",
"allOf": [
{
"$ref": "#/definitions/ServerCapabilities"
}
]
},
"instructions": {
"description": "Optional guidance for using the server.",
"type": [
"string",
"null"
]
},
"resultType": {
"description": "Identifies how the result should be parsed.",
"allOf": [
{
"$ref": "#/definitions/ResultType"
}
]
},
"supportedVersions": {
"description": "Protocol versions implemented by this server.",
"type": "array",
"items": {
"$ref": "#/definitions/ProtocolVersion"
}
},
"ttlMs": {
"description": "How long clients may consider this response fresh, in milliseconds.",
"type": "integer",
"format": "uint64",
"minimum": 0
}
},
"required": [
"resultType",
"supportedVersions",
"capabilities",
"ttlMs",
"cacheScope"
]
},
"ElicitRequestParams": {
"description": "Parameters for creating an elicitation request to gather user input.\n\nThis structure contains everything needed to request interactive input from a user:\n- A human-readable message explaining what information is needed\n- A type-safe schema defining the expected structure of the response\n\n# Example\n1. Form-based elicitation request\n```rust\nuse rmcp::model::*;\n\nlet params = ElicitRequestParams::FormElicitationParams {\n meta: None,\n message: \"Please provide your email\".to_string(),\n requested_schema: ElicitationSchema::builder()\n .required_email(\"email\")\n .build()\n .unwrap(),\n};\n```\n2. URL-based elicitation request\n```rust\nuse rmcp::model::*;\nlet params = ElicitRequestParams::UrlElicitationParams {\n meta: None,\n message: \"Please provide your feedback at the following URL\".to_string(),\n url: \"https://example.com/feedback\".to_string(),\n elicitation_id: \"unique-id-123\".to_string(),\n};\n```",
"anyOf": [
{
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/RequestMetaObject"
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
},
"mode": {
"type": "string",
"const": "form"
},
"requestedSchema": {
"$ref": "#/definitions/ElicitationSchema"
}
},
"required": [
"mode",
"message",
"requestedSchema"
]
},
{
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/RequestMetaObject"
},
{
"type": "null"
}
]
},
"elicitationId": {
"type": "string"
},
"message": {
"type": "string"
},
"mode": {
"type": "string",
"const": "url"
},
"url": {
"type": "string"
}
},
"required": [
"mode",
"message",
"url",
"elicitationId"
]
},
{
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/RequestMetaObject"
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
},
"requestedSchema": {
"$ref": "#/definitions/ElicitationSchema"
}
},
"required": [
"message",
"requestedSchema"
]
}
]
},
"ElicitResult": {
"description": "The result returned by a client in response to an elicitation request.\n\nContains the user's decision (accept/decline/cancel) and optionally their input data\nif they chose to accept the request.",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this result.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"action": {
"description": "The user's decision on how to handle the elicitation request",
"allOf": [
{
"$ref": "#/definitions/ElicitationAction"
}
]
},
"content": {
"description": "The actual data provided by the user, if they accepted the request.\nMust conform to the JSON schema specified in the original request.\nOnly present when action is Accept."
}
},
"required": [
"action"
]
},
"ElicitationAction": {
"description": "Represents the possible actions a user can take in response to an elicitation request.\n\nWhen a server requests user input through elicitation, the user can:\n- Accept: Provide the requested information and continue\n- Decline: Refuse to provide the information but continue the operation\n- Cancel: Stop the entire operation",
"oneOf": [
{
"description": "User accepts the request and provides the requested information",
"type": "string",
"const": "accept"
},
{
"description": "User declines to provide the information but allows the operation to continue",
"type": "string",
"const": "decline"
},
{
"description": "User cancels the entire operation",
"type": "string",
"const": "cancel"
}
]
},
"ElicitationCapability": {
"description": "Elicitation allows servers to request interactive input from users during tool execution.\nThis capability indicates that a client can handle elicitation requests and present\nappropriate UI to users for collecting the requested information.",
"type": "object",
"properties": {
"form": {
"description": "Whether client supports form-based elicitation.",
"anyOf": [
{
"$ref": "#/definitions/FormElicitationCapability"
},
{
"type": "null"
}
]
},
"url": {
"description": "Whether client supports URL-based elicitation.",
"anyOf": [
{
"$ref": "#/definitions/UrlElicitationCapability"
},
{
"type": "null"
}
]
}
}
},
"ElicitationCreateRequestMethod": {
"type": "string",
"format": "const",
"const": "elicitation/create"
},
"ElicitationSchema": {
"description": "Type-safe elicitation schema for requesting structured user input.\n\nThis enforces the MCP 2025-06-18 specification that elicitation schemas\nmust be objects with primitive-typed properties.\n\n# Example\n\n```rust\nuse rmcp::model::*;\n\nlet schema = ElicitationSchema::builder()\n .required_email(\"email\")\n .required_integer(\"age\", 0, 150)\n .optional_bool(\"newsletter\", false)\n .build();\n```",
"type": "object",
"properties": {
"description": {
"description": "Optional description of what this schema represents",
"type": [
"string",
"null"
]
},
"properties": {
"description": "Property definitions (must be primitive types)",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/PrimitiveSchemaDefinition"
}
},
"required": {
"description": "List of required property names",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"title": {
"description": "Optional title for the schema",
"type": [
"string",
"null"
]
},
"type": {
"description": "Always \"object\" for elicitation schemas",
"allOf": [
{
"$ref": "#/definitions/ObjectTypeConst"
}
]
}
},
"required": [
"type",
"properties"
]
},
"EmbeddedResource": {
"description": "Embedded resource content (spec `EmbeddedResource`).",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this content block.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional annotations describing how the client should use this content.",
"anyOf": [
{
"$ref": "#/definitions/Annotations"
},
{
"type": "null"
}
]
},
"resource": {
"description": "The embedded resource contents (text or blob).",
"allOf": [
{
"$ref": "#/definitions/ResourceContents"
}
]
}
},
"required": [
"resource"
]
},
"EmptyObject": {
"description": "This is commonly used for representing empty objects in MCP messages.\n\nwithout returning any specific data.",
"type": "object",
"additionalProperties": false
},
"EnumSchema": {
"description": "Compliant with MCP 2025-06-18 specification for elicitation schemas.\nEnums must have string type for values and can optionally include human-readable names.\n\n# Example\n\n```rust\nuse rmcp::model::*;\n\nlet enum_schema = EnumSchema::builder(vec![\"US\".to_string(), \"UK\".to_string()])\n .multiselect()\n .min_items(1u64).expect(\"Min items should be correct value\")\n .max_items(4u64).expect(\"Max items should be correct value\")\n .description(\"Country code\")\n .build();\n```",
"anyOf": [
{
"$ref": "#/definitions/SingleSelectEnumSchema"
},
{
"$ref": "#/definitions/MultiSelectEnumSchema"
},
{
"$ref": "#/definitions/LegacyEnumSchema"
}
]
},
"ErrorCode": {
"description": "Standard JSON-RPC error codes used throughout the MCP protocol.\n\nThese codes follow the JSON-RPC 2.0 specification and provide\nstandardized error reporting across all MCP implementations.",
"type": "integer",
"format": "int32"
},
"ErrorData": {
"description": "Error information for JSON-RPC error responses.\n\nThis structure follows the JSON-RPC 2.0 specification for error reporting,\nproviding a standardized way to communicate errors between clients and servers.",
"type": "object",
"properties": {
"code": {
"description": "The error type that occurred (using standard JSON-RPC error codes)",
"allOf": [
{
"$ref": "#/definitions/ErrorCode"
}
]
},
"data": {
"description": "Additional information about the error. The value of this member is defined by the\nsender (e.g. detailed error information, nested errors etc.)."
},
"message": {
"description": "A short description of the error. The message SHOULD be limited to a concise single sentence.",
"type": "string"
}
},
"required": [
"code",
"message"
]
},
"FormElicitationCapability": {
"description": "Capability for handling elicitation requests from servers.\nElicitation allows servers to request interactive input from users during tool execution.\nThis capability indicates that a client can handle elicitation requests and present\nappropriate UI to users for collecting the requested information.\n\nCapability for form mode elicitation.",
"type": "object",
"properties": {
"schemaValidation": {
"description": "Whether the client supports JSON Schema validation for elicitation responses.\nWhen true, the client will validate user input against the requested_schema\nbefore sending the response back to the server.",
"type": [
"boolean",
"null"
]
}
}
},
"GetPromptResult": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"description": {
"type": [
"string",
"null"
]
},
"messages": {
"type": "array",
"items": {
"$ref": "#/definitions/PromptMessage"
}
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
}
},
"required": [
"messages"
]
},
"GetTaskResult": {
"description": "Response to a `tasks/get` request (spec `GetTaskResult = Result & DetailedTask`).\n\n`resultType` is `\"complete\"` — this is the standard result shape for\n`tasks/get`, not a task handle.",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"createdAt": {
"description": "ISO 8601 timestamp when the task was created.",
"type": "string"
},
"error": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"inputRequests": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/definitions/InputRequest"
}
},
"lastUpdatedAt": {
"description": "ISO 8601 timestamp when the task was last updated.",
"type": "string"
},
"pollIntervalMs": {
"description": "Suggested polling interval in integer milliseconds. Clients SHOULD honor\nthis value to avoid overwhelming the server. This value MAY change over\nthe lifetime of a task.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"result": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"resultType": {
"description": "Result type discriminator. `tasks/get` responses are standard results:\n`\"complete\"` (SEP-2322). Absent values deserialize as `\"complete\"`.",
"allOf": [
{
"$ref": "#/definitions/ResultType"
}
],
"default": "complete"
},
"status": {
"description": "Current task status.",
"allOf": [
{
"$ref": "#/definitions/TaskStatus"
}
]
},
"statusMessage": {
"description": "Optional message describing the current task state.\nThis MAY be exposed to the end-user or model.",
"type": [
"string",
"null"
]
},
"taskId": {
"description": "Stable identifier for this task, generated by the server.",
"type": "string"
},
"ttlMs": {
"description": "Time-to-live duration from creation in integer milliseconds; `None`\n(serialized as `null`) means unlimited. The server may discard the task\nafter the TTL elapses. This value MAY change over the lifetime of a task.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"taskId",
"status",
"createdAt",
"lastUpdatedAt"
]
},
"Icon": {
"description": "A URL pointing to an icon resource or a base64-encoded data URI.\n\nClients that support rendering icons MUST support at least the following MIME types:\n- image/png - PNG images (safe, universal compatibility)\n- image/jpeg (and image/jpg) - JPEG images (safe, universal compatibility)\n\nClients that support rendering icons SHOULD also support:\n- image/svg+xml - SVG images (scalable but requires security precautions)\n- image/webp - WebP images (modern, efficient format)",
"type": "object",
"properties": {
"mimeType": {
"description": "Optional override if the server's MIME type is missing or generic",
"type": [
"string",
"null"
]
},
"sizes": {
"description": "Size specification, each string should be in WxH format (e.g., `\\\"48x48\\\"`, `\\\"96x96\\\"`) or `\\\"any\\\"` for scalable formats like SVG",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"src": {
"description": "A standard URI pointing to an icon resource",
"type": "string"
},
"theme": {
"description": "Optional specifier for the theme this icon is designed for\nIf not provided, the client should assume the icon can be used with any theme.",
"anyOf": [
{
"$ref": "#/definitions/IconTheme"
},
{
"type": "null"
}
]
}
},
"required": [
"src"
]
},
"IconTheme": {
"description": "Icon themes supported by the MCP specification",
"oneOf": [
{
"description": "Indicates the icon is designed to be used with a light background",
"type": "string",
"const": "light"
},
{
"description": "Indicates the icon is designed to be used with a dark background",
"type": "string",
"const": "dark"
}
]
},
"ImageContent": {
"description": "Image content with base64-encoded data (spec `ImageContent`).",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this content block.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional annotations describing how the client should use this content.",
"anyOf": [
{
"$ref": "#/definitions/Annotations"
},
{
"type": "null"
}
]
},
"data": {
"description": "The base64-encoded image data.",
"type": "string"
},
"mimeType": {
"description": "The MIME type of the image (e.g. `image/png`).",
"type": "string"
}
},
"required": [
"data",
"mimeType"
]
},
"Implementation": {
"type": "object",
"properties": {
"description": {
"type": [
"string",
"null"
]
},
"icons": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"name": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"version": {
"type": "string"
},
"websiteUrl": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"version"
]
},
"InitializeResult": {
"description": "The server's response to an initialization request.\n\nContains the server's protocol version, capabilities, and implementation\ninformation, along with optional instructions for the client.",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"capabilities": {
"description": "The capabilities this server provides (tools, resources, prompts, etc.)",
"allOf": [
{
"$ref": "#/definitions/ServerCapabilities"
}
]
},
"instructions": {
"description": "Optional human-readable instructions about using this server",
"type": [
"string",
"null"
]
},
"protocolVersion": {
"description": "The MCP protocol version this server supports",
"allOf": [
{
"$ref": "#/definitions/ProtocolVersion"
}
]
},
"serverInfo": {
"description": "Information about the server implementation",
"allOf": [
{
"$ref": "#/definitions/Implementation"
}
]
}
},
"required": [
"protocolVersion",
"capabilities",
"serverInfo"
]
},
"InputRequest": {
"description": "A server-initiated request that can appear inside [`InputRequests`].\n\nPer the MCP spec, only `CreateMessageRequest` (sampling),\n`ElicitRequest` (elicitation), and `ListRootsRequest` (roots)\nare allowed. This is modeled as an untagged enum rather than a\n`ServerRequest` alias to prevent `PingRequest` or `CustomRequest` from\nbeing included.",
"anyOf": [
{
"description": "A `sampling/createMessage` request.",
"allOf": [
{
"$ref": "#/definitions/Request"
}
]
},
{
"description": "An `elicitation/create` request.",
"allOf": [
{
"$ref": "#/definitions/Request2"
}
]
},
{
"description": "A `roots/list` request.",
"allOf": [
{
"$ref": "#/definitions/RequestNoParam2"
}
]
}
]
},
"InputRequiredResult": {
"description": "A result indicating that additional input is needed before the request\ncan be completed.\n\nAt least one of [`input_requests`](Self::input_requests) or\n[`request_state`](Self::request_state) MUST be present.\n\nServers MAY send this in response to `tools/call`, `prompts/get`, or\n`resources/read`. Servers MUST NOT send this for any other request.\n\n# Examples\n\n```\nuse rmcp::model::InputRequiredResult;\n\nlet result = InputRequiredResult::from_request_state(\"opaque-server-state\");\nassert!(result.input_requests.is_none());\nassert_eq!(result.request_state.as_deref(), Some(\"opaque-server-state\"));\n```",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"inputRequests": {
"description": "Server-initiated requests that the client must fulfill before retrying.",
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/definitions/InputRequest"
}
},
"requestState": {
"description": "Opaque request state to be echoed back by the client on retry.\nClients MUST NOT inspect, parse, modify, or make any assumptions\nabout the contents.",
"type": [
"string",
"null"
]
},
"resultType": {
"description": "Always `\"input_required\"` for this result type.",
"allOf": [
{
"$ref": "#/definitions/ResultType"
}
]
}
},
"required": [
"resultType"
]
},
"IntegerSchema": {
"description": "Schema definition for integer properties.\n\nCompliant with MCP 2025-06-18 specification for elicitation schemas.\nSupports only the fields allowed by the MCP spec.",
"type": "object",
"properties": {
"default": {
"description": "Default value",
"type": [
"integer",
"null"
],
"format": "int64"
},
"description": {
"description": "Human-readable description",
"type": [
"string",
"null"
]
},
"maximum": {
"description": "Maximum value (inclusive)",
"type": [
"integer",
"null"
],
"format": "int64"
},
"minimum": {
"description": "Minimum value (inclusive)",
"type": [
"integer",
"null"
],
"format": "int64"
},
"title": {
"description": "Optional title for the schema",
"type": [
"string",
"null"
]
},
"type": {
"description": "Type discriminator",
"allOf": [
{
"$ref": "#/definitions/IntegerTypeConst"
}
]
}
},
"required": [
"type"
]
},
"IntegerTypeConst": {
"type": "string",
"format": "const",
"const": "integer"
},
"JsonRpcError": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/ErrorData"
},
"id": {
"anyOf": [
{
"$ref": "#/definitions/NumberOrString"
},
{
"type": "null"
}
]
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
}
},
"required": [
"jsonrpc",
"error"
]
},
"JsonRpcNotification": {
"type": "object",
"properties": {
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
}
},
"anyOf": [
{
"$ref": "#/definitions/Notification"
},
{
"$ref": "#/definitions/Notification2"
},
{
"$ref": "#/definitions/Notification3"
},
{
"$ref": "#/definitions/Notification4"
},
{
"$ref": "#/definitions/NotificationNoParam"
},
{
"$ref": "#/definitions/NotificationNoParam2"
},
{
"$ref": "#/definitions/NotificationNoParam3"
},
{
"$ref": "#/definitions/Notification5"
},
{
"$ref": "#/definitions/Notification6"
},
{
"$ref": "#/definitions/CustomNotification"
}
],
"required": [
"jsonrpc"
]
},
"JsonRpcRequest": {
"type": "object",
"properties": {
"id": {
"$ref": "#/definitions/NumberOrString"
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
}
},
"anyOf": [
{
"$ref": "#/definitions/RequestNoParam"
},
{
"$ref": "#/definitions/Request"
},
{
"$ref": "#/definitions/RequestNoParam2"
},
{
"$ref": "#/definitions/Request2"
},
{
"$ref": "#/definitions/CustomRequest"
}
],
"required": [
"jsonrpc",
"id"
]
},
"JsonRpcResponse": {
"type": "object",
"properties": {
"id": {
"$ref": "#/definitions/NumberOrString"
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
},
"result": {
"$ref": "#/definitions/ServerResult"
}
},
"required": [
"jsonrpc",
"id",
"result"
]
},
"JsonRpcVersion2_0": {
"type": "string",
"format": "const",
"const": "2.0"
},
"LegacyEnumSchema": {
"description": "Legacy enum schema, keep for backward compatibility",
"type": "object",
"properties": {
"default": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"enum": {
"type": "array",
"items": {
"type": "string"
}
},
"enumNames": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"$ref": "#/definitions/StringTypeConst"
}
},
"required": [
"type",
"enum"
]
},
"ListPromptsResult": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"cacheScope": {
"description": "Scope describing who may cache this result (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"anyOf": [
{
"$ref": "#/definitions/CacheScope"
},
{
"type": "null"
}
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"prompts": {
"type": "array",
"items": {
"$ref": "#/definitions/Prompt"
}
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
},
"ttlMs": {
"description": "Time, in milliseconds, that this result may be treated as fresh (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"prompts"
]
},
"ListResourceTemplatesResult": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"cacheScope": {
"description": "Scope describing who may cache this result (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"anyOf": [
{
"$ref": "#/definitions/CacheScope"
},
{
"type": "null"
}
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"resourceTemplates": {
"type": "array",
"items": {
"$ref": "#/definitions/ResourceTemplate"
}
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
},
"ttlMs": {
"description": "Time, in milliseconds, that this result may be treated as fresh (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"resourceTemplates"
]
},
"ListResourcesResult": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"cacheScope": {
"description": "Scope describing who may cache this result (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"anyOf": [
{
"$ref": "#/definitions/CacheScope"
},
{
"type": "null"
}
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"resources": {
"type": "array",
"items": {
"$ref": "#/definitions/Resource"
}
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
},
"ttlMs": {
"description": "Time, in milliseconds, that this result may be treated as fresh (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"resources"
]
},
"ListRootsRequestMethod": {
"type": "string",
"format": "const",
"const": "roots/list"
},
"ListToolsResult": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"cacheScope": {
"description": "Scope describing who may cache this result (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"anyOf": [
{
"$ref": "#/definitions/CacheScope"
},
{
"type": "null"
}
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
},
"tools": {
"type": "array",
"items": {
"$ref": "#/definitions/Tool"
}
},
"ttlMs": {
"description": "Time, in milliseconds, that this result may be treated as fresh (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"tools"
]
},
"LoggingLevel": {
"description": "Logging levels supported by the MCP protocol",
"type": "string",
"deprecated": true,
"enum": [
"debug",
"info",
"notice",
"warning",
"error",
"critical",
"alert",
"emergency"
]
},
"LoggingMessageNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/message"
},
"LoggingMessageNotificationParam": {
"description": "Parameters for a logging message notification",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/NotificationMetaObject"
},
{
"type": "null"
}
]
},
"data": {
"description": "The actual log data"
},
"level": {
"description": "The severity level of this log message",
"allOf": [
{
"$ref": "#/definitions/LoggingLevel"
}
]
},
"logger": {
"description": "Optional logger name that generated this message",
"type": [
"string",
"null"
]
}
},
"deprecated": true,
"required": [
"level",
"data"
]
},
"MetaObject": {
"description": "See [MCP general fields](https://modelcontextprotocol.io/specification/2026-07-28/basic#general-fields) for notes on _meta usage.",
"type": "object",
"additionalProperties": true
},
"ModelHint": {
"description": "A hint suggesting a preferred model name or family.\n\nModel hints are advisory suggestions that help clients choose appropriate\nmodels. They can be specific model names or general families like \"claude\" or \"gpt\".",
"type": "object",
"properties": {
"name": {
"description": "The suggested model name or family identifier",
"type": [
"string",
"null"
]
}
},
"deprecated": true
},
"ModelPreferences": {
"description": "Preferences for model selection and behavior in sampling requests.\n\nThis allows servers to express their preferences for which model to use\nand how to balance different priorities when the client has multiple\nmodel options available.",
"type": "object",
"properties": {
"costPriority": {
"description": "Priority for cost optimization (0.0 to 1.0, higher = prefer cheaper models)",
"type": [
"number",
"null"
],
"format": "float"
},
"hints": {
"description": "Specific model names or families to prefer (e.g., \"claude\", \"gpt\")",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ModelHint"
}
},
"intelligencePriority": {
"description": "Priority for intelligence/capability (0.0 to 1.0, higher = prefer more capable models)",
"type": [
"number",
"null"
],
"format": "float"
},
"speedPriority": {
"description": "Priority for speed/latency (0.0 to 1.0, higher = prefer faster models)",
"type": [
"number",
"null"
],
"format": "float"
}
},
"deprecated": true
},
"MultiSelectEnumSchema": {
"description": "Multi-select enum options",
"anyOf": [
{
"$ref": "#/definitions/UntitledMultiSelectEnumSchema"
},
{
"$ref": "#/definitions/TitledMultiSelectEnumSchema"
}
]
},
"Notification": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/CancelledNotificationMethod"
},
"params": {
"$ref": "#/definitions/CancelledNotificationParam"
}
},
"required": [
"method",
"params"
]
},
"Notification2": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/ProgressNotificationMethod"
},
"params": {
"$ref": "#/definitions/ProgressNotificationParam"
}
},
"required": [
"method",
"params"
]
},
"Notification3": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/LoggingMessageNotificationMethod"
},
"params": {
"$ref": "#/definitions/LoggingMessageNotificationParam"
}
},
"required": [
"method",
"params"
]
},
"Notification4": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/ResourceUpdatedNotificationMethod"
},
"params": {
"$ref": "#/definitions/ResourceUpdatedNotificationParam"
}
},
"required": [
"method",
"params"
]
},
"Notification5": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/SubscriptionsAcknowledgedNotificationMethod"
},
"params": {
"$ref": "#/definitions/SubscriptionsAcknowledgedNotificationParams"
}
},
"required": [
"method",
"params"
]
},
"Notification6": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/TaskStatusNotificationMethod"
},
"params": {
"$ref": "#/definitions/TaskStatusNotificationParams"
}
},
"required": [
"method",
"params"
]
},
"NotificationMetaObject": {
"description": "Metadata reserved by MCP on notifications. Extension keys are also allowed.",
"type": "object",
"properties": {
"io.modelcontextprotocol/subscriptionId": {
"$ref": "#/definitions/NumberOrString"
}
},
"additionalProperties": true
},
"NotificationNoParam": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/ResourceListChangedNotificationMethod"
}
},
"required": [
"method"
]
},
"NotificationNoParam2": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/ToolListChangedNotificationMethod"
}
},
"required": [
"method"
]
},
"NotificationNoParam3": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/PromptListChangedNotificationMethod"
}
},
"required": [
"method"
]
},
"NumberOrString": {
"oneOf": [
{
"type": "number"
},
{
"type": "string"
}
]
},
"NumberSchema": {
"description": "Schema definition for number properties (floating-point).\n\nCompliant with MCP 2025-06-18 specification for elicitation schemas.\nSupports only the fields allowed by the MCP spec.",
"type": "object",
"properties": {
"default": {
"description": "Default value",
"type": [
"number",
"null"
],
"format": "double"
},
"description": {
"description": "Human-readable description",
"type": [
"string",
"null"
]
},
"maximum": {
"description": "Maximum value (inclusive)",
"type": [
"number",
"null"
],
"format": "double"
},
"minimum": {
"description": "Minimum value (inclusive)",
"type": [
"number",
"null"
],
"format": "double"
},
"title": {
"description": "Optional title for the schema",
"type": [
"string",
"null"
]
},
"type": {
"description": "Type discriminator",
"allOf": [
{
"$ref": "#/definitions/NumberTypeConst"
}
]
}
},
"required": [
"type"
]
},
"NumberTypeConst": {
"type": "string",
"format": "const",
"const": "number"
},
"ObjectTypeConst": {
"type": "string",
"format": "const",
"const": "object"
},
"PingRequestMethod": {
"type": "string",
"format": "const",
"const": "ping"
},
"PrimitiveSchemaDefinition": {
"description": "Primitive schema definition for elicitation properties.\n\nAccording to MCP 2025-06-18 specification, elicitation schemas must have\nproperties of primitive types only (string, number, integer, boolean, enum).\n\nNote: Put Enum as the first variant to avoid ambiguity during deserialization.\nThis is due to the fact that EnumSchema can contain StringSchema internally and serde\nuses first match wins strategy when deserializing untagged enums.",
"anyOf": [
{
"description": "Enum property (explicit enum schema)",
"allOf": [
{
"$ref": "#/definitions/EnumSchema"
}
]
},
{
"description": "String property (with optional enum constraint)",
"allOf": [
{
"$ref": "#/definitions/StringSchema"
}
]
},
{
"description": "Number property (with optional enum constraint)",
"allOf": [
{
"$ref": "#/definitions/NumberSchema"
}
]
},
{
"description": "Integer property (with optional enum constraint)",
"allOf": [
{
"$ref": "#/definitions/IntegerSchema"
}
]
},
{
"description": "Boolean property",
"allOf": [
{
"$ref": "#/definitions/BooleanSchema"
}
]
}
]
},
"ProgressNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/progress"
},
"ProgressNotificationParam": {
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/NotificationMetaObject"
},
{
"type": "null"
}
]
},
"message": {
"description": "An optional message describing the current progress.",
"type": [
"string",
"null"
]
},
"progress": {
"description": "The progress thus far. This should increase every time progress is made, even if the total is unknown.",
"type": "number",
"format": "double"
},
"progressToken": {
"$ref": "#/definitions/ProgressToken"
},
"total": {
"description": "Total number of items to process (or total progress required), if known",
"type": [
"number",
"null"
],
"format": "double"
}
},
"required": [
"progressToken",
"progress"
]
},
"ProgressToken": {
"description": "A token used to track the progress of long-running operations.\n\nProgress tokens allow clients and servers to associate progress notifications\nwith specific requests, enabling real-time updates on operation status.",
"allOf": [
{
"$ref": "#/definitions/NumberOrString"
}
]
},
"Prompt": {
"description": "A prompt or prompt template that the server offers (spec `Prompt`).",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"arguments": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/PromptArgument"
}
},
"description": {
"type": [
"string",
"null"
]
},
"icons": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"name": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
}
},
"required": [
"name"
]
},
"PromptArgument": {
"description": "Describes an argument that a prompt can accept (spec `PromptArgument`).",
"type": "object",
"properties": {
"description": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"required": {
"type": [
"boolean",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
}
},
"required": [
"name"
]
},
"PromptListChangedNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/prompts/list_changed"
},
"PromptMessage": {
"description": "A message returned as part of a prompt (spec `PromptMessage`).\n\nUses the unified `ContentBlock` for its content (text | image | audio | resource_link | resource).",
"type": "object",
"properties": {
"content": {
"$ref": "#/definitions/ContentBlock"
},
"role": {
"$ref": "#/definitions/Role"
}
},
"required": [
"role",
"content"
]
},
"PromptsCapability": {
"type": "object",
"properties": {
"listChanged": {
"type": [
"boolean",
"null"
]
}
}
},
"ProtocolVersion": {
"description": "Represents the MCP protocol version used for communication.\n\nThis ensures compatibility between clients and servers by specifying\nwhich version of the Model Context Protocol is being used.",
"type": "string"
},
"ReadResourceResult": {
"description": "Result containing the contents of a read resource",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"cacheScope": {
"description": "Scope describing who may cache this result (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"anyOf": [
{
"$ref": "#/definitions/CacheScope"
},
{
"type": "null"
}
]
},
"contents": {
"description": "The actual content of the resource",
"type": "array",
"items": {
"$ref": "#/definitions/ResourceContents"
}
},
"resultType": {
"description": "Result type discriminator (SEP-2322). Required by the [spec schema]\nfor servers implementing protocol version `2026-07-28`, but optional\nhere because this type also models results from older protocol\nversions, which do not carry the field: `None` means absent on the\nwire, and per the spec \"the client MUST treat the absent field as\n`\"complete\"`\". Constructors default to `Some(ResultType::COMPLETE)`;\nthe server handler clears the field when responding to peers that\nnegotiated an older version.\n\n[spec schema]: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/271ecc9accafdd9b83a3c869fa67c22953b2af80/schema/2026-07-28/schema.ts#L219-L235",
"anyOf": [
{
"$ref": "#/definitions/ResultType"
},
{
"type": "null"
}
]
},
"ttlMs": {
"description": "Time, in milliseconds, that this result may be treated as fresh (SEP-2549).\nRequired by spec version 2026-07-28, but optional here to maintain compatibility\nwith older spec versions.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"contents"
]
},
"Request": {
"description": "Represents a JSON-RPC request with method, parameters, and extensions.\n\nThis is the core structure for all MCP requests, containing:\n- `method`: The name of the method being called\n- `params`: The parameters for the method\n- `extensions`: Additional context data (similar to HTTP headers)",
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/CreateMessageRequestMethod"
},
"params": {
"$ref": "#/definitions/CreateMessageRequestParams"
}
},
"required": [
"method",
"params"
]
},
"Request2": {
"description": "Represents a JSON-RPC request with method, parameters, and extensions.\n\nThis is the core structure for all MCP requests, containing:\n- `method`: The name of the method being called\n- `params`: The parameters for the method\n- `extensions`: Additional context data (similar to HTTP headers)",
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/ElicitationCreateRequestMethod"
},
"params": {
"$ref": "#/definitions/ElicitRequestParams"
}
},
"required": [
"method",
"params"
]
},
"RequestMetaObject": {
"description": "Metadata reserved by MCP on requests. Extension keys are also allowed.",
"type": "object",
"properties": {
"io.modelcontextprotocol/clientCapabilities": {
"$ref": "#/definitions/ClientCapabilities"
},
"io.modelcontextprotocol/clientInfo": {
"$ref": "#/definitions/Implementation"
},
"io.modelcontextprotocol/logLevel": {
"$ref": "#/definitions/LoggingLevel"
},
"io.modelcontextprotocol/protocolVersion": {
"type": "string"
},
"progressToken": {
"$ref": "#/definitions/ProgressToken"
}
},
"additionalProperties": true
},
"RequestNoParam": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/PingRequestMethod"
}
},
"required": [
"method"
]
},
"RequestNoParam2": {
"type": "object",
"properties": {
"method": {
"$ref": "#/definitions/ListRootsRequestMethod"
}
},
"required": [
"method"
]
},
"Resource": {
"description": "A known resource that the server is capable of reading (spec `Resource`).\n\nAlso used as the inner type of `ContentBlock::ResourceLink` (spec `ResourceLink extends Resource`).",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this resource.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional annotations describing how the client should use this resource.",
"anyOf": [
{
"$ref": "#/definitions/Annotations"
},
{
"type": "null"
}
]
},
"description": {
"description": "Optional description of what this resource represents.",
"type": [
"string",
"null"
]
},
"icons": {
"description": "Optional set of icons the client may display for this resource.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"mimeType": {
"description": "The MIME type of this resource, if known.",
"type": [
"string",
"null"
]
},
"name": {
"description": "The programmatic name of the resource.",
"type": "string"
},
"size": {
"description": "The size of the raw resource content in bytes (before base64/tokenization), if known.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"title": {
"description": "Optional human-readable display title.",
"type": [
"string",
"null"
]
},
"uri": {
"description": "The URI of this resource (e.g. `file:///path/to/file`).",
"type": "string"
}
},
"required": [
"uri",
"name"
]
},
"ResourceContents": {
"description": "The contents of a specific resource or sub-resource.",
"anyOf": [
{
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"mimeType": {
"type": [
"string",
"null"
]
},
"text": {
"type": "string"
},
"uri": {
"type": "string"
}
},
"required": [
"uri",
"text"
]
},
{
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"blob": {
"type": "string"
},
"mimeType": {
"type": [
"string",
"null"
]
},
"uri": {
"type": "string"
}
},
"required": [
"uri",
"blob"
]
}
]
},
"ResourceListChangedNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/resources/list_changed"
},
"ResourceTemplate": {
"description": "A template description for resources available on the server (spec `ResourceTemplate`).",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this resource template.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional annotations describing how the client should use this template.",
"anyOf": [
{
"$ref": "#/definitions/Annotations"
},
{
"type": "null"
}
]
},
"description": {
"description": "Optional description of what this template is for.",
"type": [
"string",
"null"
]
},
"icons": {
"description": "Optional set of icons the client may display for this template.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"mimeType": {
"description": "The MIME type for resources matching this template, if uniform.",
"type": [
"string",
"null"
]
},
"name": {
"description": "The programmatic name of the resource template.",
"type": "string"
},
"title": {
"description": "Optional human-readable display title.",
"type": [
"string",
"null"
]
},
"uriTemplate": {
"description": "An RFC 6570 URI template for constructing resource URIs.",
"type": "string"
}
},
"required": [
"uriTemplate",
"name"
]
},
"ResourceUpdatedNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/resources/updated"
},
"ResourceUpdatedNotificationParam": {
"description": "Parameters for a resource update notification",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/NotificationMetaObject"
},
{
"type": "null"
}
]
},
"uri": {
"description": "The URI of the resource that was updated",
"type": "string"
}
},
"required": [
"uri"
]
},
"ResourcesCapability": {
"type": "object",
"properties": {
"listChanged": {
"type": [
"boolean",
"null"
]
},
"subscribe": {
"type": [
"boolean",
"null"
]
}
}
},
"ResultType": {
"description": "Indicates the type of a result object, allowing the client to\ndetermine how to parse the response.\n\nThe spec defines this as an open string (`\"complete\" | \"input_required\" | string`),\nso unknown values are preserved rather than rejected. Servers implementing this\nprotocol version MUST include `resultType` in every result. For backward\ncompatibility, clients MUST treat an absent field as `\"complete\"`.\n\nOrdinary results model the field as `Option<ResultType>`: `None` means the\nfield is absent on the wire. Constructors default to `Some(COMPLETE)`, and\nthe server handler strips the `\"complete\"` discriminator before responding\nto peers that negotiated a protocol version older than `2026-07-28`, so\nlegacy sessions keep their historical wire shape (see\n[`ServerResult::strip_result_type_for_legacy_peer`]).",
"type": "string"
},
"Role": {
"description": "Represents the role of a participant in a conversation or message exchange.\n\nUsed in sampling and chat contexts to distinguish between different\ntypes of message senders in the conversation flow.",
"oneOf": [
{
"description": "A human user or client making a request",
"type": "string",
"const": "user"
},
{
"description": "An AI assistant or server providing a response",
"type": "string",
"const": "assistant"
}
]
},
"RootsCapabilities": {
"description": "Roots capability. Deprecated by SEP-2577; remains functional and will be\nremoved in a future release.\nSee <https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577>.",
"type": "object",
"properties": {
"listChanged": {
"type": [
"boolean",
"null"
]
}
}
},
"SamplingCapability": {
"description": "Sampling capability with optional sub-capabilities (SEP-1577).\n\nDeprecated by SEP-2577; remains functional and will be removed in a future\nrelease.\nSee <https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577>.",
"type": "object",
"properties": {
"context": {
"description": "Support for `includeContext` (soft-deprecated)",
"type": [
"object",
"null"
],
"additionalProperties": true
},
"tools": {
"description": "Support for `tools` and `toolChoice` parameters",
"type": [
"object",
"null"
],
"additionalProperties": true
}
}
},
"SamplingContent": {
"description": "Single or array content wrapper (SEP-1577).",
"anyOf": [
{
"$ref": "#/definitions/SamplingMessageContentBlock"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/SamplingMessageContentBlock"
}
}
]
},
"SamplingMessage": {
"description": "A message in a sampling conversation, containing a role and content.\n\nThis represents a single message in a conversation flow, used primarily\nin LLM sampling requests where the conversation history is important\nfor generating appropriate responses.",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"content": {
"description": "The actual content of the message (text, image, audio, tool use, or tool result)",
"allOf": [
{
"$ref": "#/definitions/SamplingContent"
}
]
},
"role": {
"description": "The role of the message sender (User or Assistant)",
"allOf": [
{
"$ref": "#/definitions/Role"
}
]
}
},
"deprecated": true,
"required": [
"role",
"content"
]
},
"SamplingMessageContentBlock": {
"description": "Content types for sampling messages (SEP-1577).",
"deprecated": true,
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "text"
}
},
"allOf": [
{
"$ref": "#/definitions/TextContent"
}
],
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "image"
}
},
"allOf": [
{
"$ref": "#/definitions/ImageContent"
}
],
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "audio"
}
},
"allOf": [
{
"$ref": "#/definitions/AudioContent"
}
],
"required": [
"type"
]
},
{
"description": "Assistant only",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "tool_use"
}
},
"allOf": [
{
"$ref": "#/definitions/ToolUseContent"
}
],
"required": [
"type"
]
},
{
"description": "User only",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "tool_result"
}
},
"allOf": [
{
"$ref": "#/definitions/ToolResultContent"
}
],
"required": [
"type"
]
}
]
},
"ServerCapabilities": {
"title": "Builder",
"description": "```rust\n# use rmcp::model::ServerCapabilities;\nlet cap = ServerCapabilities::builder()\n .enable_experimental()\n .enable_prompts()\n .enable_resources()\n .enable_tools()\n .enable_tool_list_changed()\n .build();\n```",
"type": "object",
"properties": {
"completions": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"experimental": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"extensions": {
"description": "Optional MCP extensions that the server supports (SEP-1724).\nKeys are extension identifiers (e.g., `\"io.modelcontextprotocol/apps\"`),\nvalues are per-extension settings objects. An empty object indicates\nsupport with no settings.",
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"logging": {
"description": "Capability for server log message notifications (deprecated by SEP-2577).",
"type": [
"object",
"null"
],
"additionalProperties": true
},
"prompts": {
"anyOf": [
{
"$ref": "#/definitions/PromptsCapability"
},
{
"type": "null"
}
]
},
"resources": {
"anyOf": [
{
"$ref": "#/definitions/ResourcesCapability"
},
{
"type": "null"
}
]
},
"tools": {
"anyOf": [
{
"$ref": "#/definitions/ToolsCapability"
},
{
"type": "null"
}
]
}
}
},
"ServerResult": {
"anyOf": [
{
"$ref": "#/definitions/DiscoverResult"
},
{
"$ref": "#/definitions/InitializeResult"
},
{
"$ref": "#/definitions/CompleteResult"
},
{
"$ref": "#/definitions/GetPromptResult"
},
{
"$ref": "#/definitions/ListPromptsResult"
},
{
"$ref": "#/definitions/ListResourcesResult"
},
{
"$ref": "#/definitions/ListResourceTemplatesResult"
},
{
"$ref": "#/definitions/ReadResourceResult"
},
{
"$ref": "#/definitions/SubscriptionsListenResult"
},
{
"$ref": "#/definitions/ListToolsResult"
},
{
"$ref": "#/definitions/ElicitResult"
},
{
"$ref": "#/definitions/CreateTaskResult"
},
{
"$ref": "#/definitions/GetTaskResult"
},
{
"$ref": "#/definitions/CallToolResult"
},
{
"$ref": "#/definitions/InputRequiredResult"
},
{
"$ref": "#/definitions/TaskAckResult"
},
{
"$ref": "#/definitions/EmptyObject"
},
{
"$ref": "#/definitions/CustomResult"
}
]
},
"SingleSelectEnumSchema": {
"description": "Combined single-select",
"anyOf": [
{
"$ref": "#/definitions/UntitledSingleSelectEnumSchema"
},
{
"$ref": "#/definitions/TitledSingleSelectEnumSchema"
}
]
},
"StringFormat": {
"description": "String format types allowed by the MCP specification.",
"oneOf": [
{
"description": "Email address format",
"type": "string",
"const": "email"
},
{
"description": "URI format",
"type": "string",
"const": "uri"
},
{
"description": "Date format (YYYY-MM-DD)",
"type": "string",
"const": "date"
},
{
"description": "Date-time format (ISO 8601)",
"type": "string",
"const": "date-time"
}
]
},
"StringSchema": {
"description": "Schema definition for string properties.\n\nCompliant with MCP 2025-06-18 specification for elicitation schemas.\nSupports only the fields allowed by the MCP spec:\n- format limited to: \"email\", \"uri\", \"date\", \"date-time\"",
"type": "object",
"properties": {
"default": {
"description": "Default value",
"type": [
"string",
"null"
]
},
"description": {
"description": "Human-readable description",
"type": [
"string",
"null"
]
},
"format": {
"description": "String format - limited to: \"email\", \"uri\", \"date\", \"date-time\"",
"anyOf": [
{
"$ref": "#/definitions/StringFormat"
},
{
"type": "null"
}
]
},
"maxLength": {
"description": "Maximum string length",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0
},
"minLength": {
"description": "Minimum string length",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0
},
"title": {
"description": "Optional title for the schema",
"type": [
"string",
"null"
]
},
"type": {
"description": "Type discriminator",
"allOf": [
{
"$ref": "#/definitions/StringTypeConst"
}
]
}
},
"required": [
"type"
]
},
"StringTypeConst": {
"type": "string",
"format": "const",
"const": "string"
},
"SubscriptionFilter": {
"description": "Notification categories a client opts in to on a `subscriptions/listen` stream.",
"type": "object",
"properties": {
"promptsListChanged": {
"type": "boolean"
},
"resourceSubscriptions": {
"type": "array",
"items": {
"type": "string"
}
},
"resourcesListChanged": {
"type": "boolean"
},
"toolsListChanged": {
"type": "boolean"
}
}
},
"SubscriptionsAcknowledgedNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/subscriptions/acknowledged"
},
"SubscriptionsAcknowledgedNotificationParams": {
"description": "Parameters reporting the accepted subset of a subscription filter.",
"type": "object",
"properties": {
"_meta": {
"$ref": "#/definitions/NotificationMetaObject"
},
"notifications": {
"$ref": "#/definitions/SubscriptionFilter"
}
},
"required": [
"notifications"
]
},
"SubscriptionsListenResult": {
"description": "Final response indicating that a subscription ended gracefully.",
"type": "object",
"properties": {
"_meta": {
"$ref": "#/definitions/SubscriptionsListenResultMeta"
},
"resultType": {
"$ref": "#/definitions/ResultType"
}
},
"required": [
"resultType",
"_meta"
]
},
"SubscriptionsListenResultMeta": {
"type": "object",
"properties": {
"io.modelcontextprotocol/serverInfo": {
"description": "Identifies the server software producing the response. Servers SHOULD include this field on every response unless specifically configured not to do so.",
"allOf": [
{
"$ref": "#/definitions/Implementation"
}
]
},
"io.modelcontextprotocol/subscriptionId": {
"$ref": "#/definitions/NumberOrString"
}
},
"additionalProperties": true,
"required": [
"io.modelcontextprotocol/subscriptionId"
]
},
"TaskAckResult": {
"description": "Empty acknowledgement for `tasks/update` and `tasks/cancel` (SEP-2663).\n\nThe spec requires these acks to be empty results carrying the SEP-2322\n`resultType: \"complete\"` discriminator; task state changes are observed\nvia the next `tasks/get`.",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"resultType": {
"description": "Always `\"complete\"`.",
"allOf": [
{
"$ref": "#/definitions/ResultType"
}
]
}
},
"required": [
"resultType"
]
},
"TaskStatus": {
"description": "Canonical task lifecycle status (SEP-2663).",
"oneOf": [
{
"description": "The request is currently being processed.",
"type": "string",
"const": "working"
},
{
"description": "The server needs input from the client before the task can proceed.",
"type": "string",
"const": "input_required"
},
{
"description": "The request completed successfully and the result is available.\nThis includes tool calls that returned results with `isError: true`.",
"type": "string",
"const": "completed"
},
{
"description": "The request failed due to a JSON-RPC error during execution.",
"type": "string",
"const": "failed"
},
{
"description": "The request was cancelled before completion.",
"type": "string",
"const": "cancelled"
}
]
},
"TaskStatusNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/tasks"
},
"TaskStatusNotificationParams": {
"description": "Parameters for a task status notification (spec `TaskStatusNotificationParams`).\n\nCarries a complete [`DetailedTask`] for the current status, identical to\nwhat `tasks/get` would have returned at that moment. The task fields are\nflattened at the top level: `NotificationParams & Task`.",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/NotificationMetaObject"
},
{
"type": "null"
}
]
},
"createdAt": {
"description": "ISO 8601 timestamp when the task was created.",
"type": "string"
},
"error": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"inputRequests": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/definitions/InputRequest"
}
},
"lastUpdatedAt": {
"description": "ISO 8601 timestamp when the task was last updated.",
"type": "string"
},
"pollIntervalMs": {
"description": "Suggested polling interval in integer milliseconds. Clients SHOULD honor\nthis value to avoid overwhelming the server. This value MAY change over\nthe lifetime of a task.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"result": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"status": {
"description": "Current task status.",
"allOf": [
{
"$ref": "#/definitions/TaskStatus"
}
]
},
"statusMessage": {
"description": "Optional message describing the current task state.\nThis MAY be exposed to the end-user or model.",
"type": [
"string",
"null"
]
},
"taskId": {
"description": "Stable identifier for this task, generated by the server.",
"type": "string"
},
"ttlMs": {
"description": "Time-to-live duration from creation in integer milliseconds; `None`\n(serialized as `null`) means unlimited. The server may discard the task\nafter the TTL elapses. This value MAY change over the lifetime of a task.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"taskId",
"status",
"createdAt",
"lastUpdatedAt"
]
},
"TextContent": {
"description": "Text content block (spec `TextContent`).",
"type": "object",
"properties": {
"_meta": {
"description": "Optional protocol-level metadata for this content block.",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional annotations describing how the client should use this content.",
"anyOf": [
{
"$ref": "#/definitions/Annotations"
},
{
"type": "null"
}
]
},
"text": {
"description": "The text content of the message.",
"type": "string"
}
},
"required": [
"text"
]
},
"TitledItems": {
"description": "Items for titled multi-select options",
"type": "object",
"properties": {
"anyOf": {
"type": "array",
"items": {
"$ref": "#/definitions/ConstTitle"
}
}
},
"required": [
"anyOf"
]
},
"TitledMultiSelectEnumSchema": {
"description": "Multi-select titled options",
"type": "object",
"properties": {
"default": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"description": {
"type": [
"string",
"null"
]
},
"items": {
"$ref": "#/definitions/TitledItems"
},
"maxItems": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"minItems": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"$ref": "#/definitions/ArrayTypeConst"
}
},
"required": [
"type",
"items"
]
},
"TitledSingleSelectEnumSchema": {
"description": "Titled single-select",
"type": "object",
"properties": {
"default": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"oneOf": {
"type": "array",
"items": {
"$ref": "#/definitions/ConstTitle"
}
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"$ref": "#/definitions/StringTypeConst"
}
},
"required": [
"type",
"oneOf"
]
},
"Tool": {
"description": "A tool that can be used by a model.",
"type": "object",
"properties": {
"_meta": {
"description": "Optional additional metadata for this tool",
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"annotations": {
"description": "Optional additional tool information.",
"anyOf": [
{
"$ref": "#/definitions/ToolAnnotations"
},
{
"type": "null"
}
]
},
"description": {
"description": "A description of what the tool does",
"type": [
"string",
"null"
]
},
"icons": {
"description": "Optional list of icons for the tool",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"inputSchema": {
"description": "A JSON Schema object defining the expected parameters for the tool",
"type": "object",
"additionalProperties": true
},
"name": {
"description": "The name of the tool",
"type": "string"
},
"outputSchema": {
"description": "An optional JSON Schema object defining the structure of the tool's output",
"type": [
"object",
"null"
],
"additionalProperties": true
},
"title": {
"description": "A human-readable title for the tool",
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"inputSchema"
]
},
"ToolAnnotations": {
"description": "Additional properties describing a Tool to clients.\n\nNOTE: all properties in ToolAnnotations are **hints**.\nThey are not guaranteed to provide a faithful description of\ntool behavior (including descriptive properties like `title`).\n\nClients should never make tool use decisions based on ToolAnnotations\nreceived from untrusted servers.",
"type": "object",
"properties": {
"destructiveHint": {
"description": "If true, the tool may perform destructive updates to its environment.\nIf false, the tool performs only additive updates.\n\n(This property is meaningful only when `readOnlyHint == false`)\n\nDefault: true\nA human-readable description of the tool's purpose.",
"type": [
"boolean",
"null"
]
},
"idempotentHint": {
"description": "If true, calling the tool repeatedly with the same arguments\nwill have no additional effect on the its environment.\n\n(This property is meaningful only when `readOnlyHint == false`)\n\nDefault: false.",
"type": [
"boolean",
"null"
]
},
"openWorldHint": {
"description": "If true, this tool may interact with an \"open world\" of external\nentities. If false, the tool's domain of interaction is closed.\nFor example, the world of a web search tool is open, whereas that\nof a memory tool is not.\n\nDefault: true",
"type": [
"boolean",
"null"
]
},
"readOnlyHint": {
"description": "If true, the tool does not modify its environment.\n\nDefault: false",
"type": [
"boolean",
"null"
]
},
"title": {
"description": "A human-readable title for the tool.",
"type": [
"string",
"null"
]
}
}
},
"ToolChoice": {
"description": "Tool choice configuration (SEP-1577).",
"type": "object",
"properties": {
"mode": {
"anyOf": [
{
"$ref": "#/definitions/ToolChoiceMode"
},
{
"type": "null"
}
]
}
},
"deprecated": true
},
"ToolChoiceMode": {
"description": "Tool selection mode (SEP-1577).",
"oneOf": [
{
"description": "Model decides whether to use tools",
"type": "string",
"const": "auto"
},
{
"description": "Model must use at least one tool",
"type": "string",
"const": "required"
},
{
"description": "Model must not use tools",
"type": "string",
"const": "none"
}
]
},
"ToolListChangedNotificationMethod": {
"type": "string",
"format": "const",
"const": "notifications/tools/list_changed"
},
"ToolResultContent": {
"description": "Tool execution result in user message (SEP-1577).",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"content": {
"type": "array",
"items": {
"$ref": "#/definitions/ContentBlock"
}
},
"isError": {
"type": [
"boolean",
"null"
]
},
"structuredContent": true,
"toolUseId": {
"type": "string"
}
},
"deprecated": true,
"required": [
"toolUseId",
"content"
]
},
"ToolUseContent": {
"description": "Tool call request from assistant (SEP-1577).",
"type": "object",
"properties": {
"_meta": {
"anyOf": [
{
"$ref": "#/definitions/MetaObject"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"input": {
"type": "object",
"additionalProperties": true
},
"name": {
"type": "string"
}
},
"deprecated": true,
"required": [
"id",
"name",
"input"
]
},
"ToolsCapability": {
"type": "object",
"properties": {
"listChanged": {
"type": [
"boolean",
"null"
]
}
}
},
"UntitledItems": {
"description": "Items for untitled multi-select options",
"type": "object",
"properties": {
"enum": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"$ref": "#/definitions/StringTypeConst"
}
},
"required": [
"type",
"enum"
]
},
"UntitledMultiSelectEnumSchema": {
"description": "Multi-select untitled options",
"type": "object",
"properties": {
"default": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"description": {
"type": [
"string",
"null"
]
},
"items": {
"$ref": "#/definitions/UntitledItems"
},
"maxItems": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"minItems": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"$ref": "#/definitions/ArrayTypeConst"
}
},
"required": [
"type",
"items"
]
},
"UntitledSingleSelectEnumSchema": {
"description": "Untitled single-select",
"type": "object",
"properties": {
"default": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"enum": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"$ref": "#/definitions/StringTypeConst"
}
},
"additionalProperties": false,
"required": [
"type",
"enum"
]
},
"UrlElicitationCapability": {
"description": "Capability for URL mode elicitation.",
"type": "object"
}
}
}