---
title: "List the connections"
description: "The organization's integration connections (SURA, Visoft, its Agenda, custom servers) with the tools each offers an agent and their version.\n\n- **Scopes:** any one of `account:connections:read`, `account:connections:write`, `account:organizations:read`\n- **Credentials:** an API key, a client-credentials token or a person's access token\n- **Effect:** read-only; safe to retry\n- **Limits:** response up to 4 MB\n- **CLI:** `arbol account connections list` · **MCP tool:** `account_connections_list`"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.getarbol.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Account API › Connections

`GET /v1/account/connections`

The organization's integration connections (SURA, Visoft, its Agenda, custom servers) with the tools each offers an agent and their version.

- **Scopes:** any one of `account:connections:read`, `account:connections:write`, `account:organizations:read`
- **Credentials:** an API key, a client-credentials token or a person's access token
- **Effect:** read-only; safe to retry
- **Limits:** response up to 4 MB
- **CLI:** `arbol account connections list` · **MCP tool:** `account_connections_list`

## Authentication

Requires one of the following:

- `arbolHuman`, oauth2, scopes: `account:connections:read`
- `arbolHuman`, oauth2, scopes: `account:connections:write`
- `arbolHuman`, oauth2, scopes: `account:connections:operate`
- `arbolHuman`, oauth2, scopes: `account:organizations:read`
- `arbolMachine`, oauth2, scopes: `account:connections:read`
- `arbolMachine`, oauth2, scopes: `account:connections:write`
- `arbolMachine`, oauth2, scopes: `account:connections:operate`
- `arbolMachine`, oauth2, scopes: `account:organizations:read`
- `arbolApiKey`, http, header `Authorization`

## Query parameters

- `cursor` (`account.connections.list.query.cursor`; string, optional) — Opaque cursor returned by pageInfo; omit it to request the first page.
- `direction` (`account.connections.list.query.direction`; string, optional) — Direction to traverse the stable keyset ordering from the supplied cursor.
  - one of `"forward"`, `"backward"`; default `"forward"`
- `limit` (`account.connections.list.query.limit`; integer, optional) — Maximum items returned in one page. Defaults to 25; larger reads require another cursor.
  - min 1; max 100; default `25`
- `tag` (`account.connections.list.query.tag`; string, optional) — The tag.
  - one of `"postconsulta"`, `"facturacion"`

## Code samples

### cURL

```bash
curl https://api.getarbol.com/v1/account/connections \
  --header "Authorization: Bearer $ARBOL_API_KEY"
```

### TypeScript

```typescript
import { createClient } from "@arbol-ai/sdk";

const arbol = createClient({
  baseUrl: "https://api.getarbol.com",
  token: process.env.ARBOL_API_KEY!,
});

const { data } = await arbol.account.connections.list();
```

### Rust

```rust
use arbol_sdk::{types, Client, Credential};

let arbol = Client::new(Credential::ApiKey(std::env::var("ARBOL_API_KEY")?))?;

let data = arbol
    .account()
    .connections()
    .list(&types::AccountConnectionsListInput::default())
    .await?;
```

### CLI

```bash
arbol account connections list
```

### MCP

```json
{
  "name": "account_connections_list",
  "arguments": {}
}
```

## Responses

### 200

Successful operation.

#### Example

```json
{
  "success": true,
  "data": {
    "data": [
      {
        "id": "string",
        "kind": "arbol",
        "integration": "string",
        "name": "string",
        "status": "active",
        "tags": [
          "postconsulta"
        ],
        "summary": "string",
        "toolsVersion": "string",
        "tools": [
          {
            "runtimeInputs": [
              "connectionId"
            ],
            "name": "string",
            "operation": "string",
            "description": "string",
            "input": {},
            "effect": "read",
            "writesThrough": [
              "string"
            ],
            "rest": {
              "method": "GET",
              "path": "string"
            },
            "capabilities": {
              "match": "any",
              "scopes": [
                null
              ]
            }
          }
        ],
        "skills": [
          {
            "name": "string",
            "description": "string",
            "instructions": "string"
          }
        ],
        "server": {
          "transport": "http",
          "url": "string",
          "fileArgument": "string"
        },
        "errorCode": "string",
        "updatedAt": "string"
      }
    ],
    "object": "list",
    "pageInfo": {
      "hasNextPage": true,
      "hasPreviousPage": true,
      "nextCursor": "string",
      "previousCursor": "string"
    }
  },
  "error": null,
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.200.success`; boolean, required)
  - one of `true`
