#[non_exhaustive]pub enum ToolError {
InvalidInput(String),
ExecutionFailed(String),
Timeout(u64),
ToolNotFound(String),
McpError {
code: i32,
message: String,
data: Option<Value>,
},
ControlAbort(String),
PermissionDenied(String),
}Expand description
Tool error type.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InvalidInput(String)
Input validation error.
ExecutionFailed(String)
Execution error.
Timeout(u64)
Timeout.
ToolNotFound(String)
Tool not found.
McpError
MCP transport-layer error (adapted via MCPToolAdapter), preserving code/message/data (P1-6).
Not silently downgraded to ExecutionFailed: the caller can distinguish connection drop /
method-not-found / argument errors by code.
Fields
ControlAbort(String)
Framework-level control abort (0.20.0 S3.1).
Distinct from ExecutionFailed: this is the framework
refusing to perform the tool call for control-flow reasons (e.g. the handoff
cycle / depth guard in lc-agents), not the tool running and failing. Callers must
propagate it hard — the agent cannot recover by re-planning, and softening it to
an observation would defeat the guard it exists to enforce.
PermissionDenied(String)
Authorization denied (0.22.4 A16): the framework refused to dispatch the tool call before it ran — the target server declares no unattended-execution policy (the MCP fail-closed default), its sandbox rejected the arguments, or its runtime approval gate denied this specific call.
Distinct from ExecutionFailed: the tool never
executed, so (unlike ControlAbort) feeding the reason
back as an observation lets the agent re-plan or ask for approval.
Trait Implementations§
Source§impl Error for ToolError
impl Error for ToolError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()