> ## Documentation Index
> Fetch the complete documentation index at: https://alterxyz-a56768d7.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool

> This document details how plugins can reverse invoke Tool services within the Dify platform. It covers three types of tool invocation methods calling installed tools (Built-in Tool), calling Workflow as Tool, and calling custom tools (Custom Tool). Each method includes corresponding entry points and interface parameter descriptions.

Reverse invoking a Tool means that a plugin can call other tool-type plugins within the Dify platform. If you are unfamiliar with the basic concepts of reverse invocation, please first read [Reverse Invocation of Dify Services](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/9241-reverse-invocation.en.mdx).

Consider the following scenarios:

* A tool-type plugin has implemented a function, but the result is not as expected, requiring post-processing of the data.
* A task requires a web scraper, and you want the flexibility to choose the scraping service.
* You need to aggregate results from multiple tools, but it's difficult to handle using a Workflow application.

In these cases, you need to call other existing tools within your plugin. These tools might be from the marketplace, a self-built Workflow as a Tool, or a custom tool.

These requirements can be met by calling the `self.session.tool` field of the plugin.

### Calling Installed Tools

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

**Entry Point**

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

**Interface**

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

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

### Calling Workflow as Tool

For more information on Workflow as Tool, please refer to the [Tool Plugin documentation](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/0222-tool-plugin.en.mdx). (Note: Original link `/plugin_dev_zh/9223-tool.zh` does not exist in English list, linked to closest match).

**Entry Point**

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

**Interface**

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

In this case, `provider` is the ID of this tool, and `tool_name` is specified during the creation of the tool.

### Calling Custom Tool

**Entry Point**

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

**Interface**

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

Here, `provider` is the ID of this tool, and `tool_name` is the `operation_id` from the OpenAPI specification. If it doesn't exist, it's the `tool_name` automatically generated by Dify, which can be found on the tool management page.

## Related Resources

* [Reverse Invocation of Dify Services](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/9241-reverse-invocation.en.mdx) - Understand the fundamental concepts of reverse invocation
* [Reverse Invocation App](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/9242-reverse-invocation-app.en.mdx) - Learn how to call Apps within the platform
* [Reverse Invocation Model](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/9242-reverse-invocation-model.en.mdx) - Learn how to call model capabilities within the platform
* [Tool Plugin Development Guide](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/0211-getting-started-dify-tool.en.mdx) - Learn how to develop tool plugins
* [Advanced Tool Plugins](https://alterxyz-a56768d7.mintlify.site/plugin_dev_en/0222-tool-plugin.en.mdx) - Learn about advanced features like Workflow as Tool (Note: Original link `/plugin_dev_zh/9223-tool.zh` does not exist in English list, linked to closest match)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.