Skip to main content

ToolCall

Struct ToolCall 

Source
pub struct ToolCall { /* private fields */ }
Expand description

One tool call as a hook sees it: the request as the client sent it, with the injected arguments (session_id, agent_id, context) still in it, and what the SDK knows about the client and the transport. Clones are independent copies.

Its Debug output hides credentials: the values of the authorization, proxy-authorization, cookie and set-cookie headers print as "<redacted>", and the request context prints as its request ID and whether it holds HTTP request parts.

let options = Options::default().event_tags(|call: ToolCall| async move {
    let mut tags = serde_json::Map::new();
    tags.insert("tool".into(), call.tool_name().into());
    Ok(Some(tags))
});

Implementations§

Source§

impl ToolCall

Source

pub fn tool_name(&self) -> &str

The name of the tool.

Source

pub fn arguments(&self) -> Option<&JsonObject>

The arguments as the client sent them, the session_id, agent_id and context that the SDK added to the tool’s listing included.

Source

pub fn meta(&self) -> &JsonObject

The _meta of the request; empty when the client sent none.

Source

pub fn headers(&self) -> Option<&Map<String, Value>>

The HTTP headers of the request, every header included, authorization and cookie too: names in lower case, in byte order, after the names that are array indexes in numeric order; values trimmed of leading and trailing HTTP whitespace; the values of a repeated name joined in arrival order with ", " ("; " for cookie), except set-cookie, which keeps only its last value; a value that is not UTF-8 read lossily. None on a transport without HTTP, such as stdio.

Source

pub fn client_name(&self) -> Option<&str>

The name the client gave itself, when it did.

Source

pub fn client_version(&self) -> Option<&str>

The version the client gave itself, when it did.

Source

pub fn protocol_version(&self) -> Option<&str>

The protocol version the request names in its _meta, when it does.

Source

pub fn transport_session_id(&self) -> Option<&str>

The mcp-session-id of the streamable HTTP session; None on stdio and on a stateless HTTP server.

Source

pub fn request_context(&self) -> &RequestContext<RoleServer>

The rmcp request context of the call, for anything the other getters do not give. The SDK has not yet added its CallContext to it.

Trait Implementations§

Source§

impl Clone for ToolCall

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ToolCall

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more