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.