- `data` (`account.connections.list.response.200.data`; object, required)
  - `data` (`account.connections.list.response.200.data.data`; array<object>, required) — Items admitted by this resource contract within the verified organization.
    - `id` (`account.connections.list.response.200.data.data.id`; string, required) — A connection's id: con_ and 26 characters, stable and unique across the platform.
      - pattern `^con_[0-7][0-9a-hjkmnp-tv-z]{25}$`
    - `kind` (`account.connections.list.response.200.data.data.kind`; string, required)
      - one of `"arbol"`, `"custom"`
    - `integration` (`account.connections.list.response.200.data.data.integration`; string, required) — sura, visoft, agenda, or a custom server's name.
    - `name` (`account.connections.list.response.200.data.data.name`; string, required)
    - `status` (`account.connections.list.response.200.data.data.status`; string, required) — active: agents may use it. disabled: turned off. failed: agents cannot use it until Arbol's team reviews it.
      - one of `"active"`, `"disabled"`, `"failed"`
    - `summary` (`account.connections.list.response.200.data.data.summary`; string | null, required)
    - `toolsVersion` (`account.connections.list.response.200.data.data.toolsVersion`; string, required) — The release version (arbol) or the SHA-256 of the stored tool list (custom).
    - `tools` (`account.connections.list.response.200.data.data.tools`; array<object>, required)
      - `name` (`account.connections.list.response.200.data.data.tools.name`; string, required) — The tool name an agent calls: the MCP tool name, or the OpenAPI operationId.
        - minLength 1; maxLength 64
      - `description` (`account.connections.list.response.200.data.data.tools.description`; string, required)
        - maxLength 8000
      - `input` (`account.connections.list.response.200.data.data.tools.input`; object, required) — The tool's input, as a JSON Schema object.
      - `effect` (`account.connections.list.response.200.data.data.tools.effect`; string, required) — read changes nothing; write may.
        - one of `"read"`, `"write"`
      - `runtimeInputs` (`account.connections.list.response.200.data.data.tools.runtimeInputs`; array<string>, optional)
        - one of `"connectionId"`, `"channel"`, `"conversationUrl"`
      - `operation` (`account.connections.list.response.200.data.data.tools.operation`; string, optional) — The published operation (arbol only): sura.appointments.create.
        - maxLength 200
      - `writesThrough` (`account.connections.list.response.200.data.data.tools.writesThrough`; array<string>, optional) — The Arbol integrations this tool writes through (custom only): Raíz fences them jointly.
        - pattern `^[a-z][a-z0-9-]{1,63}$`
      - `rest` (`account.connections.list.response.200.data.data.tools.rest`; object, optional) — The REST request the tool is: its method and path template.
        - `method` (`account.connections.list.response.200.data.data.tools.rest.method`; string, required)
          - one of `"GET"`, `"POST"`, `"PUT"`, `"PATCH"`, `"DELETE"`
        - `path` (`account.connections.list.response.200.data.data.tools.rest.path`; string, required)
          - maxLength 1000
      - `capabilities` (`account.connections.list.response.200.data.data.tools.capabilities`; object, optional) — The scopes its caller needs (arbol only), as the release admits it: any one of them, or all.
        - `match` (`account.connections.list.response.200.data.data.tools.capabilities.match`; string, required)
          - one of `"any"`, `"all"`
        - `scopes` (`account.connections.list.response.200.data.data.tools.capabilities.scopes`; array<string>, required)
          - minLength 1; maxLength 128
    - `server` (`account.connections.list.response.200.data.data.server`; object | null, required) — The organization's own server, where its tools are called.
      - `transport` (`account.connections.list.response.200.data.data.server.transport`; string, required)
        - one of `"http"`, `"mcp"`
      - `url` (`account.connections.list.response.200.data.data.server.url`; string, required) — Where the tools' requests go: the HTTP server's base, or the MCP endpoint.
      - `fileArgument` (`account.connections.list.response.200.data.data.server.fileArgument`; string | null, required) — The tool argument that receives files, or null.
    - `errorCode` (`account.connections.list.response.200.data.data.errorCode`; string | null, required)
    - `updatedAt` (`account.connections.list.response.200.data.data.updatedAt`; string | null, required)
    - `tags` (`account.connections.list.response.200.data.data.tags`; array<string>, optional) — The workflow labels assigned to this connection.
      - one of `"postconsulta"`, `"facturacion"`
    - `skills` (`account.connections.list.response.200.data.data.skills`; array<object>, optional) — A custom server's skills: procedures its document publishes beside its tools.
      - `name` (`account.connections.list.response.200.data.data.skills.name`; string, required)
        - minLength 1; maxLength 64; pattern `^[a-z0-9]+(?:-[a-z0-9]+)*$`
      - `description` (`account.connections.list.response.200.data.data.skills.description`; string, required) — One line: what the procedure achieves and when to load it.
        - minLength 1; maxLength 1024; pattern `^[^\r\n]+$`
      - `instructions` (`account.connections.list.response.200.data.data.skills.instructions`; string, required) — The Markdown procedure.
        - minLength 1; maxLength 30000
  - `object` (`account.connections.list.response.200.data.object`; string, required) — Discriminator for a resource list response.
  - `pageInfo` (`account.connections.list.response.200.data.pageInfo`; object, required) — Opaque navigation cursors for this page’s stable keyset order.
    - `hasNextPage` (`account.connections.list.response.200.data.pageInfo.hasNextPage`; boolean, required) — Whether a later page exists in the current ordering.
    - `hasPreviousPage` (`account.connections.list.response.200.data.pageInfo.hasPreviousPage`; boolean, required) — Whether an earlier page exists in the current ordering.
    - `nextCursor` (`account.connections.list.response.200.data.pageInfo.nextCursor`; string | null, required) — Opaque cursor for the next page, or null when there is none.
    - `previousCursor` (`account.connections.list.response.200.data.pageInfo.previousCursor`; string | null, required) — Opaque cursor for the previous page, or null when there is none.
