Prebuilt tools

Drop-in tools your crew agent’s LLM can call, like web search.

View as Markdown

smallestai.tools gives your crew agent ready-made tools its LLM can call. Each tool plugs into the crew’s ToolRegistry in one line and is also usable on its own. The third-party libraries they wrap install as optional extras, imported lazily.

Web search (Exa)

$pip install "smallestai[exa]" # reads EXA_API_KEY

Register it inside a crew node so the model can call it:

1from smallestai.tools import ExaSearchTool
2
3class Assistant(OutputCrewNode):
4 def __init__(self):
5 super().__init__(name="assistant")
6 self.tool_registry = ToolRegistry()
7 self.tool_registry.discover(self) # your own @function_tools
8 ExaSearchTool().register(self.tool_registry) # + web search, one line
9 self.tool_schemas = self.tool_registry.get_schemas()

Or call it directly, outside a crew:

1results = await ExaSearchTool().run(query="latest voice AI news")

Discovering tools

1from smallestai.tools import list_tools, get_tool
2
3list_tools() # {"exa_search": ExaSearchTool, ...}
4get_tool("exa_search") # the tool class by name

If the extra isn’t installed

Importing smallestai.tools never pulls a third-party library. Running a tool without its extra raises a clear error, for example pip install "smallestai[exa]". The registry is built to add more tools over time; they follow the same pattern.