> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended**:
> ```bash
> npx @scalekit-inc/cli setup
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# List tools available to a user (beta)

`GET /api/v1/tools/available`

This endpoint is in beta. Its request and response may change.

Lists every tool that a user's connected accounts can call, across all their connections. `identifier` is required. To narrow the list to chosen connections, providers or tools, use [List a user's scoped tools](https://docs.scalekit.com/agentkit/reference/tools/list-scoped-tools/).

**Query parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `identifier` | string | Yes | Your app's ID for the user, the same value you used when the user connected. Use a stable internal ID, not an email address. |
| `page_size` | integer | No | Maximum number of tools to return per page. |
| `page_token` | string | No | Token from a previous response for pagination. |

**Response (200)**

| Name | Type | Description |
| --- | --- | --- |
| `next_page_token` | string | Token for fetching the next page of tools. |
| `prev_page_token` | string | Token for fetching the previous page of tools. |
| `tools` | array of object | List of tools available for the identifier. |
| `tools.definition` | object | Tool definition in structured format. |
| `tools.id` | string | Unique ID of the tool. Immutable and read-only. |
| `tools.is_default` | boolean | Marks this tool as the default version for the combination. Read-only. |
| `tools.metadata` | object | Additional metadata about the tool. |
| `tools.provider` | string | Provider name (e.g. GOOGLE). Read-only. |
| `tools.tags` | array of string | Tags for categorization or filtering. |
| `tools.updated_at` | string | Timestamp when the tool was last updated. Read-only. |
| `total_size` | integer | Total number of available tools matching the query. |

**Errors**

- `400`: Invalid request - missing or malformed identifier
- `401`: Authentication required - missing or invalid access token
- `404`: Identifier not found

**Request**

```bash
curl -sS -G -X GET \
  "$SCALEKIT_ENVIRONMENT_URL/api/v1/tools/available" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "identifier=user_123" \
  --data-urlencode "page_size=2"
```

**Response**

```json
{
  "tools": [
    {
      "id": "tol_86147403291582051",
      "provider": "GMAIL",
      "definition": {
        "name": "gmail_fetch_mails",
        "description": "Fetch emails from a connected Gmail account using search filters. Requires a valid Gmail OAuth2 connection.",
        "schema_version": "1",
        "tool_version": "1",
        "input_schema": {
          "type": "object",
          "properties": {
            "query": {
              "type": [
                "string",
                "null"
              ],
              "description": "Search query string using Gmail's search syntax (e.g., 'is:unread from:user@example.com')"
            },
            "max_results": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Maximum number of emails to fetch"
            }
          }
        }
      },
      "is_default": true,
      "metadata": {},
      "tags": []
    },
    {
      "id": "tol_86147403291583327",
      "provider": "GMAIL",
      "definition": {
        "name": "gmail_send_message",
        "description": "Send an email message immediately from the authenticated Gmail account. Constructs a MIME message and sends it via the Gmail API.",
        "schema_version": "1",
        "tool_version": "1",
        "input_schema": {
          "type": "object",
          "properties": {
            "to": {
              "type": "string",
              "description": "The recipient email address(es) for the message."
            },
            "subject": {
              "type": "string",
              "description": "The subject line of the email."
            },
            "body": {
              "type": "string",
              "description": "The body content of the email."
            }
          },
          "required": [
            "to",
            "subject",
            "body"
          ]
        }
      },
      "is_default": true,
      "metadata": {},
      "tags": []
    }
  ],
  "next_page_token": "eyJhZnRlciI6InRvbF84NjE0NzQwMzI5MTU4MzMyNyJ9",
  "prev_page_token": "",
  "total_size": 48
}
```

**Python:** Call this endpoint over REST, as the example shows.

```python
import os

import requests

env_url = os.environ["SCALEKIT_ENVIRONMENT_URL"]
token = requests.post(
    f"{env_url}/oauth/token",
    data={
        "grant_type": "client_credentials",
        "client_id": os.environ["SCALEKIT_CLIENT_ID"],
        "client_secret": os.environ["SCALEKIT_CLIENT_SECRET"],
    },
).json()["access_token"]

response = requests.get(
    f"{env_url}/api/v1/tools/available",
    headers={"Authorization": f"Bearer {token}"},
    params={"identifier": "user_123", "page_size": 2},
)
response.raise_for_status()
result = response.json()
```

**Node.js SDK:** `scalekit.tools.listAvailableTools`

Lists tools that are available for a specific connected account identifier. Returns every tool the user's connected accounts can call, not only the ones you pass to your agent.

```ts
scalekit.tools.listAvailableTools(
  identifier: string,
  options?: {
    pageSize?: number;
    pageToken?: string;
  },
): Promise<ListAvailableToolsResponse>
```

Example:

```ts
const result = await scalekit.tools.listAvailableTools("user_123", {
  pageSize: 2,
});
```

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `identifier` | `string` | Yes | Your app's ID for the user, the same value you used when the user connected. Use a stable internal ID, not an email address. |
| `pageSize` | `number` | No | Maximum number of tools to return per page. |
| `pageToken` | `string` | No | Token from a previous `listAvailableTools` response for pagination. |

Returns `Promise<ListAvailableToolsResponse>`.


Part of [Tools](https://docs.scalekit.com/agentkit/reference/tools/) in the [AgentKit API reference](https://docs.scalekit.com/agentkit/reference/). Authentication: https://docs.scalekit.com/agentkit/reference/authentication.md. Errors and rate limits: https://docs.scalekit.com/agentkit/reference/errors.md. Pagination: https://docs.scalekit.com/agentkit/reference/pagination.md


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
