Skip to main content

Overview

The swarms.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
Raises:
  • FunctionSchemaError: If function schema conversion fails
  • ToolValidationError: 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
Raises:
  • ToolValidationError: If response validation fails
  • ToolExecutionError: If tool execution fails
  • ToolNotFoundError: If specified tool is not found

convert_funcs_into_tools

Convert all functions in the tools list into OpenAI function calling format.
This method processes all functions in the tools list, validates them for proper documentation and type hints, and converts them to OpenAI schemas. Raises:
  • ToolValidationError: If tools are not properly configured
  • ToolDocumentationError: If functions lack required documentation
  • ToolTypeHintError: 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 Decorator

A decorator function that generates an OpenAI function schema from a Python function.
str
default:"None"
The name of the OpenAI function
str
default:"None"
The description of the OpenAI function
bool
default:"True"
Whether to return the schema as a dictionary
bool
default:"True"
Enable verbose logging
bool
default:"False"
Whether to return the schema as a string
bool
default:"False"
Whether to return the schema as YAML
Note: name and description are declared with a default of None, but the decorator asserts both are strings at call time — omitting either raises AssertionError. Also, calling the decorated function executes the original function body but returns its generated schema (not the function’s return value).

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.
Removed in favor of MCPManager. The standalone functions previously documented here — get_mcp_tools_sync, aget_mcp_tools, execute_tool_call_simple, get_tools_for_multiple_mcp_servers, and execute_multiple_tools_on_multiple_mcp_servers — no longer exist, along with the swarms.tools.mcp_client_tools module.Full migration notes, including the two behavioral differences, are in the MCPManager reference.

Additional Utilities

A few other utilities are exported from swarms.tools for less common use cases:
  • base_model_to_json — Convert a Pydantic BaseModel class to a formatted JSON schema string.
  • ToolStorage / tool_registry — Register and look up tools by name in a shared, process-wide tool registry.
  • create_computer_use_tools — Create a dict of pre-configured computer-use tools (file read/write, shell execution) scoped to a workspace directory. from swarms.tools import create_computer_use_tools.
  • execute_multiple_tools_on_multiple_mcp_servers / execute_multiple_tools_on_multiple_mcp_servers_sync — Execute several tool calls across several MCP servers concurrently (async and sync variants).

Exceptions

The tools module defines several custom exceptions:

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

  1. Always add type hints: Functions must have type hints for reliable schema generation
  2. Include docstrings: Comprehensive docstrings improve tool descriptions
  3. Validate inputs: Use Pydantic models for complex input validation
  4. Handle errors: Wrap tool execution in try-catch blocks
  5. Use caching: BaseTool caches expensive operations for performance
  6. Enable verbose mode: During development, enable verbose logging to debug issues

Example: Complete Tool Setup