> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# ListToolsProviders

# Package: appTools

# Namespace: ToolsHost

# Method link: https://dev.wix.com/docs/api-reference/app-management/app-tools/tools-host/list-tools-providers.md

## Permission Scopes:
Invoke App Tools: SCOPE.APP_TOOLS.INVOKE

## Introduction

Retrieves the tools that the apps installed on the site in context expose to AI agents, grouped by app.

An app is returned when it has a Tools Provider extension and at least one activated tool in its App Tools
extension; up to 30 apps are returned. Each tool carries the JSON Schema of its request and the site's
settings for it, so an agent can build a valid payload for Invoke Tool and skip tools the site owner disabled.
The site is determined by the call's identity, not by a parameter.

---

## REST API

### Schema

```
 Method: listToolsProviders
 Description: Retrieves the tools that the apps installed on the site in context expose to AI agents, grouped by app.  An app is returned when it has a Tools Provider extension and at least one activated tool in its App Tools extension; up to 30 apps are returned. Each tool carries the JSON Schema of its request and the site's settings for it, so an agent can build a valid payload for Invoke Tool and skip tools the site owner disabled. The site is determined by the call's identity, not by a parameter.
 URL: https://www.wixapis.com/_api/tools-host/v1/list-tools-providers
 Method: POST
 Return type: ListToolsProvidersResponse
  - name: toolsProviders | type: array<ToolsProvider> | description: Installed apps that expose tools, each with its activated tools and the site's settings. Up to 30 apps are returned.  | validation: maxItems 30
     - name: appId | type: string | description: GUID of the app that provides the tools. Specify it as `providerAppId` when calling Invoke Tool.  | validation: format GUID
     - name: appName | type: string | description: Name of the app that provides the tools.  | validation: minLength 0, maxLength 100
     - name: tools | type: array<Tool> | description: Activated tools the app exposes.  | validation: maxItems 100
        - name: methodName | type: string | description: Method name of the tool, unique within its app. Specify it as `methodName` when calling Invoke Tool.  | validation: minLength 1, maxLength 50
        - name: description | type: string | description: What the tool does and when to use it, as written by the app.  | validation: minLength 1, maxLength 1000
        - name: requestSchema | type: object | description: JSON Schema of the tool's request payload. Build the `payload` for Invoke Tool from it.  
        - name: responseSchema | type: object | description: JSON Schema of the tool's response payload, when the app declares one.  
        - name: settings | type: ToolSettings | description: The site's settings for this tool.  Default: enabled, when the site owner hasn't changed it.  
           - name: enabled | type: boolean | description: Whether the tool is enabled for the site. When `false`, Invoke Tool rejects it.  Default: `true`  
        - name: displayName | type: string | description: Display name of the tool.  Returned only when the app declares one.  | validation: minLength 2, maxLength 50
     - name: settings | type: ProviderSettings | description: The site's settings for the app's tools as a whole.  Default: enabled, when the site owner hasn't changed it.  
        - name: enabled | type: boolean | description: Whether the app's tools are enabled for the site. When `false`, Invoke Tool rejects every tool of the app.  Default: `true`  


```

### Examples

### List the tools of the apps installed on a site
Retrieves the installed apps that expose tools, with each tool's request schema and the site's settings. The site is set by the wix-site-id header when calling with an API key.

