pub trait Tool:
Send
+ Sync
+ 'static {
// Required methods
fn name(&self) -> String;
fn description(&self) -> String;
fn input_schema(&self) -> Value;
fn call(&self, input: Option<Value>) -> Result<CallToolResponse>;
// Provided method
fn as_definition(&self) -> ToolDefinition { ... }
}