Agent Card — це стандартизований JSON-документ, який повідомляє клієнтам A2A, хто такий агент, де з ним зв'язатися, що він уміє, і як захищено доступ. Цей довідник охоплює кожне поле v1.0 з типами, вимогами, прикладами, і помилками, які валідатори виявляють найчастіше.
Один well-known URL запускає кожну інтеграцію A2A.
Клієнт A2A отримує Agent Card з well-known URI, оцінює навички, можливості, і вимоги безпеки відповідно до своєї задачі, а потім викликає бажаний інтерфейс — перший запис у supportedInterfaces. Якщо capabilities.extendedAgentCard дорівнює true, автентифіковані клієнти можуть запитати повнішу Agent Card через операцію GetExtendedAgentCard.
Специфікація реєструє /.well-known/agent-card.json як стандартне розташування. Старіші розгортання v0.x використовували /.well-known/agent.json, тому наш валідатор перевіряє обидва варіанти.
Кожне поле AgentCard із деталями, що визначають успіх чи невдачу.
Прапорці обов'язковості відповідають визначенням protobuf v1.0 в офіційній специфікації. Якірні посилання роблять кожне поле придатним для цитування з issue, рецензій, і виводу CI.
Відображається у списках маркетплейсів і клієнтських інтерфейсах. Робіть його коротким і конкретним — клієнти використовують його як основну мітку при порівнянні агентів-кандидатів.
Поширена помилка: Використання загального імені на кшталт «AI Assistant», яке не дає системам маршрутизації нічого для розрізнення.
Що робить агент і коли інший агент повинен його викликати.
Це основний сигнал у вільній формі як для інтеграторів-людей, так і для маршрутизаторів на основі LLM, які вирішують, чи підходить ваш агент для задачі. Вкажіть область задачі, ключові можливості, і межі.
Поширена помилка: Однорядкові описи коротші за 20 символів. Маршрутизатори не можуть зіставити те, що ви не описали.
"description": "Надає розширене планування маршруту, аналіз трафіку та користувацькі послуги створення карт."
Впорядкований список кінцевих точок і прив'язок протоколу. Перший запис є бажаним.
Нове в v1.0: замінює старі поля верхнього рівня url, preferredTransport, і additionalInterfaces. Кожен запис оголошує власний url, protocolBinding (JSONRPC, GRPC, HTTP+JSON, або власний URI прив'язки), protocolVersion, і опціональний ключ маршрутизації орендаря — так один агент може одночасно обслуговувати кілька версій протоколу і транспортів.
Поширена помилка: Оголошення прив'язки, яку сервер фактично не обслуговує за цим URL — специфікація вимагає, щоб кожен запис був точним.
Сигнал довіри для маркетплейсів і корпоративних аудитів. У v1.0 поле name перейменовано на organization; url обов'язковий усередині об'єкта, якщо він присутній.
Поширена помилка: Продовження використання provider.name (до v1.0). Валідатори, що читають Agent Card v1.0, не розпізнають це поле.
Прапорці функцій протоколу: streaming, pushNotifications, extensions, extendedAgentCard.
Клієнти НЕ ПОВИННІ викликати функції, які ви не оголосили — необ'явлені виклики потокової передачі повертають помилки. extendedAgentCard: true оголошує про надання повнішої автентифікованої Agent Card через операцію GetExtendedAgentCard. У v1.0 видалено stateTransitionHistory.
Поширена помилка: Оголошення streaming: true, коли у сервера немає кінцевої точки потокової передачі. Клієнти викличуть її і зазнають невдачі.
Кожна іменована схема обгортає один конкретний об'єкт схеми (apiKeySecurityScheme, httpAuthSecurityScheme, oauth2SecurityScheme, openIdConnectSecurityScheme, mtlsSecurityScheme). Клієнти дізнаються звідси, як автентифікуватися — самі облікові дані завжди отримуються поза каналом.
Поширена помилка: Вбудовування реального ключа API або токена в Agent Card. Agent Card — це публічний документ.
Які оголошені схеми (та області дії) потрібні для виклику агента.
Кожен запис зіставляє ім'я схеми з securitySchemes з потрібними йому областями дії, віддзеркалюючи шаблон вимог безпеки OpenAPI. Повністю опустіть обидва поля для навмисно публічних агентів.
Поширена помилка: Оголошення securitySchemes без вимог security, через що клієнтам доводиться вгадувати, чи застосовується автентифікація.
Повідомляє викликачам, чи очікувати текст, структурований JSON, зображення, або файли. Навички можуть перевизначати це для конкретної навички за допомогою outputModes.
Поширена помилка: Вказання лише text/plain, коли агент фактично повертає структуровані артефакти.
Конкретні можливості, в яких агент, ймовірно, буде успішним.
Кожна навичка вимагає id, name, description, і tags; examples, режими для конкретної навички, і безпека для конкретної навички необов'язкові. Навички — це одиниця виявлення — маршрутизатори зіставляють задачі з ними, тому обмежуйте кожну однією межею задачі.
Поширена помилка: Навички без тегів. Теги стали обов'язковими в v1.0 і визначають зіставлення на рівні навичок.
"skills": [{
"id": "route-optimizer-traffic",
"name": "Оптимізатор маршруту з урахуванням трафіку",
"description": "Розраховує оптимальні маршрути руху в режимі реального часу...",
"tags": ["maps", "routing", "traffic"],
"examples": ["Сплануйте маршрут від А до Б без платних проїздів."]
}]
Підписи JSON Web, що доводять, що Agent Card випущено провайдером.
Кожен підпис містить захищений заголовок JWS у форматі base64url і значення підпису, обчислене над канонізованою за RFC 8785 (JCS) Agent Card. Клієнтам СЛІД перевіряти принаймні один підпис перед тим, як довіряти Agent Card, отриманій з відкритого вебу.
Поширена помилка: Підписання картки з подальшим редагуванням будь-якого поля — навіть незначущі для пробілів зміни значень роблять JWS недійсною.
Використовується каталогами і клієнтськими інтерфейсами. Роздавайте його через HTTPS зі стабільного розташування.
Поширена помилка: Посилання на значок на іншому, ненадійному домені, який може змінитися непомітно позаду вашого лістингу.
"iconUrl": "https://agent.example.com/icon.png"
Міграція версії
Перенесення Agent Card v0.x на A2A v1.0.
Якщо ваша Agent Card все ще містить верхньорівневі url або preferredTransport, вона передує v1.0. Валідатор автоматично позначає кожне з цих полів.
Поле v0.x
Заміна v1.0
Чому змінилося
url
supportedInterfaces[0].url
Бажана кінцева точка тепер просто перший запис інтерфейсу.
preferredTransport
supportedInterfaces[] ordering
Перевага виражається порядком масиву замість окремого поля.
additionalInterfaces
supportedInterfaces[]
Усі інтерфейси розміщуються в одному впорядкованому масиві.
protocolVersion (top level)
supportedInterfaces[].protocolVersion
Кожен інтерфейс оголошує власну версію протоколу, забезпечуючи підтримку кількох версій.
supportsAuthenticatedExtendedCard
capabilities.extendedAgentCard
Переміщено до об'єкта capabilities; RPC перейменовано на GetExtendedAgentCard.
provider.name
provider.organization
Перейменовано для ясності.
capabilities.stateTransitionHistory
— removed
Не є частиною v1.0; за потреби змоделюйте еквівалентну поведінку як розширення.
Шаблонний код
Типи TypeScript для Agent Card v1.0.
Додайте ці інтерфейси до клієнта, сервера, або перевірки CI, щоб розбирати і створювати Agent Card із типовою безпекою. Вони віддзеркалюють визначення protobuf з офіційного репозиторію специфікації, у форматі camelCase JSON, у якому публікуються Agent Card.
Створюєте Agent Card вручну натомість? Генератор створює саме цю структуру.
Оскільки Agent Card отримують з відкритого вебу, v1.0 формалізує підписання: Agent Card (без поля signatures і значень за замовчуванням) канонізується за RFC 8785 JSON Canonicalization, потім підписується як JWS. Клієнтам слід перевіряти принаймні один підпис — через заголовок kid/jku або довірене сховище ключів — перш ніж діяти на основі Agent Card. Кілька підписів підтримують ротацію ключів.
Чек-лист перед публікацією
Роздавайте Agent Card за адресою /.well-known/agent-card.json через HTTPS.
Кожен запис supportedInterfaces доступний і використовує заявлену прив'язку.
Навички мають обов'язкові теги і описи з чіткими межами задач.
Оголошені можливості відповідають серверу — необ'явлені функції повинні повертати помилки, оголошені повинні працювати.
securitySchemes описує, як автентифікуватися; облікові дані ніде в Agent Card не з'являються.
version підвищується щоразу, коли змінюється вміст Agent Card.
Повна Agent Card v1.0.
Агент підтримки клієнтів з OAuth 2.0, потоковою передачею, і push-сповіщеннями — присутні всі обов'язкові поля. Більше шаблонів доступно в бібліотеці прикладів.
{
"name": "Агент підтримки клієнтів",
"description": "Відповідає на запитання служби підтримки клієнтів, отримує контекст замовлення та передає невирішені проблеми команді людей.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/customer-support",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Приклад Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "resolve-customer-support-request",
"name": "Вирішити запит служби підтримки клієнтів",
"description": "Класифікує запит служби підтримки клієнтів, збирає необхідний контекст, пропонує вирішення та посилює, коли впевненість низька.",
"tags": [
"support",
"orders",
"returns"
],
"examples": [
"Допоможіть повернути замовлення."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/customer-support/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}
Часті запитання
Питання про схему Agent Card
Зміни версії, поля виявлення, і деталі публікації, що визначають, чи пройде Agent Card перевірку.
Що змінилося в Agent Card A2A v1.0?
v1.0 об'єднала url, preferredTransport, і additionalInterfaces в один упорядкований масив supportedInterfaces, де кожен запис оголошує власні url, protocolBinding, і protocolVersion. supportsAuthenticatedExtendedCard переміщено до capabilities.extendedAgentCard, provider.name стало provider.organization, теги навичок стали обов'язковими, і підписи Agent Card JWS були формалізовані з канонізацією RFC 8785.
Чи Agent Card — це те саме, що схема API?
Ні. Agent Card — це документ виявлення для агента. Він підсумовує ідентичність, інтерфейси, можливості, навички, режими, провайдера, і метадані безпеки, тоді як повна схема API описує детальні формати запитів і відповідей. Вона відіграє ту саму роль, що README чи огляд OpenAPI для сервісу: достатньо, щоб вирішити, чи варто його викликати і як.
Які поля найважливіші для виявлення?
name, description, supportedInterfaces, skills (з тегами), defaultInputModes, defaultOutputModes, capabilities, provider, і метадані безпеки. Системи маршрутизації зіставляють задачі з вашим description і тегами навичок, а потім використовують інтерфейси і можливості для планування фактичного виклику.
Чи повинні приватні навички з'являтися в публічній Agent Card?
Публікуйте лише ті навички, що безпечні для неавтентифікованого виявлення. Якщо потрібна багатша приватна Agent Card, встановіть capabilities.extendedAgentCard у true і розкривайте чутливі навички через автентифіковану операцію GetExtendedAgentCard.
Де публікується Agent Card?
За well-known URI https://{ваш-домен}/.well-known/agent-card.json, з типом вмісту application/a2a+json (application/json також працює на практиці). Попередні реалізації використовували /.well-known/agent.json, тому публікація обох під час переходу є прагматичним вибором.
Застосуйте схему на практиці
Створіть Agent Card, яка пройде перевірку з першого разу.
Згенеруйте Agent Card у форматі v1.0 на основі деталей вашого сервісу, або вставте наявну Agent Card у валідатор, щоб точно побачити, які поля потребують уваги.