pub struct ToolDefinition {
pub tool_type: String,
pub function: Option<FunctionDefinition>,
pub allowed_callers: Option<Vec<String>>,
pub input_examples: Option<Vec<Value>>,
pub web_search: Option<Value>,
pub hosted_tool_config: Option<Value>,
pub shell: Option<ShellToolDefinition>,
pub grammar: Option<GrammarDefinition>,
pub strict: Option<bool>,
pub defer_loading: Option<bool>,
}Expand description
Universal tool definition that matches OpenAI/Anthropic/Gemini specifications Based on official API documentation from Context7
Fields§
§tool_type: StringThe type of tool: “function”, “apply_patch” (GPT-5.1), “shell” (GPT-5.1), or “custom” (GPT-5 freeform) Also supports provider-native and hosted tool types like:
- “tool_search” (OpenAI hosted tool search)
- “file_search” and “mcp” (OpenAI Responses hosted tools)
- Anthropic tool search revisions:
- “tool_search_tool_regex_20251119”, “tool_search_tool_bm25_20251119”
- “web_search_20260209” (and other web_search_* revisions)
- “code_execution_20250825” (and other code_execution_* revisions)
- “memory_20250818” (and other memory_* revisions)
function: Option<FunctionDefinition>Function definition containing name, description, and parameters Used for “function”, “apply_patch”, and “custom” types
allowed_callers: Option<Vec<String>>Restricts which Anthropic callers can invoke this tool programmatically.
input_examples: Option<Vec<Value>>Anthropic tool use examples used to teach complex tool behavior.
web_search: Option<Value>Provider-native web search configuration payload (e.g. Z.AI web_search tool).
hosted_tool_config: Option<Value>Provider-hosted Responses tool configuration for tool types like
file_search and mcp.
shell: Option<ShellToolDefinition>Shell tool configuration (GPT-5.1 specific) Describes shell command capabilities and constraints
grammar: Option<GrammarDefinition>Grammar definition for context-free grammar constraints (GPT-5 specific)
strict: Option<bool>When true and using Anthropic, mark the tool as strict for structured tool use validation
defer_loading: Option<bool>When true, the tool is deferred and only loaded when discovered via tool search (Anthropic advanced-tool-use beta) This enables dynamic tool discovery for large tool catalogs (10k+ tools)
Implementations§
Source§impl ToolDefinition
impl ToolDefinition
Sourcepub fn function(name: String, description: String, parameters: Value) -> Self
pub fn function(name: String, description: String, parameters: Value) -> Self
Create a new tool definition with function type
Sourcepub fn with_strict(self, strict: bool) -> Self
pub fn with_strict(self, strict: bool) -> Self
Set whether the tool should be considered strict (Anthropic structured tool use)
Sourcepub fn with_allowed_callers(self, allowed_callers: Vec<String>) -> Self
pub fn with_allowed_callers(self, allowed_callers: Vec<String>) -> Self
Restrict which Anthropic callers can invoke this tool programmatically.
Sourcepub fn with_input_examples(self, input_examples: Vec<Value>) -> Self
pub fn with_input_examples(self, input_examples: Vec<Value>) -> Self
Attach Anthropic tool use examples for better tool selection and argument shaping.
Sourcepub fn with_defer_loading(self, defer: bool) -> Self
pub fn with_defer_loading(self, defer: bool) -> Self
Set whether the tool should be deferred (Anthropic tool search)
Sourcepub fn tool_search(algorithm: ToolSearchAlgorithm) -> Self
pub fn tool_search(algorithm: ToolSearchAlgorithm) -> Self
Create a tool search tool definition for Anthropic’s advanced-tool-use beta Supports regex and bm25 search algorithms
Sourcepub fn hosted_tool_search() -> Self
pub fn hosted_tool_search() -> Self
Create an OpenAI hosted tool search definition.
Sourcepub fn anthropic_memory() -> Self
pub fn anthropic_memory() -> Self
Create an Anthropic native memory tool definition.
Sourcepub fn apply_patch(description: String) -> Self
pub fn apply_patch(description: String) -> Self
Create a new apply_patch tool definition (GPT-5.1 specific) The apply_patch tool lets models create, update, and delete files using VT Code structured diffs
Sourcepub fn custom(name: String, description: String) -> Self
pub fn custom(name: String, description: String) -> Self
Create a new custom tool definition for freeform function calling (GPT-5 specific) Allows raw text payloads without JSON wrapping
Sourcepub fn grammar(syntax: String, definition: String) -> Self
pub fn grammar(syntax: String, definition: String) -> Self
Create a new grammar tool definition for context-free grammar constraints (GPT-5 specific) Ensures model output matches predefined syntax
Sourcepub fn web_search(config: Value) -> Self
pub fn web_search(config: Value) -> Self
Create a provider-native web search tool definition.
Sourcepub fn google_maps(config: Value) -> Self
pub fn google_maps(config: Value) -> Self
Create a Gemini Google Maps grounding tool definition.
Sourcepub fn url_context(config: Value) -> Self
pub fn url_context(config: Value) -> Self
Create a Gemini URL Context tool definition.
Sourcepub fn file_search(config: Value) -> Self
pub fn file_search(config: Value) -> Self
Create an OpenAI Responses file search tool definition.
Sourcepub fn code_execution(config: Value) -> Self
pub fn code_execution(config: Value) -> Self
Create a Gemini Code Execution tool definition.
Sourcepub fn function_name(&self) -> &str
pub fn function_name(&self) -> &str
Get the function name for easy access
Sourcepub fn description(&self) -> &str
pub fn description(&self) -> &str
Get the description for easy access
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate that this tool definition is properly formed
Sourcepub fn is_tool_search(&self) -> bool
pub fn is_tool_search(&self) -> bool
Returns true if this is a tool search tool type
Sourcepub fn is_anthropic_web_search(&self) -> bool
pub fn is_anthropic_web_search(&self) -> bool
Returns true when the tool is an Anthropic native web search tool revision.
Sourcepub fn is_anthropic_code_execution(&self) -> bool
pub fn is_anthropic_code_execution(&self) -> bool
Returns true when the tool is an Anthropic native code execution tool revision.
Sourcepub fn is_anthropic_memory_tool(&self) -> bool
pub fn is_anthropic_memory_tool(&self) -> bool
Returns true when the tool is an Anthropic native memory tool revision.
Trait Implementations§
Source§impl Clone for ToolDefinition
impl Clone for ToolDefinition
Source§fn clone(&self) -> ToolDefinition
fn clone(&self) -> ToolDefinition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ToolDefinition
impl Debug for ToolDefinition
Source§impl<'de> Deserialize<'de> for ToolDefinition
impl<'de> Deserialize<'de> for ToolDefinition
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ToolDefinition
impl PartialEq for ToolDefinition
Source§fn eq(&self, other: &ToolDefinition) -> bool
fn eq(&self, other: &ToolDefinition) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ToolDefinition
impl Serialize for ToolDefinition
impl StructuralPartialEq for ToolDefinition
Auto Trait Implementations§
impl Freeze for ToolDefinition
impl RefUnwindSafe for ToolDefinition
impl Send for ToolDefinition
impl Sync for ToolDefinition
impl Unpin for ToolDefinition
impl UnsafeUnpin for ToolDefinition
impl UnwindSafe for ToolDefinition
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<T> CacheValue for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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> 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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more