pub struct StaticSurface { /* private fields */ }Expand description
A surface whose tool list never changes, backed by an McpToolExecutor.
The simple case, kept simple: callers with nothing dynamic to say hand over
a Vec and an executor and are done.
§Fidelity
McpToolExecutor returns Result<Value, RunnerError>, which has two
states where a tool call has three. A tool that RAN and declined can only
come back as Err, so this adapter reports it as a refusal — correct — but
the only machine-readable thing an Err carries is its
ErrorKind, which is preserved as
structuredContent.error_kind. A caller that needs to hand the model a
richer refusal — an error code, a pending id, a provider to reconnect —
should implement ToolSurface directly and build its own
ToolOutcome. That is not a limitation of the host; it is the shape of
the narrower trait.
Implementations§
Source§impl StaticSurface
impl StaticSurface
Sourcepub const fn new(
tools: Vec<McpToolDefinition>,
executor: Arc<dyn McpToolExecutor>,
) -> Self
pub const fn new( tools: Vec<McpToolDefinition>, executor: Arc<dyn McpToolExecutor>, ) -> Self
Wrap a fixed tool list and its executor.
Trait Implementations§
Source§impl ToolSurface for StaticSurface
impl ToolSurface for StaticSurface
Source§fn list_tools<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Vec<McpToolDefinition>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_tools<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Vec<McpToolDefinition>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn call<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
arguments: &'life2 Value,
) -> Pin<Box<dyn Future<Output = ToolOutcome> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn call<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
arguments: &'life2 Value,
) -> Pin<Box<dyn Future<Output = ToolOutcome> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
list_tools is already refused by the
host, so this is only reached for a tool the surface just advertised.Auto Trait Implementations§
impl !RefUnwindSafe for StaticSurface
impl !UnwindSafe for StaticSurface
impl Freeze for StaticSurface
impl Send for StaticSurface
impl Sync for StaticSurface
impl Unpin for StaticSurface
impl UnsafeUnpin for StaticSurface
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more