# Tool

When encountering the following scenarios:

* A tool-type plugin has implemented a feature but hasn't met expectations and needs data reprocessing
* A task requires web crawling and needs flexibility in choosing crawling services
* Need to combine multiple tools' return results but difficult to handle through Workflow applications

In these cases, you need to request other implemented tools within the plugin. These tools could be from marketplace tool plugins, self-built Workflow as a Tool, or custom tools.

The above requirements can be achieved by using the plugin's `self.session.tool` field.

### **Request Installed Tools**

Allows plugins to request various tools installed in the current Workspace, including other tool-type plugins.

**Entry**:

```python
self.session.tool
```

**Endpoint**:

```python
def invoke_builtin_tool(
    self, provider: str, tool_name: str, parameters: dict[str, Any]
) -> Generator[ToolInvokeMessage, None, None]:
    pass
```

Where `provider` is the plugin ID plus tool provider name, formatted like `langgenius/google/google`, `tool_name` is the specific tool name, and `parameters` are the parameters passed to that tool.

### **Request Workflow as Tool**

For more information about Workflow as Tool, please refer to this documentation.

**Entry**:

```python
self.session.tool
```

**Endpoint**:

```python
def invoke_workflow_tool(
    self, provider: str, tool_name: str, parameters: dict[str, Any]
) -> Generator[ToolInvokeMessage, None, None]:
    pass
```

Here, `provider` is the tool's ID, and `tool_name` is required when creating the tool.

**Request Custom Tool**

**Entry**:

```python
self.session.tool
```

**Endpoint**:

```python
def invoke_api_tool(
    self, provider: str, tool_name: str, parameters: dict[str, Any]
) -> Generator[ToolInvokeMessage, None, None]:
    pass
```

Here, `provider` is the tool's ID, `tool_name` is the `operation_id` in OpenAPI. If it doesn't exist, it's the `tool_name` automatically generated by Dify, which can be seen in the tool management page.
