---
title: "List connected accounts"
method: GET
path: "/v1/integrations/accounts"
tags: ["integrations"]
---

# List connected accounts

`GET /v1/integrations/accounts`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/integrations/accounts`
- Auth: HTTP bearer

The tenant's connected accounts with status, sharing scope, and connector. Filter by scope.

## Query parameters

- `scope` string

## Headers

- `X-Tenant-Id` string, nullable

## Response `200`

Successful Response

- ConnectedAccountsResponse
  - `items` ConnectedAccountSummary[], required
    - `id` string, uuid, required
    - `provider` string, required
    - `app_slug` string, nullable
    - `app_name` string, nullable
    - `app_logo` string, nullable
    - `display_name` string, nullable
    - `managed` boolean
    - `external_account_id` string, nullable
    - `label` string, nullable
    - `status_code` string, required
    - `visibility_code` 'team' | 'personal', required: Who, within a tenant, may use a connected account's tools. ``TEAM``: any actor in the tenant. ``PERSONAL``: only the actor who connected it. Designed to extend to a ``GROUP`` scope later (the Groups model is already on main).
    - `team_only_connect` boolean
    - `connected_by` string, nullable
    - `connected_by_email` string, nullable
    - `account_identity` string, nullable
    - `enabled_tool_count` integer
    - `needs_reconnect` boolean
    - `awaiting_site_choice` boolean
    - `reconnect_reason_code` string, nullable
    - `last_synced_at` string, date-time, nullable
    - `created_at` string, date-time, required
    - `is_mine` boolean
    - `shared_with_me` boolean
    - `shared_by_name` string, nullable
    - `shared_with_count` integer
    - `can_share_with_people` boolean
    - `can_manage` boolean
    - `can_disconnect` boolean
    - `can_reconsent` boolean
    - `can_reconnect_key` boolean
    - `can_share_to_team` boolean
    - `can_make_private` boolean
    - `share_to_team_unavailable_reason` 'already_shared' | 'managed_account' | 'scope_sealed_at_connect' | 'missing_edit_permission' | 'not_your_account' | 'mcp_share_needs_reconnect': Why ``can_share_to_team`` is False for this caller. Null when it is True. The value names the first term of that answer that fails, in the order ``account_capabilities`` states: - ``already_shared``: the connection is shared with the whole workspace already. - ``managed_account``: Patricia manages the connection. The visibility write refuses a managed connection for every caller. - ``scope_sealed_at_connect``: the connection's credential is sealed to the sharing it was connected with (``core.scope_sealed_credentials``), and both visibility writes refuse to move it in either direction. Its refusal message carries the remedy, ``core.scope_sealed_credentials.SCOPE_SEALED_REMEDY``. - ``missing_edit_permission``: the caller does not hold ``integrations:edit``. - ``not_your_account``: the caller is not the person who connected this private connection. - ``mcp_share_needs_reconnect``: the MCP server's saved sign-in would stop its tools working once the server is shared, so the write refuses with the ``MCP_SHARE_NEEDS_RECONNECT`` error code. Reconnecting the server is the remedy.
    - `make_private_unavailable_reason` 'already_private' | 'managed_account' | 'scope_sealed_at_connect' | 'missing_edit_permission' | 'owner_unknown' | 'oauth_owner_mismatch': Why ``can_make_private`` is False for this caller. Null when it is True. The value names the first term of that answer that fails, in the order ``account_capabilities`` states: - ``already_private``: the connection is private already. - ``managed_account``: Patricia manages the connection. The visibility write refuses a managed connection for every caller. - ``scope_sealed_at_connect``: the connection's credential is sealed to the sharing it was connected with (``core.scope_sealed_credentials``), and both visibility writes refuse to move it in either direction. Its refusal message carries the remedy, ``core.scope_sealed_credentials.SCOPE_SEALED_REMEDY``. - ``missing_edit_permission``: the caller does not hold ``integrations:edit``. - ``owner_unknown``: the connection records nobody it could become private to. An MCP server needs a ``connected_by_user_id``; another connection needs an email or actor. - ``oauth_owner_mismatch``: the MCP server signs in with OAuth, and its saved sign-in is not the recorded connector's: there is none, it names another user or no membership, or its membership is not the one the connector's owner contract resolves. The narrowing's grant check refuses it with the ``MCP_OAUTH_OWNER_MISMATCH`` error code. Disconnecting the server and having that person connect it again as private is the remedy.
  - `pending` PendingConnectionSummary[]
    - `id` string, uuid, required
    - `provider` string, required
    - `app_slug` string, nullable
    - `app_name` string, nullable
    - `state` string, required
    - `message` string, required
    - `created_at` string, date-time, required
    - `expires_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