- `error` (`account.connections.list.response.200.error`; unknown, required)
- `metadata` (`account.connections.list.response.200.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.200.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 400

`INVALID_INPUT`: The request does not match the published schema.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "INVALID_INPUT",
    "message": "string",
    "retryable": false,
    "data": {
      "issues": [
        {
          "path": "string",
          "message": "string"
        }
      ]
    }
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.400.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.400.data`; unknown, required)
- `error` (`account.connections.list.response.400.error`; object, required) — The request does not match the published schema.
  - `code` (`account.connections.list.response.400.error.code`; string, required) — The failure code, stable across releases.
    - one of `"INVALID_INPUT"`
  - `message` (`account.connections.list.response.400.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.400.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`account.connections.list.response.400.error.data`; object, required)
    - `issues` (`account.connections.list.response.400.error.data.issues`; array<object>, optional)
      - `path` (`account.connections.list.response.400.error.data.issues.path`; string, required) — RFC 6901 JSON Pointer to the refused field; empty for the whole input.
        - maxLength 256
      - `message` (`account.connections.list.response.400.error.data.issues.message`; string, required)
        - maxLength 256
- `metadata` (`account.connections.list.response.400.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.400.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 401

`UNAUTHORIZED`: A valid access token is required.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.401.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.401.data`; unknown, required)
- `error` (`account.connections.list.response.401.error`; object, required) — A valid access token is required.
  - `code` (`account.connections.list.response.401.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UNAUTHORIZED"`
  - `message` (`account.connections.list.response.401.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.401.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`account.connections.list.response.401.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.401.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.401.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 403

`FORBIDDEN`: The token does not authorize this operation.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "FORBIDDEN",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.403.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.403.data`; unknown, required)
- `error` (`account.connections.list.response.403.error`; object, required) — The token does not authorize this operation.
  - `code` (`account.connections.list.response.403.error.code`; string, required) — The failure code, stable across releases.
    - one of `"FORBIDDEN"`
  - `message` (`account.connections.list.response.403.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.403.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`account.connections.list.response.403.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.403.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.403.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 429

`RATE_LIMITED`: The request rate limit was exceeded. Try again later.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "RATE_LIMITED",
    "message": "string",
    "retryable": true,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.429.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.429.data`; unknown, required)
- `error` (`account.connections.list.response.429.error`; object, required) — The request rate limit was exceeded. Try again later.
  - `code` (`account.connections.list.response.429.error.code`; string, required) — The failure code, stable across releases.
    - one of `"RATE_LIMITED"`
  - `message` (`account.connections.list.response.429.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.429.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `true`
  - `data` (`account.connections.list.response.429.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.429.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.429.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 500

`INTERNAL_ERROR`: The service could not complete the operation.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.500.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.500.data`; unknown, required)
- `error` (`account.connections.list.response.500.error`; object, required) — The service could not complete the operation.
  - `code` (`account.connections.list.response.500.error.code`; string, required) — The failure code, stable across releases.
    - one of `"INTERNAL_ERROR"`
  - `message` (`account.connections.list.response.500.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.500.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`account.connections.list.response.500.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.500.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.500.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 502

`OUTCOME_UNKNOWN`: The operation may have been applied; check its result before repeating it.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "OUTCOME_UNKNOWN",
    "message": "string",
    "retryable": false,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.502.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.502.data`; unknown, required)
- `error` (`account.connections.list.response.502.error`; object, required) — The operation may have been applied; check its result before repeating it.
  - `code` (`account.connections.list.response.502.error.code`; string, required) — The failure code, stable across releases.
    - one of `"OUTCOME_UNKNOWN"`
  - `message` (`account.connections.list.response.502.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.502.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `false`
  - `data` (`account.connections.list.response.502.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.502.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.502.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 503

`UPSTREAM_UNAVAILABLE`: The upstream service could not complete the request.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UPSTREAM_UNAVAILABLE",
    "message": "string",
    "retryable": true,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.503.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.503.data`; unknown, required)
- `error` (`account.connections.list.response.503.error`; object, required) — The upstream service could not complete the request.
  - `code` (`account.connections.list.response.503.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UPSTREAM_UNAVAILABLE"`
  - `message` (`account.connections.list.response.503.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.503.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `true`
  - `data` (`account.connections.list.response.503.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.503.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.503.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.

### 504

`UPSTREAM_TIMEOUT`: The upstream service did not respond before its deadline.

#### Example

```json
{
  "success": false,
  "data": null,
  "error": {
    "code": "UPSTREAM_TIMEOUT",
    "message": "string",
    "retryable": true,
    "data": {}
  },
  "metadata": {
    "requestId": "string"
  }
}
```

- `success` (`account.connections.list.response.504.success`; boolean, required)
  - one of `false`
- `data` (`account.connections.list.response.504.data`; unknown, required)
- `error` (`account.connections.list.response.504.error`; object, required) — The upstream service did not respond before its deadline.
  - `code` (`account.connections.list.response.504.error.code`; string, required) — The failure code, stable across releases.
    - one of `"UPSTREAM_TIMEOUT"`
  - `message` (`account.connections.list.response.504.error.message`; string, required) — What went wrong, for people; it never contains input values.
  - `retryable` (`account.connections.list.response.504.error.retryable`; boolean, required) — Whether repeating the same request may succeed.
    - one of `true`
  - `data` (`account.connections.list.response.504.error.data`; object, required) — No fields.
- `metadata` (`account.connections.list.response.504.metadata`; object, required) — What every answer carries besides its data or error.
  - `requestId` (`account.connections.list.response.504.metadata.requestId`; string, required) — Request correlation identifier, also sent as X-Request-Id.


Source: https://docs.getarbol.com/api/account/connections/list/index.md
