use crate::state::MemoryState; use async_trait::async_trait; use serde_json::Value; use std::sync::Arc; #[async_trait] pub trait McpTool: Send + Sync { /// The unique name of the tool fn name(&self) -> &'static str; /// The JSON schema for the tool fn schema(&self) -> Value; /// Execute the tool with the given arguments async fn execute(&self, args: Value, state: Arc) -> Result; }