Skip to main content

Properties

required
The Chat instance the tools dispatch operations against.
Partial<Record<ChatToolName, Partial<Pick<Tool, "description" | "inputExamples"…
Type: ChatToolNamePer-tool overrides for customizing tool behavior (description, title, needsApproval, etc.) without changing the underlying implementation. Core tool fields cannot be overridden.
ChatToolPreset | ChatToolPreset[]
Type: ChatToolPresetChatToolPresetRestrict the returned tools to a predefined preset. Omit to get all tools (same as 'moderator').
Whether sensitive operations require user approval before executing. Defaults to true for all write tools and getUser.
false | ReadScope
Type: ReadScopeConfine tools to a single conversation, so a thread or channel id the model supplies that resolves elsewhere is rejected. Applies to reads and writes that target a thread or channel; getUser and sendDirectMessage target user ids and are gated by approval instead.Scoping is channel-level: a call is allowed when it resolves to the same channel as the scoped conversation, so a thread scope still permits sibling threads within that channel. Set ChatToolsBaseOptions.strictScope to tighten a thread scope to that thread alone.Defaults to the conversation being handled, so tools created inside a handler are already confined to it. Set this when the agent runs outside a handler and still acts on a user’s behalf, or pass a channel id to operate channel-wide.Pass false to reach every conversation the bot can see. When no scope resolves (outside a handler, no explicit scope), tools run workspace-wide and a warning is logged.
boolean
Tighten scope from channel-level (default) to conversation-level.By default a call is in scope when it resolves to the same channel as the scoped conversation, so a thread scope still permits sibling threads in that channel. Set true to confine a thread scope to that thread alone: sibling threads and the parent channel are both rejected, which matters on platforms where a channel is the widest surface available (a GitHub channel is an entire repo). A channel scope is unaffected; it still allows any thread within the channel.