Skip to main content

Tool

Trait Tool 

Source
pub trait Tool: Send + Sync {
Show 13 methods // Required methods fn name(&self) -> &'static str; fn description(&self) -> &'static str; fn input_schema(&self) -> Value; fn call<'life0, 'life1, 'async_trait>( &'life0 self, input: Value, ctx: &'life1 ToolContext, ) -> Pin<Box<dyn Future<Output = Result<ToolResult, ToolError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; // Provided methods fn prompt(&self) -> String { ... } fn is_read_only(&self) -> bool { ... } fn is_concurrency_safe(&self) -> bool { ... } fn is_destructive(&self) -> bool { ... } fn is_enabled(&self) -> bool { ... } fn max_result_size_chars(&self) -> usize { ... } fn check_permissions<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, input: &'life1 Value, checker: &'life2 PermissionChecker, ) -> Pin<Box<dyn Future<Output = PermissionDecision> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait { ... } fn validate_input(&self, _input: &Value) -> Result<(), String> { ... } fn get_path(&self, _input: &Value) -> Option<PathBuf> { ... }
}
Expand description

The core trait that all tools must implement.

Tools are the bridge between the LLM’s intentions and the local environment. Each tool defines its input schema (for the LLM), permission requirements, concurrency behavior, and execution logic.

Required Methods§

Source

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

Unique tool name used in API tool_use blocks.

Source

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

Human-readable description sent to the LLM.

Source

fn input_schema(&self) -> Value

JSON Schema for the tool’s input parameters.

Source

fn call<'life0, 'life1, 'async_trait>( &'life0 self, input: Value, ctx: &'life1 ToolContext, ) -> Pin<Box<dyn Future<Output = Result<ToolResult, ToolError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Execute the tool with validated input.

Provided Methods§

Source

fn prompt(&self) -> String

System prompt instructions for this tool.

Source

fn is_read_only(&self) -> bool

Whether this tool only reads state (no mutations).

Source

fn is_concurrency_safe(&self) -> bool

Whether this tool can safely run concurrently with other tools. Read-only tools are typically concurrency-safe.

Source

fn is_destructive(&self) -> bool

Whether this tool is destructive (deletes data, force-pushes, etc.).

Source

fn is_enabled(&self) -> bool

Whether this tool is currently enabled in the environment.

Source

fn max_result_size_chars(&self) -> usize

Maximum result size in characters before truncation.

Source

fn check_permissions<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, input: &'life1 Value, checker: &'life2 PermissionChecker, ) -> Pin<Box<dyn Future<Output = PermissionDecision> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Check permissions for executing this tool with the given input.

Source

fn validate_input(&self, _input: &Value) -> Result<(), String>

Validate tool input before execution.

Source

fn get_path(&self, _input: &Value) -> Option<PathBuf>

Extract a file path from the input, if applicable (for permission matching).

Implementors§