pub trait Tool:
Send
+ Sync
+ 'static {
type Output: ToolOutput + Serialize;
// Required methods
fn name(&self) -> &'static str;
fn description(&self) -> String;
fn input_schema(&self) -> &'static InputSchema;
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
parameters: Value,
context: &'life1 ExecutionContext,
) -> Pin<Box<dyn Future<Output = ToolResult<Self::Output>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided method
fn requires_approval(&self) -> bool { ... }
}Required Associated Types§
Sourcetype Output: ToolOutput + Serialize
type Output: ToolOutput + Serialize
The concrete output type for this tool
Required Methods§
Sourcefn name(&self) -> &'static str
fn name(&self) -> &'static str
A unique, stable identifier for the tool (e.g., “bash”, “edit_file”).
Sourcefn description(&self) -> String
fn description(&self) -> String
A description of what the tool does.
Sourcefn input_schema(&self) -> &'static InputSchema
fn input_schema(&self) -> &'static InputSchema
The JSON schema defining the tool’s expected input parameters.
Sourcefn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
parameters: Value,
context: &'life1 ExecutionContext,
) -> Pin<Box<dyn Future<Output = ToolResult<Self::Output>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
parameters: Value,
context: &'life1 ExecutionContext,
) -> Pin<Box<dyn Future<Output = ToolResult<Self::Output>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Executes the tool with the given parameters and execution context.
§Arguments
parameters- The parameters for the tool call, matching theinput_schema.context- Execution context containing cancellation token, working directory, etc.
§Returns
A ToolResult containing the typed output on success, or a ToolError on failure.
Provided Methods§
Sourcefn requires_approval(&self) -> bool
fn requires_approval(&self) -> bool
Indicates if this tool requires user approval before execution.
Tools that modify the filesystem or external state should return true. Default implementation returns true (requiring approval). Tools should override this to return false if they only read data.