Oakallow MCP Server
Контроль разрешений во время выполнения, утверждений и аудита для исполнения инструментов искусственного интеллекта агентом.
Oakallow — это хостированный MCP-сервер. Он размещён между агентом и действиями, которые агент намерен выполнить, чтобы конкретное действие можно было проверить, потребовать утверждения со стороны человека при риске, авторизовать одноразовым подписанным токеном и зафиксировать в неизменяемом журнале аудита в момент исполнения.
-
Сайт: https://oakallow.com
-
MCP-эндпоинт:
https://api.oakallow.io/mcp(Streamable HTTP) -
Соответствие OAuth 2.1: https://oakallow.com/docs/oauth
-
Детали MCP-протокола: https://oakallow.com/docs/mcp
Назначение этого коннектора
Oakallow внедряет контрольную точку управления в рабочий процесс, который может использовать другие коннекторы. Агент выполняет исследовательскую работу (например, ищет учётную запись через другой коннектор), формирует рекомендацию и вызывает Oakallow, чтобы запросить утверждение для действия. Человек-утверждающий затем принимает решение в панели Oakallow или в мобильном приложении, под принудительной многофакторной аутентификацией.
Коннектор выступает как запрашивающий и проходной (pass-through), а не как принимающий решение:
-
Он может перечислять ваши инструменты, проверять разрешения, запрашивать утверждения и выдавать одноразовые токены запуска после одобрения действия.
-
Он не может одобрять или отклонять решение от имени человека. Решения принимаются на отдельной поверхности, связанной с MFA (панель управления), и никогда через коннектор.
Стандартные инструменты
| Инструмент | Назначение | Только чтение |
|---|---|---|
| list_my_tools | Перечисляет инструменты, доступные вошедшему в систему пользователю в указанной организации (аргумент org; см. ниже) | да |
| check_permission | Проверить, разрешён ли вызов данного инструмента, потребовать утверждения или заблокировать (принимает аргумент org; см. ниже) | да* |
| list_pending_approvals | Перечень запросов на утверждение, ожидающих решения человека | да |
| check_approval_status | Проверить статус ожидающего утверждения по номеру ссылки | да |
check_permissionвозвращает только вердикт для чтения — он не создаёт утверждение или ссылку. (Утверждение и егоREF-…создаются, когда вы вызываете ограниченный инструмент через oakallow.) По задумке у этого есть побочный эффект: проверка незарегистрированного инструмента автоматически создаёт у Oakallow черновую запись с ограниченным доступом для него (с консервативными настройками по умолчанию — fail-closed), чтобы итоговый вызов был управляемым и владелец мог обработать его в панели управления. Это сделано намеренно: неизвестный инструмент никогда не доверяется без явного контроля.
Выбор организации
У учётной записи Oakallow может быть несколько организаций, и каждая организация задаёт свои инструменты, правила разрешений, утверждающих и пути оповещения. Поэтому действие должно проверяться относительно правильной организации — именно она определяет, кого попросят утвердить и по каким правилам.
check_permission и list_my_tools принимают необязательный аргумент org — внешний идентификатор организации (например, org_oak_…). Правило:
-
Одна организация в вашей учётной записи: пропустите
org. Коннектор использует вашу единственную организацию. -
Более одной организации: укажите
org, назвав организацию, на которую нацелено действие. Если не указать её, вызов отклоняется с подсказкой, а не догадкой о том, какая организация будет выставлена к оплате.
Вы не просите коннектор перечислить ваши организации — такого инструмента нет. Вместо этого загрузите навык, ориентированный на конкретную организацию, из панели управления этой организации. Каждый навык организации имеет свой собственный id организации и сообщает агенту, какой org нужно передать. Устанавливайте по одному навыку на каждую организацию, в которой вы работаете; агент считывает соответствующий навык и передаёт правильный org при каждом вызове.
Коннектор авторизует переданный вами org в соответствии с вашей вошедшей идентичностью: вы можете работать только в той организации, в которой имеете право действовать (вы владелец/админ команды этой организации, или входите в группу одобрителей этой организации). Передача org, к которому у вас нет доступа, отклоняется — навык удобен, а не предоставляет доступ.
Ресурсы
Oakallow предоставляет два MCP-ресурса только для чтения. Это сигналы preflight, которые агент (или клиентский UI) может прочитать до направления выполнения через oakallow. Оба требуют область mcp:read, ни один не является вызовом инструмента и за них не взимается плата.
| Ресурс | Возвращает | Только чтение |
|---|---|---|
| oakallow://status | Жизнеспособность коннектора для текущей сессии: статус, конечная точка, версия сервера, версия протокола и выданные области доступа. Успешное чтение само по себе является доказательством валидности сессии. Не возвращает идентификацию аккаунта или PII. | да |
| oakallow://credits | Определяет, будет ли текущий управляемый вызов финансироваться организацией, к которой привязана эта сессия, чтобы агент мог быстро прекратить запрос на утверждение, которое не может быть оплачено. | да |
oakallow://credits ограничен идентификатором платёжной организации вызывающего и определяет её таким же образом, как и реальный вызов инструмента, поэтому результат can_fund: true действительно означает, что итоговое утверждение будет финансировано (включая резервы команды). Он возвращает только булево значение can_fund и имя организации и её внешний id. Навык намеренно не раскрывает балансы: суммы в долларах доступны только владельцу команды в панели управления, а не через коннектор. Если сессия относится к ни одной организации или к более чем одной, возвращается can_fund: false с причиной, а не догадкой, какая организация будет оплачена.
Подключение
Нет анонимного доступа. Учетная запись Oakallow — предпосылка для подключения, и конечная точка принимает два типа учётных данных: интерактивный OAuth 2.1 (PKCE) для клиента, управляемого человеком, или bearer-токен вида oak_agent_ для автономного агента (см. ниже раздел Автономные агенты).
Для пути OAuth, ориентированного на пользователя, добавьте https://api.oakallow.io/mcp в качестве настраиваемого коннектора в ваш MCP-клиент (Claude, Claude Desktop, Cowork, ChatGPT или любой MCP-хост на базе Streamable HTTP). Вы будете перенаправлены на вход в Oakallow и подтверждение запрошенных областей доступа:
mcp:read: перечислять инструменты, просматривать ожидающие утверждения, проверять разрешения, читать активность.mcp:write: создавать запросы на утверждение и выдавать токены запуска.
С этим ничего не настраивается вручную: неавторизованный запрос вернёт 401 с заголовком WWW-Authenticate, указывающим на защищённые ресурсы авторизации по RFC 9728 (/.well-known/oauth-protected-resource), поэтому MCP-клиент, соответствующий спецификации, обнаружит сервер авторизации и автоматически выполнит OAuth-поток.
См. examples/ для конфигурации Claude Desktop и пошаговой записи OAuth-потока.
Автономные агенты (bearer-токен oak_agent_)
OAuth предполагает, что человек может выполнить интерактивный вход. Автономный агент, работающий самостоятельно, аутентифицируется на том же https://api.oakallow.io/mcp с заранее выданным bearer-токеном: Authorization: Bearer oak_agent_.... Конечная точка проверяет наличие bearer-токена oak_agent_ перед OAuth-провайдером, поэтому экран запроса согласия или интерактивный вход не требуются.
Идентичность агента привязана к одной организации, может отправлять и запрашивать разрешения, но никогда не утверждать; ограничена по скорости для каждого идентификатора и хранится только в виде SHA-256 хеша (сырой токен показывается только при создании). Создайте одного агента через страницу Accounts → Agents на панели (для владельца/администратора). Подробная модель доступна на oakallow.io/info/agents.
Навык
SKILL.md — это навык агента, который документирует, когда и как использовать инструменты Oakallow: запрос, утверждение, опрос и выполнение, как формулировать причины утверждения и что делать с verdict'ами allowed, requires_approval или blocked. Укажите ваш агент на этот навык, чтобы корректно управлять действиями инструментов.
Триггерные подсказки
PROMPT.md содержит короткие готовые к копированию строчки, которые можно вставить в системный промпт вашего агента, чтобы он действительно обращался к навыку. Навык — это процедура; триггер-подсказка — это то, что заставляет агента действовать. Есть три варианта: от «ограждать каждый вызов инструмента» до «оградить набор инструментов, названный клиентом», плюс встроенный пример формата запроса.
Как работает управляемый вызов
-
Агент вызывает Oakallow со своими учётными данными.
-
Oakallow определяет правило разрешения для конкретного инструмента, тенанта и ресурса.
-
Если действие разрешено, Oakallow выдает одноразовый, подписанный HMAC-токен запуска.
-
Если требуется утверждение, создаётся запрос на утверждение и уведомляется человек. Вызов агента удерживается до решения по заявке или до её истечения.
-
Агент использует токен запуска для выполнения действия; Oakallow записывает неизменяемую строку аудита, фиксирующую результат.
Oakallow находится вне пути выполнения. Он управляет и фиксирует то, что было передано; он не запускает ваши инструменты и не принимает параметры инструментов сверх обезличенной по PII причине.
Лицензия
См. LICENSE.
История изменений
См. CHANGELOG.md.
© Islemonics Studios LLC. Патент находится на стадии регистрации.