diff --git a/docs/docs/concepts/tools.mdx b/docs/docs/concepts/tools.mdx index e697e3d33..5759c186a 100644 --- a/docs/docs/concepts/tools.mdx +++ b/docs/docs/concepts/tools.mdx @@ -333,6 +333,7 @@ The MCP specification defines the following annotations for tools: | `destructiveHint` | boolean | true | If true, the tool may perform destructive updates (only meaningful when `readOnlyHint` is false) | | `idempotentHint` | boolean | false | If true, calling the tool repeatedly with the same arguments has no additional effect (only meaningful when `readOnlyHint` is false) | | `openWorldHint` | boolean | true | If true, the tool may interact with an "open world" of external entities | +| `generatesHint` | string[] | None | If present, provides non-exhaustive list of MIME types this Tool may generate in a `CallToolResult`. | ### Example usage diff --git a/docs/specification/draft/basic/lifecycle.mdx b/docs/specification/draft/basic/lifecycle.mdx index 58aa184fa..1f370d3f9 100644 --- a/docs/specification/draft/basic/lifecycle.mdx +++ b/docs/specification/draft/basic/lifecycle.mdx @@ -150,6 +150,7 @@ Key capabilities include: | Client | `roots` | Ability to provide filesystem [roots](/specification/draft/client/roots) | | Client | `sampling` | Support for LLM [sampling](/specification/draft/client/sampling) requests | | Client | `elicitation` | Support for server [elicitation](/specification/draft/client/elicitation) requests | +| Client | `contentTypes` | Describes content types the Host can show the User, or tokenize for the LLM | | Client | `experimental` | Describes support for non-standard experimental features | | Server | `prompts` | Offers [prompt templates](/specification/draft/server/prompts) | | Server | `resources` | Provides readable [resources](/specification/draft/server/resources) | diff --git a/schema/draft/schema.json b/schema/draft/schema.json index 05552b38d..c238115c8 100644 --- a/schema/draft/schema.json +++ b/schema/draft/schema.json @@ -197,6 +197,26 @@ "ClientCapabilities": { "description": "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.", "properties": { + "contentTypes": { + "description": "Present if the client advertises content types it can handle.", + "properties": { + "renders": { + "description": "Optional non-exclusive List of MIME types that the client can render to Users.", + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenizes": { + "description": "Optional non-exclusive list of MIME types that the client can tokenize for the LLM.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "elicitation": { "additionalProperties": true, "description": "Present if the client supports elicitation from the server.", @@ -2319,6 +2339,13 @@ "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", "type": "boolean" }, + "generatesHint": { + "description": "Optional list of MIME types that this Tool may produce in a CallToolResult.", + "items": { + "type": "string" + }, + "type": "array" + }, "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" diff --git a/schema/draft/schema.ts b/schema/draft/schema.ts index 0852bad4b..105fda9fd 100644 --- a/schema/draft/schema.ts +++ b/schema/draft/schema.ts @@ -224,6 +224,19 @@ export interface ClientCapabilities { * Present if the client supports elicitation from the server. */ elicitation?: object; + /** + * Present if the client advertises content types it can handle. + */ + contentTypes?: { + /** + * Optional non-exclusive List of MIME types that the client can render to Users. + */ + renders?: string[]; + /** + * Optional non-exclusive list of MIME types that the client can tokenize for the LLM. + */ + tokenizes?: string[]; + }; } /** @@ -788,6 +801,11 @@ export interface ToolAnnotations { * Default: true */ openWorldHint?: boolean; + + /** + * Optional list of MIME types that this Tool may produce in a CallToolResult. + */ + generatesHint?: string[]; } /**