Strands Agents Typescript SDK
    Preparing search index...

    Interface ToolAbstract

    Interface for tool implementations. Tools are used by agents to interact with their environment and perform specific actions.

    The Tool interface provides a streaming execution model where tools can yield progress events during execution before returning a final result.

    Most implementations should use FunctionTool rather than implementing this interface directly.

    interface Tool {
        name: string;
        description: string;
        toolSpec: ToolSpec;
        stream(toolContext: ToolContext): ToolStreamGenerator;
    }

    Hierarchy (View Summary)

    Index

    Properties

    Methods

    Properties

    name: string

    The unique name of the tool. This MUST match the name in the toolSpec.

    description: string

    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.

    toolSpec: ToolSpec

    OpenAPI JSON specification for the tool. Defines the tool's name, description, and input schema.

    Methods

    • Executes the tool with streaming support. Yields zero or more ToolStreamEvents during execution, then returns exactly one ToolResultBlock as the final value.

      Parameters

      • toolContext: ToolContext

        Context information including the tool use request and invocation state

      Returns ToolStreamGenerator

      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)