Skip to main content

Tool

Trait Tool 

Source
pub trait Tool: Send + Sync {
    // Required methods
    fn name(&self) -> &str;
    fn description(&self) -> &str;
    fn execute<'life0, 'async_trait>(
        &'life0 self,
        ctx: Arc<dyn ToolContext>,
        args: Value,
    ) -> Pin<Box<dyn Future<Output = Result<Value, AdkError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;

    // Provided methods
    fn declaration(&self) -> Value { ... }
    fn enhanced_description(&self) -> String { ... }
    fn is_long_running(&self) -> bool { ... }
    fn is_builtin(&self) -> bool { ... }
    fn parameters_schema(&self) -> Option<Value> { ... }
    fn response_schema(&self) -> Option<Value> { ... }
    fn required_scopes(&self) -> &[&str] { ... }
    fn is_read_only(&self) -> bool { ... }
    fn is_concurrency_safe(&self) -> bool { ... }
}
Expand description

Core traits and types.

Always available regardless of feature flags. Includes:

  • Agent - The fundamental trait for all agents
  • Tool / Toolset - For extending agents with capabilities
  • Session / State - For managing conversation context
  • Event - For streaming agent responses
  • AdkError / Result - Unified error handling

Required Methods§

Source

fn name(&self) -> &str

Source

fn description(&self) -> &str

Source

fn execute<'life0, 'async_trait>( &'life0 self, ctx: Arc<dyn ToolContext>, args: Value, ) -> Pin<Box<dyn Future<Output = Result<Value, AdkError>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Provided Methods§

Source

fn declaration(&self) -> Value

Returns the tool declaration that should be exposed to model providers.

The default implementation produces the standard ADK function-tool declaration (name, description, optional parameters, optional response). Provider-specific built-in tools may override this to attach additional metadata that the provider adapters understand.

§Example
fn declaration(&self) -> serde_json::Value {
    serde_json::json!({
        "name": self.name(),
        "description": self.description(),
        "x-adk-openai-tool": {
            "type": "web_search_2025_08_26"
        }
    })
}
Source

fn enhanced_description(&self) -> String

Returns an enhanced description that may include additional notes. For long-running tools, this includes a warning not to call the tool again if it has already returned a pending status. Default implementation returns the base description.

Source

fn is_long_running(&self) -> bool

Indicates whether the tool is a long-running operation. Long-running tools typically return a task ID immediately and complete the operation asynchronously.

Source

fn is_builtin(&self) -> bool

Indicates whether this tool is a built-in server-side tool (e.g., google_search, url_context).

Built-in tools are executed server-side by the model provider and should not be executed locally by the agent. The default implementation returns false.

Source

fn parameters_schema(&self) -> Option<Value>

Source

fn response_schema(&self) -> Option<Value>

Source

fn required_scopes(&self) -> &[&str]

Returns the scopes required to execute this tool.

When non-empty, the framework can enforce that the calling user possesses all listed scopes before dispatching execute(). The default implementation returns an empty slice (no scopes required).

§Example
fn required_scopes(&self) -> &[&str] {
    &["finance:write", "verified"]
}
Source

fn is_read_only(&self) -> bool

Indicates whether this tool performs no side effects. Read-only tools may be executed concurrently in Auto mode.

Source

fn is_concurrency_safe(&self) -> bool

Indicates whether this tool is safe for concurrent execution. Used by the Parallel strategy to validate dispatch safety.

Implementors§

Source§

impl Tool for ProtectedToolDyn

Source§

impl Tool for ScopedToolDyn

Source§

impl Tool for AddCookieTool

Source§

impl Tool for AlertTool

Source§

impl Tool for BackTool

Source§

impl Tool for ClearTool

Source§

impl Tool for ClickTool

Source§

impl Tool for CloseWindowTool

Source§

impl Tool for DeleteAllCookiesTool

Source§

impl Tool for DeleteCookieTool

Source§

impl Tool for DoubleClickTool

Source§

impl Tool for DragAndDropTool

Source§

impl Tool for ElementStateTool

Source§

impl Tool for EvaluateJsTool

Source§

impl Tool for ExtractAttributeTool

Source§

impl Tool for ExtractLinksTool

Source§

impl Tool for ExtractTextTool

Source§

impl Tool for FileUploadTool

Source§

impl Tool for FocusTool

Source§

impl Tool for ForwardTool

Source§

impl Tool for GetCookieTool

Source§

impl Tool for GetCookiesTool

Source§

impl Tool for HoverTool

Source§

impl Tool for ListWindowsTool

Source§

impl Tool for MaximizeWindowTool

Source§

impl Tool for MinimizeWindowTool

Source§

impl Tool for NavigateTool

Source§

impl Tool for NewTabTool

Source§

impl Tool for NewWindowTool

Source§

impl Tool for PageInfoTool

Source§

impl Tool for PageSourceTool

Source§

impl Tool for PressKeyTool

Source§

impl Tool for PrintToPdfTool

Source§

impl Tool for RefreshTool

Source§

impl Tool for RightClickTool

Source§

impl Tool for ScreenshotTool

Source§

impl Tool for ScrollTool

Source§

impl Tool for SelectTool

Source§

impl Tool for SetWindowSizeTool

Source§

impl Tool for SwitchToDefaultContentTool

Source§

impl Tool for SwitchToFrameTool

Source§

impl Tool for SwitchToParentFrameTool

Source§

impl Tool for SwitchWindowTool

Source§

impl Tool for TypeTool

Source§

impl Tool for WaitForElementTool

Source§

impl Tool for WaitForPageLoadTool

Source§

impl Tool for WaitForTextTool

Source§

impl Tool for WaitTool

Source§

impl Tool for RagTool

Source§

impl Tool for AgentTool

Source§

impl Tool for AnthropicBashTool20241022

Source§

impl Tool for AnthropicBashTool20250124

Source§

impl Tool for AnthropicTextEditorTool20250124

Source§

impl Tool for AnthropicTextEditorTool20250429

Source§

impl Tool for AnthropicTextEditorTool20250728

Source§

impl Tool for ExitLoopTool

Source§

impl Tool for FunctionTool

Source§

impl Tool for GeminiCodeExecutionTool

Source§

impl Tool for GeminiComputerUseTool

Source§

impl Tool for GeminiFileSearchTool

Source§

impl Tool for GoogleMapsTool

Source§

impl Tool for GoogleSearchTool

Source§

impl Tool for LoadArtifactsTool

Source§

impl Tool for OpenAIApplyPatchTool

Source§

impl Tool for OpenAICodeInterpreterTool

Source§

impl Tool for OpenAIComputerUseTool

Source§

impl Tool for OpenAIFileSearchTool

Source§

impl Tool for OpenAIImageGenerationTool

Source§

impl Tool for OpenAILocalShellTool

Source§

impl Tool for OpenAIMcpTool

Source§

impl Tool for OpenAIShellTool

Source§

impl Tool for OpenAIWebSearchTool

Source§

impl Tool for UrlContextTool

Source§

impl Tool for WebSearchTool

Source§

impl<S> Tool for StatefulTool<S>
where S: Send + Sync + 'static,

Source§

impl<T> Tool for ProtectedTool<T>
where T: Tool + Send + Sync,

Source§

impl<T> Tool for ScopedTool<T>
where T: Tool + Send + Sync,