Интерфейс агента (Agent-to-Agent)
Откройте агента вашего бизнеса для других агентов. ИИ-ассистент клиента может обнаружить его, проконсультироваться и отправить структурированный, предзаполненный запрос через MCP и A2A — тогда как всё необратимое подтверждает человек.
Интерфейс агента делает вашего агента доступным не только для людей в чате, но и для ИИ-ассистентов ваших клиентов, от машины к машине. Ассистент может задавать вопросы с опорой на источники и отправлять структурированный, предзаполненный запрос; ваша сторона выполняет предварительную обработку и возвращает резюме для подтверждения человеком. Всё построено на открытых стандартах агентов — MCP (инструменты) и A2A (карточки агентов) — так что не нужно внедрять никакой особый протокол.
Как устроено взаимодействие
Обнаружение и подключение
Есть два уровня, и разница в том, что ассистенту разрешено делать.
Уровень чтения — автообнаружение, без настройки
Ассистент находит карточку вашего агента по стандартному адресу и может начать сразу:
https://<your-domain>/.well-known/agent.json— карточка агента A2A (домен white-label или ваш URL agent4.io).- На странице: тег
<link rel="agent" href="…">иwindow.agent4, так что браузерный ассистент, уже находящийся на вашем сайте, находит его без лишнего перехода.
Уровень чтения публичен и безопасен: только ответы с опорой на источники, контракт приёма заявок и проверка статуса. Никаких персональных данных и никакой отправки запросов.
Уровень записи — одноразовое сопряжение
Чтобы отправить запрос от чьего-либо имени, ассистент должен быть однажды сопряжён с этим человеком:
- Клиент нажимает «Использовать с вашим ИИ-ассистентом» в вашем чате или виджете.
- Он получает одноразовый код (плюс копируемую ссылку, QR-код и deep-link) — а не блок текста для вставки.
- Его ассистент обменивает код на ограниченный токен (обмен в стиле OAuth device / authorization-code) и сам читает карточку агента.
Полученный токен привязан к этому аутентифицированному человеку, ограничен (этот бизнес, этот клиент, только предварительная обработка), краткоживущий и отзываемый клиентом в любой момент. Именно это превращает заявленную личность в личность с подтверждённым происхождением.
Глаголы
| Verb | Уровень | Назначение |
|---|---|---|
get_capabilities | чтение | На что этот агент может ответить и что сделать; его сервисы и границы |
get_requirements(service) | чтение | Контракт приёма: обязательные/необязательные поля, типы и правила с опорой на источники |
ask(question) | чтение | Ответ с опорой на источники и цитатами или передача, если вне рамок |
status(reference) | чтение | Прогресс по ранее отправленному запросу |
propose(service, payload) | запись | Отправить структурированный запрос; возвращает черновик + резюме |
handoff_to_human(reference?) | запись | Ссылка-продолжение, которую ассистент возвращает своему владельцу |
Контракт приёма заявок
get_requirements — ключ к устранению трения: ассистенту никогда не следует гадать ваш формат. Он
возвращает поля, которые нужны сервису, и связанные с ним правила с опорой на источники (депозит,
срок предзаказа, отмена), выведенные из навыков вашего агента, — так что ассистент заполняет то, что
знает, и спрашивает у своего владельца только то, чего действительно не хватает.
Модель черновика
propose никогда не возвращает «готово». Его наивысшее состояние — tentative: запрос
подготовлен и ждёт подтверждения, а не завершённая сделка:
needs_info— обязательные поля отсутствуют или неоднозначны; см.open_questions.tentative— принят как черновик, ожидает подтверждения.declined— не может быть принят (вне правил или рамок).
Ничто не является confirmed, пока это не подтвердит человек. Ваш маркетинг и ваши ответы должны
это отражать: бронь в статусе tentative — это запрос, а не забронированный столик.
Передача человеку
В любой момент ассистент (или ваш агент) может запросить передачу. agent4.io выпускает ссылку-продолжение, ограниченную этой сессией; клиент открывает её, видит полную стенограмму и продолжает как человек — исправляя или отменяя черновик до его подтверждения. Атрибуция участника переключается при передаче, поэтому запись всегда показывает, кто что сказал.
Аудит
Каждое взаимодействие фиксируется, только на добавление, и привязывается к ссылке запроса: каждое входящее утверждение (приписанное вызывающему ассистенту и человеку, с которым он сопряжён), каждый возвращённый вами ответ и участник на каждом шаге. Запрос, отправляющий данные, никогда не анонимен — именно это позволяет вам относиться к ассистенту клиента как к авторизованному представителю этого клиента и впоследствии доказать в точности, что было передано.
Разобранный пример
- Обнаружение — ассистент получает карточку вашего агента.
- Сопряжение — клиент нажимает Использовать с вашим ИИ-ассистентом; ассистент обменивает код на ограниченный токен.
get_requirements("reservation")— интервал даты/времени, размер компании, посадка, пищевые пожелания, имя, контакт; плюс ваши правила депозита и отмены.propose("reservation", …)→{ status: "tentative", summary, reference, open_questions: [] }.- Подтверждение — ассистент показывает резюме своему владельцу; после подтверждения ваша команда (или проверка доступности) завершает его.