Overview
Theswarms.tools module provides a comprehensive toolkit for function calling, schema conversion, and tool management. It enables seamless integration with OpenAI-style function calling, MCP (Model Context Protocol) tools, and Pydantic-based schema validation.
BaseTool
A comprehensive tool management system for function calling, schema conversion, and execution.Constructor
bool
default:"None"
Enable detailed logging output
List[type[BaseModel]]
default:"None"
List of Pydantic models to manage
bool
default:"None"
Enable automatic validation checks
bool
default:"None"
Enable automatic tool execution
List[Callable]
default:"None"
List of callable functions to manage
str
default:"None"
System prompt for tool operations
Dict[str, Callable]
default:"None"
Mapping of function names to callables
List[Dict[str, Any]]
default:"None"
List of dictionary representations of tool schemas
Methods
func_to_dict
Convert a callable function to OpenAI function calling schema dictionary.Callable
required
The function to convert
Dict[str, Any]
OpenAI function calling schema dictionary
FunctionSchemaError: If function schema conversion failsToolValidationError: If function validation fails
base_model_to_dict
Convert a Pydantic BaseModel to OpenAI function calling schema.type[BaseModel]
required
The Pydantic model class to convert
bool
default:"False"
Whether to return string output format
Union[dict[str, Any], str]
OpenAI function calling schema dictionary or JSON string
execute_tool
Execute a tool based on a response string.str
required
JSON response string containing tool execution details
Callable
Result of the tool execution
ToolValidationError: If response validation failsToolExecutionError: If tool execution failsToolNotFoundError: If specified tool is not found
convert_funcs_into_tools
Convert all functions in the tools list into OpenAI function calling format.ToolValidationError: If tools are not properly configuredToolDocumentationError: If functions lack required documentationToolTypeHintError: If functions lack required type hints
execute_tool_by_name
Search for a tool by name and execute it with the provided response.str
required
The name of the tool to execute
str
required
JSON response string containing execution parameters
Any
The result of executing the tool
Tool Registry
swarms.tools exports a small registry pair: the ToolStorage class, which holds named tool callables, and the tool_registry decorator, which registers a function into a ToolStorage instance at import time.
There is no
tool decorator in swarms.tools. To hand a plain Python function to an agent, pass it directly via Agent(tools=[my_function]) — the framework generates the OpenAI schema from the function’s type hints and docstring. Use tool_registry only when you also want name-based lookup through a ToolStorage.ToolStorage
str
default:"None"
Name of the registry
str
default:"None"
Description of the registry
bool
default:"None"
Enable detailed logging output
List[Callable]
default:"None"
Initial list of tool functions
Methods
tool_registry
ToolStorage
default:"None"
The storage instance to register the decorated function in
Callable
A decorator that registers the function and returns a logging wrapper around it
Utility Functions
get_openai_function_schema_from_func
Convert a Python function to OpenAI function calling schema.base_model_to_openai_function
Convert a Pydantic BaseModel to OpenAI function schema.scrape_tool_func_docs
Extract documentation from a tool function.tool_find_by_name
Find a tool by name in a list of tools.MCP Tools Integration
MCP integration is handled by a single class,MCPManager. Point it at one or more servers and it manages transport, authentication, tool discovery, caching, and routing each call to the server that owns the tool.
MCPManager and MCPFileTokenStorage are exported from swarms.tools. See the MCPManager reference for the full API, and the MCP integration guide for using it from an agent.
Additional Utilities
A few other symbols are exported fromswarms.tools for less common use cases:
multi_base_model_to_openai_function— Convert several PydanticBaseModelclasses to a combined OpenAI function schema.Function/ToolFunction— Pydantic models describing an OpenAI function and a tool wrapping one.load_basemodels_if_needed/get_load_param_if_needed_function— Coerce raw dict arguments into the Pydantic models a tool’s signature declares.get_parameters/get_required_params— Extract the JSON-schema parameter block and the list of required parameter names from a callable.ToolStorage/tool_registry— Register and look up tools by name; see Tool Registry above.MCPManager/MCPFileTokenStorage— MCP transport, auth, discovery, and routing; see the MCPManager reference.
Exceptions
BaseTool raises the exceptions below. They are defined in swarms.tools.base_tool and are not re-exported from swarms.tools, so import them from the module directly:
BaseToolError.
BaseToolError
Base exception class for all BaseTool related errors.ToolValidationError
Raised when tool validation fails.ToolExecutionError
Raised when tool execution fails.ToolNotFoundError
Raised when a requested tool is not found.FunctionSchemaError
Raised when function schema conversion fails.ToolDocumentationError
Raised when tool documentation is missing or invalid.ToolTypeHintError
Raised when tool type hints are missing or invalid.Best Practices
- Always add type hints: Functions must have type hints for reliable schema generation
- Include docstrings: Comprehensive docstrings improve tool descriptions
- Validate inputs: Use Pydantic models for complex input validation
- Handle errors: Wrap tool execution in try-catch blocks
- Use caching: BaseTool caches expensive operations for performance
- Enable verbose mode: During development, enable verbose logging to debug issues