Перейти до вмісту

Інтеграція Agentfy ​

Межа runtime і делегований контекст нижче — вимоги до реалізації. Відомості про готовність відображають перевірку 2 жовтня 2026, не поточний стан. Для транспорту модуля й записів використовуйте REST 1.0.

Три межі повноважень ​

text
Runtime Agentfy ──(1) ключ агента + (2) грант розмови──▶ MCP Store Deputy
                                                          │ права, аудит
                                                          │
                 (3) підпис підключення, ніколи (1) чи (2) ┘
                                                          ▼
                                            REST API модуля OpenCart
МежаДоказХто видає, хто зберігаєДійсний лише вНіколи
Агент → Store DeputyAuthorization: Bearer sdak_…, один на створеного агентаStore Deputy; Agentfy тримає як секрет командиMCP Store DeputyНе пересилається в магазин, не показується моделі, не вважається повноваженням людини
Людина чи покупецьX-SD-Context: sdcg_…, один на розмовуStore Deputy; Agentfy несе його для кожної розмовиMCP Store Deputy, для цього агента й тредуНе має власних прав; не переживає відкликаного членства
Store Deputy → магазинHMAC секретом підключення, в обидва бокиStore Deputy і модуль, під час підключенняМодуль одного цього магазинуНе залишає серверів Store Deputy чи магазину

Storefront-сесія покупця — четвертий секрет, і вона ніколи не залишає магазин. Модуль перевіряє її й передає Store Deputy лише непрозоре посилання (див. покупці).

MCP Store Deputy ​

Транспорт. Одна адреса {STORE_DEPUTY_API}/mcp, Streamable HTTP, версія протоколу 2025-06-18 (саме її сьогодні надсилає клієнт Agentfy). Сервер без стану: Agentfy відкриває нову MCP-сесію на кожен виклик, тож initialize має бути дешевим, і жоден стан не може триматися на Mcp-Session-Id. tools/list повертає всі інструменти однією сторінкою, бо Agentfy не йде за nextCursor.

Інструменти Admin Agent (етап A). Усі лише читають; усім, крім store_status, потрібна можливість catalog.read.

ІнструментЩо робить
store_statusЯкий магазин, чи досяжний, чи на паузі, які інструменти зараз працюють
catalog_find_productsПошук за SKU, моделлю, EAN та іншими ідентифікаторами; повертає всі збіги й ніколи не обирає один
catalog_get_productsАктуальні дані за ID товару; відсутні ID перелічено
catalog_list_productsПосторінковий перегляд каталогу, за бажання — лише нещодавні зміни

Інструменти Frontend Agent (етап B): cart_get, cart_add_item, cart_update_item, cart_remove_item. Зміна цін вимкнена, доки STOR-5 не матиме власної перевірки погодження.

Правила для кожного інструмента:

  • Жоден аргумент не називає магазин, команду, людину, покупця, розмову, право на ціну чи дозвіл. Кожна об'єктна схема забороняє зайві поля. Передача store_id відхиляється з invalid_arguments і нічого не обирає. Скрипт перевірки контролює обидва правила.
  • Назви — лише літери, цифри й підкреслення. Провайдери моделей за Agentfy відкидають крапки, а Agentfy мовчки прибирає назви, яких провайдер не приймає.
  • Інструмент з'являється у списку лише тоді, коли він є в профілі агента, маніфест магазину оголошує потрібну можливість і підписка команди це дозволяє. Виклик інструмента поза списком відхиляє сервер, а не лише приховує.
  • Результати. Успіх повертає structuredContent і той самий JSON текстом. Помилка встановлює isError і повертає { "error": { "code", "message", "retryable", "details" } }. Agentfy сьогодні не читає isError, тож повідомлення має бути зрозумілим моделі саме по собі.
  • Текст магазину — це дані. Назви товарів і опцій повертаються як поля, ніколи не вбудовуються в інструкції. Товар із назвою «ignore previous instructions» нічого не змінює.
  • ID — текстом ("42"), щоб схема була однаковою на всіх платформах; гроші — десятковим рядком із чотирма знаками.

