Skip to content

Components and tools

Agents are assembled from components. Each component is stored once in the registry and can be reused by many agents.

TypePurposeExample
agentAn AI agent that reasons and actsA support assistant
teamSeveral agents that work togetherA specialist team that handles escalations
modelThe language model an agent usesA general-purpose chat model
toolA single function an agent can callLook up the current date
toolboxA collection of tools generated from an OpenAPI description of a REST APITools for a ticketing system
workbenchA connection to a remote tool server using the Model Context Protocol (MCP)An external data service
tokenproviderAuthentication for toolboxes and workbenchesSign in to an external API
contextInstructions and guidelinesTone of voice, rules to follow
chat_completion_contextHow much conversation history an agent keepsKeep the first and the latest messages
handoffA transition between agents, or back to the userEscalate to a specialist
terminationA condition that ends a team conversationStop after a maximum number of messages

Tools let an agent do more than write text: look up data, calculate, or trigger an action in another system.

KindWhere it runsWhen to use it
Built-in toolIn the serviceCommon tasks such as search or calculation, see below
OpenAPI toolboxThe service calls your APIYour system already has a REST API described with OpenAPI. See OpenAPI toolboxes.
MCP workbenchThe service calls your MCP serverYour system offers its tools through the Model Context Protocol. See MCP workbenches.
External toolYour applicationThe action must happen in your application, for example showing a form. See External tools.

Toolboxes and workbenches can authenticate against your systems with a token provider. Store the credentials it needs as secrets.

For tools that change data, such as creating an order or posting a booking, you can require that the user approves each call. See Human-in-the-loop.

The service includes general-purpose tools that agents can use. To connect your systems, use an OpenAPI toolbox or an MCP workbench.

ToolWhat it does
Date and timeReturns the current date and time
CalculatorCalculates expressions, sums, counts, percentages and grouped totals
Knowledge searchSearches your datasources semantically, with optional metadata filters or hybrid search. See Knowledge and Search.

Agents built for specific customers often use additional tools that are tailored to their systems. Contact Support to find out which tools are available for your tenant.

A toolbox turns a REST API into tools. The service reads the API’s OpenAPI description and creates one tool per operation. The tool name is taken from the operation’s operationId.

{
"id": "ticketing",
"name": "Ticketing API",
"component_type": "toolbox",
"provider": "${PROVIDER}",
"config": {
"url_or_spec": "https://tickets.example.com/openapi.json",
"base_url_fallback": "${TICKET_API_URL}",
"token_provider": { "ref": "tokenprovider/ticketing-auth" },
"allowed_operations": {
"GET": ["list_tickets", "get_ticket"],
"POST": ["create_ticket"]
},
"requires_confirmation": ["create_ticket"],
"timeout": 30
}
}
FieldMeaning
url_or_specURL of the OpenAPI description, or the description itself as JSON
base_url_fallbackBase URL of the API, used if the description has no absolute server URL or lists several servers
token_providerOptional reference to a token provider for authentication
custom_headersOptional headers sent with every request
allowed_operationsOperations the agent may call, grouped by HTTP method. Without this field, only GET operations are allowed.
requires_confirmationOperations the user must approve before they run
tags_filterOptional list of OpenAPI tags. Only operations with one of these tags become tools.
path_filter_regexOptional regular expression. Only operations with a matching path become tools.
timeoutRequest timeout in seconds

A workbench connects an agent to a remote server that uses the Model Context Protocol (MCP). The agent can use all tools that the server offers. The server must be reachable over HTTP.

{
"id": "data-service",
"name": "Data service",
"component_type": "workbench",
"provider": "${PROVIDER}",
"config": {
"server_params": {
"type": "StreamableHttpServerParams",
"url": "https://mcp.example.com/mcp",
"timeout": 30,
"sse_read_timeout": 300
},
"token_provider": { "ref": "tokenprovider/data-service-auth" }
}
}
FieldMeaning
server_params.urlURL of the MCP server
server_params.headersOptional headers sent with every request
server_params.timeoutConnection timeout in seconds
server_params.sse_read_timeoutHow long to wait for streamed results, in seconds
token_providerOptional reference to a token provider. Its token is sent in the Authorization header.

Components refer to other components with a ref in the format {component_type}/{component_id}:

{
"model_client": { "ref": "model/my-model" },
"tools": [{ "ref": "tool/calculator" }, { "ref": "tool/search-manuals" }]
}
  • A referenced component must exist before it is used.
  • A component cannot be deleted while another component references it.
  • Circular references are rejected. Handoffs in both directions between two agents are allowed.

All registry requests need the headers described in Request basics and the service operator role. ${RUNTIME_BASE_URL} stands for the Agent Runtime URL of your environment.

POST ${RUNTIME_BASE_URL}/v1/components/agent
Content-Type: application/json
{
"id": "support-agent",
"name": "Customer Support Agent",
"component_type": "agent",
"description": "Handles customer inquiries",
"provider": "${PROVIDER}",
"config": {
"name": "support_agent",
"description": "Customer support assistant",
"model_client": { "ref": "model/my-model" },
"tools": [{ "ref": "tool/search-manuals" }],
"system_message": "You are a helpful support agent."
}
}
FieldMeaning
idUnique ID of the component
nameDisplay name. Any characters are allowed.
providerThe implementation behind the component. Contact Support for the provider values available to your tenant.
config.nameTechnical name of the agent, used as target for handoffs and in teams
config.system_messageThe instructions for the agent, as text or as a reference to a context component. See Reusable instructions.

See Metadata and descriptions for how to write descriptions and instructions that work well.

Instead of writing the instructions into the agent, store them in a context component and reference it in system_message. Several agents can then share the same instructions.

A context can also call tools when the agent is loaded and insert their results into the instructions, for example the current date or values from one of your systems. The tools run every time, without the language model deciding to call them:

{
"id": "support-instructions",
"name": "Support instructions",
"component_type": "context",
"provider": "${PROVIDER}",
"config": {
"content": [
"Current date and time: {{ get_datetime() }}",
"You are a helpful support agent."
],
"env": {
"get_datetime": { "ref": "tool/get-local-date-time" }
},
"sep": "\n"
}
}
FieldMeaning
contentParts of the instructions. {{ name() }} calls the tool name from env and inserts its result.
envTools and values that content can use
sepSeparator between the parts of content

The agent then references the context:

"system_message": { "ref": "context/support-instructions" }

A team lets several agents work on one conversation. Each agent can hand the conversation over to another agent, or back to the user, through a handoff. A team always needs a termination condition, for example a maximum number of messages, so that a conversation cannot run forever.

Handoffs are configured on the agents, not on the team. A handoff target is the technical name (config.name) of an agent, or user.

  1. Token providers, then toolboxes
  2. Models, tools, contexts and workbenches
  3. Termination conditions
  4. Agents
  5. Handoffs, then update the agents that use them
  6. Teams
  7. Environments
  8. Deployments