Tools

Tools extend what agents can do. Octavus supports multiple types:

  1. External Tools — Defined in the protocol, implemented in your backend (this page)
  2. Provider Tools — Built-in tools executed server-side by the provider (e.g., Anthropic's web search)
  3. Skills — Code execution and knowledge packages (see Skills)

This page covers external tools. For provider tools, see Provider Options. For code execution capabilities, see Skills.

External Tools

External tools are defined in the tools: section and implemented in your backend.

Defining Tools

yaml

Tool Fields

FieldRequiredDescription
descriptionYesWhat the tool does (shown to LLM and optionally user)
displayNoHow to show in UI: hidden, name, description, stream
parametersNoInput parameters the tool accepts

Display Modes

ModeBehavior
hiddenTool runs silently, user doesn't see it
nameShows tool name while executing
descriptionShows description while executing (default)
streamStreams tool progress if available

Parameters

Parameter Fields

FieldRequiredDescription
typeYesData type: string, number, boolean, unknown
descriptionNoDescribes what this parameter is for
optionalNoIf true, parameter is not required (default: false)

Optional Parameters

Parameters are required by default. Use optional: true to make a parameter optional:

yaml

Making Tools Available

Tools defined in tools: are available. To make them usable by the LLM, add them to agent.tools:

yaml

Tool Invocation Modes

LLM-Decided (Agentic)

The LLM decides when to call tools based on the conversation:

yaml

Deterministic (Block-Based)

Force tool calls at specific points in the handler:

yaml

Tool Results

In Prompts

Tool results are stored in variables. Reference the variable in prompts:

markdown

When the TICKET variable contains an object, it's automatically serialized as JSON in the prompt:

text

Note: Variables use {{VARIABLE_NAME}} syntax with UPPERCASE_SNAKE_CASE. Dot notation (like {{TICKET.ticketId}}) is not supported. Objects are automatically JSON-serialized.

In Variables

Store tool results for later use:

yaml

Implementing Tools

Tools are implemented in your backend:

typescript

Tool Best Practices

1. Clear Descriptions

yaml

2. Document Constrained Values

yaml