Type for the tool's input parameters
Type for the tool's return value
AbstractnameThe unique name of the tool. This MUST match the name in the toolSpec.
AbstractdescriptionHuman-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.
AbstracttoolOpenAPI JSON specification for the tool. Defines the tool's name, description, and input schema.
AbstractstreamExecutes the tool with streaming support. Yields zero or more ToolStreamEvents during execution, then returns exactly one ToolResultBlock as the final value.
Context information including the tool use request and invocation state
Async generator that yields ToolStreamEvents and returns a ToolResultBlock
const context = {
toolUse: {
name: 'calculator',
toolUseId: 'calc-123',
input: { operation: 'add', a: 5, b: 3 }
},
}
// The return value is only accessible via explicit .next() calls
const 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)
Invokes the tool directly with type-safe input and returns the unwrapped result.
Unlike stream(), this method:
The input parameters for the tool
Optionalcontext: ToolContextOptional tool execution context
The unwrapped result
Extended tool interface that supports direct invocation with type-safe input and output. This interface is useful for testing and standalone tool execution.