InvokableTool
Defined in: src/tools/tool.ts:154
Extended tool interface that supports direct invocation with type-safe input and output. This interface is useful for testing and standalone tool execution.
Extends
Section titled “Extends”Type Parameters
Section titled “Type Parameters”| Type Parameter | Description |
|---|---|
TInput | Type for the tool’s input parameters |
TReturn | Type for the tool’s return value |
Properties
Section titled “Properties”abstract name: string;Defined in: src/tools/tool.ts:97
The unique name of the tool. This MUST match the name in the toolSpec.
Inherited from
Section titled “Inherited from”description
Section titled “description”abstract description: string;Defined in: src/tools/tool.ts:104
Human-readable description of what the tool does. This helps the model understand when to use the tool.
This MUST match the description in the toolSpec.description.
Inherited from
Section titled “Inherited from”toolSpec
Section titled “toolSpec”abstract toolSpec: ToolSpec;Defined in: src/tools/tool.ts:109
OpenAPI JSON specification for the tool. Defines the tool’s name, description, and input schema.
Inherited from
Section titled “Inherited from”Methods
Section titled “Methods”stream()
Section titled “stream()”abstract stream(toolContext): ToolStreamGenerator;Defined in: src/tools/tool.ts:144
Executes the tool with streaming support. Yields zero or more ToolStreamEvents during execution, then returns exactly one ToolResultBlock as the final value.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
toolContext | ToolContext | Context information including the tool use request and invocation state |
Returns
Section titled “Returns”Async generator that yields ToolStreamEvents and returns a ToolResultBlock
Example
Section titled “Example”const context = { toolUse: { name: 'calculator', toolUseId: 'calc-123', input: { operation: 'add', a: 5, b: 3 } },}
// The return value is only accessible via explicit .next() callsconst generator = tool.stream(context)for await (const event of generator) { // Only yields are captured here console.log('Progress:', event.data)}// Or manually handle the return value:let result = await generator.next()while (!result.done) { console.log('Progress:', result.value.data) result = await generator.next()}console.log('Final result:', result.value.status)Inherited from
Section titled “Inherited from”invoke()
Section titled “invoke()”invoke(input, context?): Promise<TReturn>;Defined in: src/tools/tool.ts:167
Invokes the tool directly with type-safe input and returns the unwrapped result.
Unlike stream(), this method:
- Returns the raw result (not wrapped in ToolResult)
- Consumes async generators and returns only the final value
- Lets errors throw naturally (not wrapped in error ToolResult)
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
input | TInput | The input parameters for the tool |
context? | ToolContext | Optional tool execution context |
Returns
Section titled “Returns”Promise<TReturn>
The unwrapped result