use crate::TypeError;
use async_trait::async_trait;
use serde_json::Value;
use std::fmt::Debug;
#[async_trait]
pub trait AsyncTool: Send + Sync + Debug {
fn name(&self) -> &str;
fn description(&self) -> &str;
fn parameter_schema(&self) -> Value;
async fn execute(&self, args: Value) -> Result<Value, TypeError>;
fn as_any(&self) -> Option<&dyn std::any::Any> {
None
}
}