---
title: "List my connected AI tools"
method: GET
path: "/v1/ai-tools"
tags: ["ai-tools"]
---

# List my connected AI tools

`GET /v1/ai-tools`

## 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/ai-tools`
- Auth: HTTP bearer

List the AI tools the signed-in teammate connected to Patricia in this workspace. Only live connections are listed.

## Headers

- `X-Tenant-Id` string, nullable

## Response `200`

Successful Response

- AiToolConnectionList
  - `items` AiToolConnection[], required
    - `id` string, uuid, required: The connection id. Pass it to disconnect the tool.
    - `tool` 'claude' | 'chatgpt' | 'grok' | 'cursor' | 'local_app' | 'other', required: Which AI tool holds a connection to Patricia, read from the address its sign-in returns to.
    - `connected_at` string, date-time, required: When the person approved the connection.
    - `last_used_at` string, date-time, nullable, required: The last time the tool renewed its access to Patricia. A tool renews only when it uses Patricia after its short-lived access ends, so this can lag behind real use. Null until the first renewal.
    - `last_import_at` string, date-time, nullable, required: When the tool last asked for onboarding import prompts through this connection. This does not mean an import finished. Null when it never asked.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `404`: Not found
- `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)
