# List tools with schemas for a tool router session (v3.1)

**Documentation:** /reference/api-reference/tool-router/getToolRouterSessionBySessionIdTools

Returns tools available in a tool router session with complete schemas. Results are paginated; use `next_cursor` to fetch the next page.

---

## GET `/api/v3.1/tool_router/session/{session_id}/tools`

**Endpoint:** `https://backend.composio.dev/api/v3.1/tool_router/session/{session_id}/tools`

**Summary:** List tools with schemas for a tool router session (v3.1)

Returns tools available in a tool router session with complete schemas. Results are paginated; use `next_cursor` to fetch the next page.

### Authentication

**ApiKeyAuth** - API Key in `header` header `x-api-key` OR **UserApiKeyAuth** - API Key in `header` header `x-user-api-key`

### Path Parameters

- `session_id` (string (toolRouterSessionId)) *(required)*: Tool router session ID

### Query Parameters

- `limit` (integer): Number of items per page, max allowed is 500
- `cursor` (string): Cursor for pagination. The cursor is a base64 encoded string of the page and limit. The page is the page number and the limit is the number of items per page. The cursor is used to paginate through the items. The cursor is not required for the first page.

### Responses

#### 200 - Successfully retrieved paginated tools with their complete schemas.

**Response Schema:**

- `items` (array<object>) *(required)*
  - Array items:
    - `slug` (string) *(required)*: Unique identifier for the tool
    - `name` (string) *(required)*: Human-readable display name of the tool
    - `description` (string) *(required)*: Detailed explanation of the tool's functionality and purpose
    - `toolkit` (object) *(required)*
      - `slug` (string) *(required)*: Unique identifier of the parent toolkit
      - `name` (string) *(required)*: Human-readable name of the parent toolkit
      - `logo` (string) *(required)*: URL to the toolkit logo image
    - `input_parameters` (object) *(required)*: Schema definition of required input parameters for the tool
      - `[key: string]` (any)
    - `no_auth` (boolean) *(required)*: Indicates if the tool can be used without authentication
    - `available_versions` (array<string>) *(required)*: List of all available versions for this tool
    - `version` (string) *(required)*: Current version of the tool
    - `output_parameters` (object) *(required)*: Schema definition of return values from the tool
      - `[key: string]` (any)
    - `scopes` (array<string>) *(required)*: List of scopes associated with the tool
    - `scope_requirements` (object,null) *(required)*: Structured scope requirements for the tool. Null means the tool is legacy and only exposes flat scopes.
    - `tags` (array<string>) *(required)*: List of tags associated with the tool for categorization and filtering
    - `human_description` (string): Human-friendly description of the tool, if available
    - `is_deprecated` (boolean) *(required)*: Indicates if this tool is deprecated and may be removed in the future
    - `deprecated` (object) *(required)*
      - `displayName` (string) *(required)*: The display name of the tool
      - `version` (string) *(required)*: Current version identifier of the tool
      - `available_versions` (array<string>) *(required)*: List of all available versions for this tool
      - `is_deprecated` (boolean) *(required)*: Indicates if this tool is deprecated and may be removed in the future
      - `toolkit` (object) *(required)*
        - `logo` (string) *(required)*: URL to the toolkit logo image
- `next_cursor` (string,null)
- `total_pages` (number) *(required)*
- `current_page` (number) *(required)*
- `total_items` (number) *(required)*

**Example Response:**

```json
{
  "items": [
    {
      "slug": "string",
      "name": "string",
      "description": "string",
      "toolkit": {
        "slug": "...",
        "name": "...",
        "logo": "..."
      },
      "input_parameters": {
        "key": "..."
      },
      "no_auth": true,
      "available_versions": [
        "..."
      ],
      "version": "string",
      "output_parameters": {
        "key": "..."
      },
      "scopes": [
        "..."
      ],
      "scope_requirements": null,
      "tags": [
        "..."
      ],
      "human_description": "string",
      "is_deprecated": true,
      "deprecated": {
        "displayName": "...",
        "version": "...",
        "available_versions": "...",
        "is_deprecated": "...",
        "toolkit": "..."
      }
    }
  ],
  "next_cursor": null,
  "total_pages": 1,
  "current_page": 1,
  "total_items": 1
}
```

#### 400 - Bad request

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 401 - Unauthorized

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 404 - Session not found

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 500 - Internal server error

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

### Example cURL Request

```bash
curl -X GET "https://backend.composio.dev/api/v3.1/tool_router/session/string/tools" \
  -H "x-api-key: YOUR_API_KEY"
```