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

# Налаштування та ключі

> Генеруйте pam_mkey для desktop-агентів і налаштуйте браузерний OAuth для Claude web та ChatGPT.

Memory MCP підтримує два шляхи автентифікації:

| Тип клієнта      | Auth                          | Приклади                                          |
| ---------------- | ----------------------------- | ------------------------------------------------- |
| Desktop / скрипт | Статичний API ключ `pam_mkey` | Cursor, Claude Code, VS Code, термінал            |
| Браузерний LLM   | OAuth 2.1 + PKCE Bearer token | Claude web (`claude.ai`), ChatGPT (`chatgpt.com`) |

## Статичні API ключі агента (desktop)

### Формат ключа

```
Authorization: pam_mkey_<key>
```

Передавайте це значення в заголовку `Authorization` у **кожному** запиті на `/v1/mcp/memory`, включно з handshake-методами (`initialize`, `tools/list`).

<Warning>
  Ніколи не комітьте API ключі в репозиторій. Негайно оновіть ключ, якщо він розкритий.
</Warning>

### Генерація ключа

1. Відкрийте **[Setup](https://pam.harmix.ai/setup)** у застосунку PAM
2. Оберіть **Desktop app or script**
3. Підключіть джерела пам'яті та дочекайтесь readiness
4. Натисніть **Generate key** і одразу скопіюйте повний секрет

Після виходу зі сторінки секрет більше не відображається. У dashboard видно лише префікс ключа, доки ви його не оновите.

### Один активний ключ на акаунт

На акаунт може бути лише один активний ключ. Під час ротації:

* Видається новий `pam_mkey_<key>`
* Попередній ключ негайно відкликається
* Потрібно оновити конфігурацію MCP-клієнта

### Ротація або відкликання

| Дія             | Де                                                | API                       |
| --------------- | ------------------------------------------------- | ------------------------- |
| Оновити ключ    | [Access](https://pam.harmix.ai/access-management) | `POST /v1/dev/rotate-key` |
| Відкликати ключ | [Access](https://pam.harmix.ai/access-management) | `POST /v1/dev/revoke-key` |

І дії в dashboard, і REST endpoints потребують **PAM access JWT**, а не `pam_mkey`.

## Браузерний OAuth (Claude web і ChatGPT)

Браузерні конектори **не** використовують `pam_mkey`. Вони автентифікуються OAuth access token після підтвердження `memory:read` на екрані згоди PAM. Access token короткоживучий (близько 1 години); сумісні клієнти автоматично оновлюють його через rotating refresh token (близько 30 днів) з `grant_type=refresh_token` на `POST /v1/oauth/token`.

1. Додайте **MCP server URL** у налаштуваннях браузерного LLM-конектора (скопіюйте з [Setup](https://pam.harmix.ai/setup))
2. Пройдіть OAuth-вхід (PAM відкриється в браузері, якщо потрібно)
3. Натисніть **Allow** на екрані згоди — наприклад, *«chatgpt.com зможе читати вашу PAM memory»*
4. Вас перенаправить назад у браузерний LLM

Вставте лише MCP URL. ChatGPT і Claude знаходять OAuth через dynamic client registration (DCR):

* `GET /.well-known/oauth-protected-resource`
* `GET /.well-known/oauth-authorization-server`
* `POST /v1/oauth/register` (DCR)

Детальні кроки — у [Налаштуванні клієнта](/docs/uk/client-setup).

## Статус MCP verified

Підключення позначається як **MCP verified** лише після першого **успішного** виклику `retrieve_memory` (`isError: false`).

Заблоковані виклики — quota exceeded, entitlement required, invalid arguments, memory not ready — **не** підтверджують підключення.

## Практики безпеки

* Зберігайте `pam_mkey` у змінних середовища або secret manager
* Оновлюйте ключі, коли співробітник залишає команду або ключ міг бути поширений
* OAuth-токени непрозорі, обмежені scope `memory:read`, з одноразовою ротацією refresh token (повторне використання відкликає все підключення)
* Відкликайте браузерне підключення в **[Access → Connected apps](https://pam.harmix.ai/access-management)**
* **Cancel** на екрані згоди PAM повертає на сайт запитувача без доступу

<Info>
  Секрет статичного ключа показується один раз під час видачі або ротації. Браузерним конекторам не потрібен попередньо виданий OAuth client ID.
</Info>
