use thiserror::Error;
#[derive(Debug, Error)]
pub enum McpError {
#[error("not found: {0}")]
NotFound(String),
#[error("forbidden: data source '{0}' is not exposed by this deployment")]
Forbidden(String),
#[error("invalid argument: {0}")]
InvalidArgument(String),
#[error("unauthenticated: {0}")]
Unauthenticated(String),
#[error("backend unavailable: {0}")]
Unavailable(String),
#[error("internal: {0}")]
Internal(String),
#[error("filter: {0}")]
Filter(#[from] crate::mcp::filter::FilterError),
#[error("cosmos: {0}")]
Cosmos(#[from] crate::cosmos::CosmosError),
}