use crate::result::ToolResult;
use crate::schema::ToolSchema;
use erio_core::ToolError;
use serde_json::Value;
#[async_trait::async_trait]
pub trait Tool: Send + Sync {
fn name(&self) -> &str;
fn description(&self) -> &str;
fn schema(&self) -> ToolSchema;
async fn execute(&self, params: Value) -> Result<ToolResult, ToolError>;
}