FunctionToolCallback
type FunctionToolCallback = (input, toolContext) => | AsyncGenerator<JSONValue, JSONValue, never> | Promise<JSONValue> | JSONValue;Defined in: src/tools/function-tool.ts:43
Callback function for FunctionTool implementations. The callback can return values in multiple ways, and FunctionTool handles the conversion to ToolResultBlock.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
input | unknown | The input parameters conforming to the tool’s inputSchema |
toolContext | ToolContext | The tool execution context with invocation state |
Returns
Section titled “Returns”| AsyncGenerator<JSONValue, JSONValue, never>
| Promise<JSONValue>
| JSONValue
Can return:
- AsyncGenerator: Each yielded value becomes a ToolStreamEvent, final value wrapped in ToolResultBlock
- Promise: Resolved value is wrapped in ToolResultBlock
- Synchronous value: Value is wrapped in ToolResultBlock
- If an error is thrown, it’s handled and returned as an error ToolResultBlock
Example
Section titled “Example”// Async generator exampleasync function* calculator(input: unknown, context: ToolContext) { yield 'Calculating...' const result = input.a + input.b yield `Result: ${result}` return result}
// Promise exampleasync function fetchData(input: unknown, context: ToolContext) { const response = await fetch(input.url) return await response.json()}
// Synchronous examplefunction multiply(input: unknown, context: ToolContext) { return input.a * input.b}