--- title: tool_manager sidebarTitle: tool_manager --- # `fastmcp.tools.tool_manager` ## Classes ### `ToolManager` Manages FastMCP tools. **Methods:** #### `has_tool` ```python has_tool(self, key: str) -> bool ``` Check if a tool exists. #### `get_tool` ```python get_tool(self, key: str) -> Tool ``` Get tool by key. #### `get_tools` ```python get_tools(self) -> dict[str, Tool] ``` Gets the complete, unfiltered inventory of local tools. #### `add_tool_from_fn` ```python add_tool_from_fn(self, fn: Callable[..., Any], name: str | None = None, description: str | None = None, tags: set[str] | None = None, annotations: ToolAnnotations | None = None, serializer: Callable[[Any], str] | None = None, exclude_args: list[str] | None = None) -> Tool ``` Add a tool to the server. #### `add_tool` ```python add_tool(self, tool: Tool) -> Tool ``` Register a tool with the server. #### `add_tool_transformation` ```python add_tool_transformation(self, tool_name: str, transformation: ToolTransformConfig) -> None ``` Add a tool transformation. #### `get_tool_transformation` ```python get_tool_transformation(self, tool_name: str) -> ToolTransformConfig | None ``` Get a tool transformation. #### `remove_tool_transformation` ```python remove_tool_transformation(self, tool_name: str) -> None ``` Remove a tool transformation. #### `remove_tool` ```python remove_tool(self, key: str) -> None ``` Remove a tool from the server. **Args:** - `key`: The key of the tool to remove **Raises:** - `NotFoundError`: If the tool is not found #### `call_tool` ```python call_tool(self, key: str, arguments: dict[str, Any]) -> ToolResult ``` Internal API for servers: Finds and calls a tool, respecting the filtered protocol path.