pub trait Tool: Send + Sync {
// Required methods
fn name(&self) -> &'static str;
fn definition(&self) -> Value;
fn call<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
args: &'life1 Value,
ctx: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = AgentResult<ToolOutput>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
// Provided methods
fn as_framework_tool(&self) -> Option<&dyn FrameworkTool> { ... }
fn metadata(&self) -> ToolMetadata { ... }
}Required Methods§
fn name(&self) -> &'static str
fn definition(&self) -> Value
fn call<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
args: &'life1 Value,
ctx: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = AgentResult<ToolOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Provided Methods§
Sourcefn as_framework_tool(&self) -> Option<&dyn FrameworkTool>
fn as_framework_tool(&self) -> Option<&dyn FrameworkTool>
Return Some(&dyn FrameworkTool) if this tool is a framework-internal tool
that needs engine infrastructure injection (EventBus).
Default returns None — user-defined tools need not override this.
Sourcefn metadata(&self) -> ToolMetadata
fn metadata(&self) -> ToolMetadata
Machine-readable metadata for tool introspection.
The default implementation extracts name and description from
Tool::name and Tool::definition, sets origin to "custom",
and leaves requirements empty. Tool authors are encouraged to
override this to provide an accurate origin and version.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".