Tool API
Tool API
Section titled “Tool API”Public exports
Section titled “Public exports”agiwo.tool exports:
BaseToolToolDefinitionToolResultToolContextToolReferenceBuiltinToolReferenceAgentToolReferenceInvalidToolReferenceErrorparse_tool_reference(...)
BaseTool
Section titled “BaseTool”Core contract:
class BaseTool(ABC): cacheable: bool = False timeout_seconds: int = 30 concurrency_safe: bool = True is_stateless: bool = False
@property def name(self) -> str: ...
@property def description(self) -> str: ...
def get_parameters(self) -> dict[str, Any]: ...
async def execute( self, parameters: dict[str, Any], context: ToolContext, abort_signal: AbortSignal | None = None, ) -> ToolResult: ...ToolDefinition
Section titled “ToolDefinition”ToolDefinition is the LLM-facing metadata and parameter schema used when Agiwo registers a tool for model consumption.
It is the structured definition produced from a BaseTool and is what lets the runtime expose tool name, description, parameter schema, timeout, and concurrency metadata in a registration-friendly shape.
ToolResult
Section titled “ToolResult”Use the factory methods:
ToolResult.success(...)ToolResult.failed(...)ToolResult.aborted(...)ToolResult.denied(...)
Important fields include content, content_for_user, output, error, and duration.
ToolContext
Section titled “ToolContext”ToolContext carries runtime metadata such as:
session_idagent_idagent_nameuser_iddepthtool_call_id
Plain tools should rely on this instead of internal agent runtime types.
Tool references
Section titled “Tool references”Use parse_tool_reference(...) when you need to validate allowlist entries such as:
bashweb_searchagent:researcher