use async_trait::async_trait;
pub use rmcp::model::Tool;
use serde_json::Value;
#[derive(Debug, thiserror::Error)]
pub enum ToolError {
#[error("Tool error: {0}")]
Error(String),
}
#[async_trait]
pub trait ToolService: Send + Sync {
async fn list_tools(&self) -> Result<Vec<Tool>, ToolError>;
async fn call_tool(&self, name: String, args: Value) -> Result<Value, ToolError>;
}