```curl
curl -X POST \
'https://www.wixapis.com/_api/tools-host/v1/list-tools-providers' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-H 'wix-site-id: <SITE_ID>' \
-d '{}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.appTools.toolsHost.listToolsProviders()
 Description: Retrieves the tools that the apps installed on the site in context expose to AI agents, grouped by app.  An app is returned when it has a Tools Provider extension and at least one activated tool in its App Tools extension; up to 30 apps are returned. Each tool carries the JSON Schema of its request and the site's settings for it, so an agent can build a valid payload for Invoke Tool and skip tools the site owner disabled. The site is determined by the call's identity, not by a parameter.
 Return type: PROMISE<ListToolsProvidersResponse>
  - name: toolsProviders | type: array<ToolsProvider> | description: Installed apps that expose tools, each with its activated tools and the site's settings. Up to 30 apps are returned.  | validation: maxItems 30
     - name: appId | type: string | description: GUID of the app that provides the tools. Specify it as `providerAppId` when calling Invoke Tool.  | validation: format GUID
     - name: appName | type: string | description: Name of the app that provides the tools.  | validation: minLength 0, maxLength 100
     - name: tools | type: array<Tool> | description: Activated tools the app exposes.  | validation: maxItems 100
        - name: methodName | type: string | description: Method name of the tool, unique within its app. Specify it as `methodName` when calling Invoke Tool.  | validation: minLength 1, maxLength 50
        - name: description | type: string | description: What the tool does and when to use it, as written by the app.  | validation: minLength 1, maxLength 1000
        - name: requestSchema | type: object | description: JSON Schema of the tool's request payload. Build the `payload` for Invoke Tool from it.  
        - name: responseSchema | type: object | description: JSON Schema of the tool's response payload, when the app declares one.  
        - name: settings | type: ToolSettings | description: The site's settings for this tool.  Default: enabled, when the site owner hasn't changed it.  
           - name: enabled | type: boolean | description: Whether the tool is enabled for the site. When `false`, Invoke Tool rejects it.  Default: `true`  
        - name: displayName | type: string | description: Display name of the tool.  Returned only when the app declares one.  | validation: minLength 2, maxLength 50
     - name: settings | type: ProviderSettings | description: The site's settings for the app's tools as a whole.  Default: enabled, when the site owner hasn't changed it.  
        - name: enabled | type: boolean | description: Whether the app's tools are enabled for the site. When `false`, Invoke Tool rejects every tool of the app.  Default: `true`  


```

### Examples

### List the tools of the apps installed on a site
Retrieves the installed apps that expose tools, with each tool's request schema and the site's settings. The site comes from the client's identity.

```javascript
import { toolsHost } from "@wix/app-tools";

async function listToolsProviders() {
  const response = await toolsHost.listToolsProviders();
}

/* Promise resolves to:
 * {
 *   "toolsProviders": [
 *     {
 *       "appId": "6c4d3373-2afc-46a6-b7e0-9b98a43df146",
 *       "appName": "Shipping Helper",
 *       "tools": [
 *         {
 *           "methodName": "getPackageTracking",
 *           "description": "Retrieves the current shipping status of a package given its tracking number. Returns the current status, the last known location, and the estimated delivery date.",
 *           "requestSchema": {
 *             "type": "object",
 *             "required": ["trackingNumber"],
 *             "properties": {
 *               "trackingNumber": { "type": "string", "description": "The carrier tracking number for the package, e.g. '1Z999AA10123456784'." }
 *             }
 *           },
 *           "responseSchema": {
 *             "type": "object",
 *             "properties": {
 *               "trackingNumber": { "type": "string" },
 *               "status": { "type": "string" },
 *               "location": { "type": "string" },
 *               "estimatedDelivery": { "type": "string" }
 *             }
 *           },
 *           "settings": { "enabled": true },
 *           "displayName": "Package tracking"
 *         }
 *       ],
 *       "settings": { "enabled": true }
 *     },
 *     {
 *       "appId": "dc3d45f5-4f88-4f7f-92f9-f00c98ed745d",
 *       "appName": "Global Pricing Helper",
 *       "tools": [
 *         {
 *           "methodName": "convertCurrency",
 *           "description": "Converts a price from one currency to another using the current rate. Supported currencies: USD, EUR, GBP, ILS, CAD, JPY.",
 *           "requestSchema": {
 *             "type": "object",
 *             "required": ["amount", "from", "to"],
 *             "properties": {
 *               "amount": { "type": "number", "description": "The price to convert, e.g. 49.9" },
 *               "from": { "type": "string", "description": "ISO currency code of the price, e.g. USD" },
 *               "to": { "type": "string", "description": "ISO currency code to convert to, e.g. EUR" }
 *             }
 *           },
 *           "settings": { "enabled": true },
 *           "displayName": "Convert currency"
 *         }
 *       ],
 *       "settings": { "enabled": true }
 *     }
 *   ]
 * }
 */

```

### listToolsProviders (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { toolsHost } from '@wix/app-tools';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { toolsHost },
  // Include the auth strategy and host as relevant
});


async function listToolsProviders() {
  const response = await myWixClient.toolsHost.listToolsProviders();
};
```

---