Choosing tools

Often you don't want your agent to have every tool. For instance, your support agent needs to read issues, not search all your code.

Offer only some tools

tools names the tools to offer, or a pattern such as get_*:

agents/support/agent.yaml
name: support
mode: text
llm: llm-fast
connectors:
  - name: github
    connection: company
    tools: [list_issues, get_*] # list_issues, and every tool whose name starts with get_
getstream agents test support --sync

Ask: "What are the open issues in GetStream/awesome-ai-news?". The agent reads them with github__list_issues.

Leave tools out to offer every tool the provider lists.

Give a connector another name

The model sees each tool as <name>__<tool>. Set connector when that name should differ from the connector id:

connectors:
  - name: code # the model sees code__list_issues
    connector: github
    connection: company

Require a connector

By default a connector is optional: when its connection is missing or not connected, the session goes on without its tools. required: true refuses to open the session instead:

connectors:
  - name: github
    connection: company
    required: true

A test with a connection that is not connected yet stops before the conversation:

Error: cannot start a conversation with support: session: required connector "github" cannot be used: not_connected: the connection is not connected

Going further