The MCP schema recently added support for annotation attached to tool definitions. In ellmer this would be an annotations = class_list property, or possibly a new ToolAnnotations class.
The MCP schema is the best documentation of the annotations type that are broadly:
destructiveHint: boolean. If true, the tool may perform destructive updates to its environment. If false, the tool performs only additive updates. Meaningful only when readOnlyHint == false. Default: true.
idempotentHint: boolean. If true, calling the tool repeatedly with the same arguments will have no additional effect on its environment. Meaningful only when readOnlyHint == false. Default: false.
openWorldHint: boolean. If true, this tool may interact with an "open world" of external entities. If false, the tool's domain of interaction is closed. Example: A web search tool has an open world, while a memory tool does not. Default: true.
readOnlyHint: boolean. If true, the tool does not modify its environment. Default: false.
title: string. A human-readable title for the tool.
These annotations could be used by shinychat for an interface that displays tool results, requests tool calling consent, etc.
The MCP schema recently added support for
annotationattached to tool definitions. In ellmer this would be anannotations = class_listproperty, or possibly a newToolAnnotationsclass.The MCP schema is the best documentation of the annotations type that are broadly:
destructiveHint: boolean. If true, the tool may perform destructive updates to its environment. If false, the tool performs only additive updates. Meaningful only whenreadOnlyHint == false. Default: true.idempotentHint: boolean. If true, calling the tool repeatedly with the same arguments will have no additional effect on its environment. Meaningful only whenreadOnlyHint == false. Default: false.openWorldHint: boolean. If true, this tool may interact with an "open world" of external entities. If false, the tool's domain of interaction is closed. Example: A web search tool has an open world, while a memory tool does not. Default: true.readOnlyHint: boolean. If true, the tool does not modify its environment. Default: false.title: string. A human-readable title for the tool.These annotations could be used by shinychat for an interface that displays tool results, requests tool calling consent, etc.