Tool
Tools let agents interact with the outside world instead of only producing text.
Two tool categories
Section titled “Two tool categories”Functional tools
Section titled “Functional tools”These are the tools controlled by allowed_tools:
- builtin tools such as
bash,web_search, andweb_reader - custom
BaseToolimplementations - nested agents exposed through
Agent.as_tool()
System tools
Section titled “System tools”These are runtime-owned tools and are not filtered by allowed_tools:
SkillTool- scheduler runtime tools such as
spawn_child_agent,fork_child_agent, andsleep_and_wait
Stable contract
Section titled “Stable contract”Public tools implement BaseTool with:
namedescriptionget_parameters()execute(...)
Plain tools should depend on ToolContext, not on agent-internal runtime types.
Result semantics
Section titled “Result semantics”Use:
ToolResult.success(...)ToolResult.failed(...)ToolResult.aborted(...)ToolResult.denied(...)
This keeps tool outcomes explicit for the runtime and for the model’s next step.
Builtin tools
Section titled “Builtin tools”The builtin surface currently includes:
bashbash_processweb_searchweb_readermemory_retrieval
You can treat them as defaults and layer your own tools alongside them.