A2A: дозвольте AI-агентам викликати ваш сайт
Опубліковано:
AI-агент щойно перевірив цей сайт без відкриття браузера, натискання кнопок і скрапінгу сторінок — він прочитав невеликий JSON-файл, надіслав один типізований запит і отримав структурований результат. Цей обмін і є A2A, і будь-який сайт може його запропонувати.
Що таке A2A
A2A (Agent2Agent) — це відкритий протокол під егідою Linux Foundation, який дозволяє AI-агентам знаходити та викликати один одного через звичайний HTTP. Уявіть це як аналог публічного API для взаємодії між агентами: замість того щоб людина читала вашу документацію і писала інтеграцію, інший агент читає машинний опис того, що робить ваш сервіс, і викликає його напряму.
Він складається з двох частин: документа виявлення (agent card) і викликаного ендпоінту (skill).
1. Agent card — виявлення
Ви публікуєте JSON-файл за адресою /.well-known/agent-card.json, що описує, хто ви і що ви вмієте. Обов'язкові поля: name, description, version, url (ваш A2A ендпоінт) і принаймні одна skill:
{
"protocolVersion": "0.3.0",
"name": "llms.txt Validator",
"description": "Validate a website's llms.txt and return a score with findings.",
"url": "https://llms-txt-validator.dev/a2a",
"skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt",
"description": "Given a domain or URL, fetch and validate its llms.txt." }]
}
2. Ендпоінт — викликана навичка
Поле url картки вказує на JSON-RPC 2.0 ендпоінт. Агент викликає метод message/send з повідомленням; ви виконуєте роботу і повертаєте Task. Ось реальний виклик до нашого агента:
POST /a2a
{ "jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": { "role": "user",
"parts": [{ "kind": "text", "text": "validate llmstxt.org" }] } } }
…і відповідь — завершений task із зручним для читання резюме та структурованими даними:
{ "result": { "kind": "task", "status": { "state": "completed" },
"artifacts": [{ "parts": [
{ "kind": "text", "text": "Validated llmstxt.org: score 100/100..." },
{ "kind": "data", "data": { "ok": true, "report": { "scores": { "overall": 100 } } } }
] }] } }
Жодного браузера, жодного парсингу HTML — агент отримує саме ті дані, які запитував.
A2A проти WebMCP проти MCP
- A2A — мережеві агенти викликають ваш сервіс через HTTP (оркестратори, інші агенти). Ця сторінка.
- WebMCP — агент, що працює всередині браузера, викликає інструменти на вашій відкритій сторінці.
- MCP — підключення інструментів до однієї моделі або застосунку, зазвичай локально.
Вони доповнюють одне одного: A2A охоплює мережевих агентів, WebMCP — агентів у браузері. Дивіться як ці три підходи поєднуються.
Як будь-який сайт може це додати
Не потрібен весь протокол для початку — оберіть одну реальну функцію вашого сервісу:
- Розмістіть валідну agent card за адресою
/.well-known/agent-card.jsonз однією навичкою. - Реалізуйте синхронний метод
message/send, що обгортає цю функцію, і поверніть завершенийTaskз результатом як артефактом. - Потокова передача, історія задач і push-сповіщення необов'язкові — встановіть
capabilities.streamingу false і додайте їх лише за потреби.
Єдине правило: підкріпіть картку реальним ендпоінтом
Картка — це контракт, а не мета-тег. Якщо ви публікуєте картку, чий url насправді не відповідає на message/send, кожен агент, що їй довіряє, потрапляє в глухий кут. Відкривайте A2A лише для можливостей, які ви справді можете надати — саме так ми побудували наш агент, і саме тому наш власний звіт позначає сигнал як присутній лише тоді, коли за ним стоїть реальний ендпоінт. Хочете побачити наживо? Завантажте нашу agent card.