> **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

`GET /api/v1/tools`

Lists the tools in your environment, filtered by connection, provider, tool name or a text query. Use it for every tool in the environment; for the tools one user can call, use [List a user's scoped tools](https://docs.scalekit.com/agentkit/reference/tools/list-scoped-tools/). With `filter.summary` set to `true`, the response has only `tool_names`.

**Query parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `filter.connected_account_id` | string | No | Connected account ID. Alternative to filter.identifier + filter.connector for directly identifying the connected account whose custom MCP tools should be included. |
| `filter.connector` | string | No | The connection name, as shown in **AgentKit** > **Connections**. |
| `filter.identifier` | string | No | 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. |
| `filter.organization_id` | string | No | Organization ID to scope the connected account lookup. |
| `filter.provider` | string | No | The app, such as `GMAIL`. |
| `filter.query` | string | No | Full-text search query to match tools by name or description (e.g., "gmail get attachment"). |
| `filter.summary` | boolean | No | Return only tool names instead of full tool details. |
| `filter.tool_name` | array of string | No | Filter by one or more tool names. |
| `filter.user_id` | string | No | User ID to scope the connected account lookup. |
| `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. |
| `tool_names` | array of string | List of tool names, returned when filter.summary is true. |
| `tools` | array of object | List of tools, returned when filter.summary is false or omitted. |
| `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 tools matching the query. |

**Errors**

- `400`: Invalid request - malformed filter or pagination parameters
- `401`: Authentication required - missing or invalid access token

**Request**

```bash
curl -sS -G -X GET \
  "$SCALEKIT_ENVIRONMENT_URL/api/v1/tools" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "filter.connector=gmail" \
  --data-urlencode "filter.summary=true" \
  --data-urlencode "page_size=5"
```

**Response**

```json
{
  "tool_names": [
    "gmail_batch_delete_messages",
    "gmail_batch_modify_messages",
    "gmail_create_draft",
    "gmail_create_filter",
    "gmail_create_label"
  ],
  "next_page_token": "eyJhZnRlciI6InRvbF84NjE0NzQwMzI5MTU4MzMyNyJ9",
  "prev_page_token": "",
  "total_size": 48
}
```

**Python SDK:** `scalekit_client.actions.list_tools`

Lists the tools in your environment. Pass `connection_name` and `identifier`, or `connected_account_id`, to include the custom MCP tools of that connected account.

```python
scalekit_client.actions.list_tools(
    connection_name: Optional[str] = None,
    identifier: Optional[str] = None,
    provider: Optional[str] = None,
    tool_name: Optional[List[str]] = None,
    query: Optional[str] = None,
    organization_id: Optional[str] = None,
    user_id: Optional[str] = None,
    connected_account_id: Optional[str] = None,
    summary: Optional[bool] = None,
    page_size: Optional[int] = None,
    page_token: Optional[str] = None,
) -> ListToolsResponse
```

Example:

```python
result = scalekit_client.actions.list_tools(
    connection_name="gmail",
    summary=True,
    page_size=5,
)
```

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `connection_name` | `Optional[str]` | No | The connection name, as shown in **AgentKit** > **Connections**. |
| `identifier` | `Optional[str]` | No | 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. |
| `provider` | `Optional[str]` | No | The app, such as `GMAIL`. |
| `tool_name` | `Optional[List[str]]` | No | Filter to specific tool names |
| `query` | `Optional[str]` | No | Free-form search query across tool metadata |
| `organization_id` | `Optional[str]` | No | Organization ID to scope the connected-account lookup |
| `user_id` | `Optional[str]` | No | User ID to scope the connected-account lookup |
| `connected_account_id` | `Optional[str]` | No | Direct connected account ID, as an alternative to identifier + connection_name |
| `summary` | `Optional[bool]` | No | Set to `True` to return only tool names, in `tool_names`. |
| `page_size` | `Optional[int]` | No | Maximum number of tools to return per page |
| `page_token` | `Optional[str]` | No | Token from a previous response for pagination |

Returns `ListToolsResponse`: A page of tools, or of tool names with `summary`.

**Node.js SDK:** `scalekit.actions.listTools`

Lists the tools in your environment. Pass `connectionName` and `identifier`, or `connectedAccountId`, to include the custom MCP tools of that connected account.

```ts
scalekit.actions.listTools(
  params?: {
    connectionName?: string;
    identifier?: string;
    provider?: string;
    toolName?: string[];
    query?: string;
    organizationId?: string;
    userId?: string;
    connectedAccountId?: string;
    summary?: boolean;
    pageSize?: number;
    pageToken?: string;
  },
): Promise<ListToolsResult>
```

Example:

```ts
const result = await scalekit.actions.listTools({
  connectionName: "gmail",
  summary: true,
  pageSize: 5,
});
```

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `connectionName` | `string` | No | The connection name, as shown in **AgentKit** > **Connections**. |
| `identifier` | `string` | No | 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. |
| `provider` | `string` | No | The app, such as `GMAIL`. |
| `toolName` | `string[]` | No | Filter by one or more tool names |
| `query` | `string` | No | Full-text search query to match tools by name or description (e.g., "gmail get attachment") |
| `organizationId` | `string` | No | Organization ID to scope the connected account lookup |
| `userId` | `string` | No | User ID to scope the connected account lookup |
| `connectedAccountId` | `string` | No | Connected account ID. Alternative to filter.identifier + filter.connector for directly identifying the connected account whose custom MCP tools should be included. |
| `summary` | `boolean` | No | Set to `true` to return only tool names, in `toolNames`. |
| `pageSize` | `number` | No | Maximum number of tools to return per page |
| `pageToken` | `string` | No | Token from a previous response for pagination |

Returns `Promise<ListToolsResult>`.

**Used in**

- [Build a Mastra agent with Scalekit AgentKit tools](https://docs.scalekit.com/cookbooks/mastra-agentkit/)
- [Mint session tokens](https://docs.scalekit.com/agentkit/mcp/session-tokens/)


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 |
