Skip to main content

Tool

Trait Tool 

Source
pub trait Tool: Send + Sync {
    // Required methods
    fn name(&self) -> &'static str;
    fn description(&self) -> &'static str;
    fn schema(&self) -> Value;
    fn call<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        args: &'life1 Value,
        ctx: &'life2 ToolContext,
    ) -> Pin<Box<dyn Future<Output = AgentResult<Vec<Content>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;

    // Provided methods
    fn timeout_ms(&self) -> Option<u64> { ... }
    fn metadata(&self) -> ToolMetadata { ... }
}

Required Methods§

Source

fn name(&self) -> &'static str

Source

fn description(&self) -> &'static str

Human-readable description of what this tool does and when to use it.

Source

fn schema(&self) -> Value

JSON Schema for the tool’s input arguments (MCP inputSchema shape, without the provider envelope).

Source

fn call<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, args: &'life1 Value, ctx: &'life2 ToolContext, ) -> Pin<Box<dyn Future<Output = AgentResult<Vec<Content>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Provided Methods§

Source

fn timeout_ms(&self) -> Option<u64>

Timeout for this tool in milliseconds.

Returns Some(ms) to enforce a timeout, or None to use the framework’s default timeout from ToolConfig.default_tool_timeout_ms. Tools that need more or less time should override this method.

Source

fn metadata(&self) -> ToolMetadata

Machine-readable metadata for tool introspection.

The default implementation derives name and description from Tool::name and Tool::description, 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".

Implementors§