Довірений контекст ​

Що надсилає Agentfy ​

ЗаголовокХто встановлюєЩо перевіряє Store Deputy
Authorization: Bearer sdak_…Agentfy, із секрету команди storedeputy:Authorization (працює вже сьогодні)Відомий і не відкликаний; дає команду, магазин і профіль
X-Agentfy-Agent-IdRuntime AgentfyЗбігається з агентом, якому видано ключ
X-SD-Context: sdcg_…Runtime Agentfy, для кожної розмовиІснує, не прострочений і не відкликаний, виданий цьому агенту й цьому треду
X-Agentfy-Thread-IdRuntime AgentfyЗбігається з тредом, для якого видано грант
X-Agentfy-Turn-IdRuntime AgentfyЛише для аудиту
X-Agentfy-Tool-Call-IdRuntime AgentfyСтає стабільним ключем операції для зміни
X-Agentfy-Initiated-ByRuntime Agentfyhuman, heartbeat або agent; грант людини можуть нести лише ходи human

Модель не встановлює жодного з них. Заголовки йдуть тим самим TLS-запитом, що й ключ агента, тож вони рівно настільки надійні, наскільки надійний сам Agentfy. Підписаний токен контексту не потрібен, доки між Agentfy і Store Deputy не з'явиться посередник.

Що виводить Store Deputy ​

На кожному виклику інструмента, до будь-якого запиту в магазин, Store Deputy перетворює заголовки на один розв'язаний контекст: команда, магазин, профіль, актор і чинні права. Код інструмента бачить лише цей результат.

АкторКолиЩо може
employeeЛюдина відкрила розмову в app; грант називає користувача Store DeputyПеретин гранту, її поточної ролі в команді, профілю агента, підписки й можливостей магазину
agentХід за розкладом або від іншого агента, без грантуЧитання, які власник дозволив агенту; ніколи не зміна, що потребує погодження людини
shopperВідвідувач відкрив чат на вітрині; грант називає прив'язку покупцяЛише власний кошик, доки модуль підтверджує прив'язку

Зміна ролі, видалення учасника, відключення магазину чи відкликання гранту діють з наступного виклику, бо в гранті нічого не кешується. Грант однієї розмови відхиляється в іншій, тож дві паралельні розмови одного агента не змішуються.

Чого Agentfy ще не робить ​

Це результат читання гілки main Agentfy 2 жовтня 2026 року. Це вимоги до STOR-22 і пов'язаних задач, які треба погодити з командою Agentfy, а не зміни, які робимо тут.

Сьогодні в AgentfyПотрібно
Виклики MCP несуть лише статичні заголовки, спільні для команди; за правилом жодного контексту агента, користувача чи розмови не надсилаютьЗа явним увімкненням для конкретного MCP-сервера — заголовки з таблиці вище, які встановлює runtime
Немає секрету на рівні розмовиЗберігати грант Store Deputy для кожного треду поза prompt і надсилати його у викликах цього треду
Ходи відвідувачів узагалі не отримують MCP-інструментівДозволити їх для сервера, позначеного як frontend (етап B)
isError не перевіряєтьсяВважати такий крок інструмента невдалим (рекомендовано)
Треди кабінету прив'язані до користувача AgentfyОкремий тред для кожної людини Store Deputy, щоб їхні гранти ніколи не перетиналися
Немає сервісного ключа; створення агентів і MCP-серверів потребує сесії користувачаСервісний спосіб створити агента (STOR-23)

Як Agentfy отримує грант на початку розмови, залежить від того, хто відкриває розмову, а це ще відкрите питання (див. відкриті пункти). Пропозиція: розмову відкриває Store Deputy, бо саме в app людина ввійшла в акаунт.