// Copyright 2025 The Go MCP SDK Authors. All rights reserved. // Use of this source code is governed by an MIT-style // license that can be found in the LICENSE file. // Code generated by generate.go. DO NOT EDIT. package protocol import ( "encoding/json" "github.com/modelcontextprotocol/go-sdk/internal/jsonschema" ) // Optional annotations for the client. The client can use annotations to inform // how objects are used or displayed type Annotations struct { // Describes who the intended customer of this object or data is. // // It can include multiple entries to indicate content useful for multiple // audiences (e.g., `["user", "assistant"]`). Audience []Role `json:"audience,omitempty"` // Describes how important this data is for operating the server. // // A value of 1 means "most important," and indicates that the data is // effectively required, while 0 means "least important," and indicates that the // data is entirely optional. Priority float64 `json:"priority,omitempty"` } type CallToolParams struct { Arguments json.RawMessage `json:"arguments,omitempty"` Name string `json:"name"` } // The server's response to a tool call. // // Any errors that originate from the tool SHOULD be reported inside the result // object, with `isError` set to true, _not_ as an MCP protocol-level error // response. Otherwise, the LLM would not be able to see that an error occurred // and self-correct. // // However, any errors in _finding_ the tool, an error indicating that the // server does not support tool calls, or any other exceptional conditions, // should be reported as an MCP error response. type CallToolResult struct { // This result property is reserved by the protocol to allow clients and servers // to attach additional metadata to their responses. Meta json.RawMessage `json:"_meta,omitempty"` Content []json.RawMessage `json:"content"` // Whether the tool call ended in an error. // // If not set, this is assumed to be false (the call was successful). IsError bool `json:"isError,omitempty"` } type CancelledParams struct { // An optional string describing the reason for the cancellation. This MAY be // logged or presented to the user. Reason string `json:"reason,omitempty"` // The ID of the request to cancel. // // This MUST correspond to the ID of a request previously issued in the same // direction. RequestId any `json:"requestId"` } // Capabilities a client may support. Known capabilities are defined here, in // this schema, but this is not a closed set: any client can define its own, // additional capabilities. type ClientCapabilities struct { // Experimental, non-standard capabilities that the client supports. Experimental json.RawMessage `json:"experimental,omitempty"` // Present if the client supports listing roots. Roots *struct { // Whether the client supports notifications for changes to the roots list. ListChanged bool `json:"listChanged,omitempty"` } `json:"roots,omitempty"` // Present if the client supports sampling from an LLM. Sampling json.RawMessage `json:"sampling,omitempty"` } // Describes the name and version of an MCP implementation. type Implementation struct { Name string `json:"name"` Version string `json:"version"` } type InitializeParams struct { Capabilities ClientCapabilities `json:"capabilities"` ClientInfo Implementation `json:"clientInfo"` // The latest version of the Model Context Protocol that the client supports. // The client MAY decide to support older versions as well. ProtocolVersion string `json:"protocolVersion"` } // After receiving an initialize request from the client, the server sends this // response. type InitializeResult struct { // This result property is reserved by the protocol to allow clients and servers // to attach additional metadata to their responses. Meta json.RawMessage `json:"_meta,omitempty"` Capabilities ServerCapabilities `json:"capabilities"` // Instructions describing how to use the server and its features. // // This can be used by clients to improve the LLM's understanding of available // tools, resources, etc. It can be thought of like a "hint" to the model. For // example, this information MAY be added to the system prompt. Instructions string `json:"instructions,omitempty"` // The version of the Model Context Protocol that the server wants to use. This // may not match the version that the client requested. If the client cannot // support this version, it MUST disconnect. ProtocolVersion string `json:"protocolVersion"` ServerInfo Implementation `json:"serverInfo"` } type InitializedParams json.RawMessage type ListToolsParams struct { // An opaque token representing the current pagination position. If provided, // the server should return results starting after this cursor. Cursor string `json:"cursor,omitempty"` } // The server's response to a tools/list request from the client. type ListToolsResult struct { // This result property is reserved by the protocol to allow clients and servers // to attach additional metadata to their responses. Meta json.RawMessage `json:"_meta,omitempty"` // An opaque token representing the pagination position after the last returned // result. If present, there may be more results available. NextCursor string `json:"nextCursor,omitempty"` Tools []Tool `json:"tools"` } // Present if the server offers any prompt templates. type PromptCapabilities struct { // Whether this server supports notifications for changes to the prompt list. ListChanged bool `json:"listChanged,omitempty"` } // Present if the server offers any resources to read. type ResourceCapabilities struct { // Whether this server supports notifications for changes to the resource list. ListChanged bool `json:"listChanged,omitempty"` // Whether this server supports subscribing to resource updates. Subscribe bool `json:"subscribe,omitempty"` } // The sender or recipient of messages and data in a conversation. type Role string // Capabilities that a server may support. Known capabilities are defined here, // in this schema, but this is not a closed set: any server can define its own, // additional capabilities. type ServerCapabilities struct { // Present if the server supports argument autocompletion suggestions. Completions json.RawMessage `json:"completions,omitempty"` // Experimental, non-standard capabilities that the server supports. Experimental json.RawMessage `json:"experimental,omitempty"` // Present if the server supports sending log messages to the client. Logging json.RawMessage `json:"logging,omitempty"` // Present if the server offers any prompt templates. Prompts *PromptCapabilities `json:"prompts,omitempty"` // Present if the server offers any resources to read. Resources *ResourceCapabilities `json:"resources,omitempty"` // Present if the server offers any tools to call. Tools *ToolCapabilities `json:"tools,omitempty"` } // Text provided to or from an LLM. type TextContent struct { // Optional annotations for the client. Annotations *Annotations `json:"annotations,omitempty"` // The text content of the message. Text string `json:"text"` Type string `json:"type"` } // Definition for a tool the client can call. type Tool struct { // Optional additional tool information. Annotations *ToolAnnotations `json:"annotations,omitempty"` // A human-readable description of the tool. // // This can be used by clients to improve the LLM's understanding of available // tools. It can be thought of like a "hint" to the model. Description string `json:"description,omitempty"` // A JSON Schema object defining the expected parameters for the tool. InputSchema *jsonschema.Schema `json:"inputSchema"` // The name of the tool. Name string `json:"name"` } // Additional properties describing a Tool to clients. // // NOTE: all properties in ToolAnnotations are **hints**. They are not // guaranteed to provide a faithful description of tool behavior (including // descriptive properties like `title`). // // Clients should never make tool use decisions based on ToolAnnotations // received from untrusted servers. type ToolAnnotations struct { // If true, the tool may perform destructive updates to its environment. If // false, the tool performs only additive updates. // // (This property is meaningful only when `readOnlyHint == false`) // // Default: true DestructiveHint bool `json:"destructiveHint,omitempty"` // If true, calling the tool repeatedly with the same arguments will have no // additional effect on the its environment. // // (This property is meaningful only when `readOnlyHint == false`) // // Default: false IdempotentHint bool `json:"idempotentHint,omitempty"` // If true, this tool may interact with an "open world" of external entities. If // false, the tool's domain of interaction is closed. For example, the world of // a web search tool is open, whereas that of a memory tool is not. // // Default: true OpenWorldHint bool `json:"openWorldHint,omitempty"` // If true, the tool does not modify its environment. // // Default: false ReadOnlyHint bool `json:"readOnlyHint,omitempty"` // A human-readable title for the tool. Title string `json:"title,omitempty"` } // Present if the server offers any tools to call. type ToolCapabilities struct { // Whether this server supports notifications for changes to the tool list. ListChanged bool `json:"listChanged,omitempty"` }