Публичное обнаружение агентов
Используйте эти примеры, чтобы сформировать JSON, который другой клиент A2A получит перед тем, как решить, может ли ваш агент выполнить задачу.
6 готовых к копированию JSON-шаблонов · A2A v1.0
Просмотрите практические шаблоны A2A v1.0, поймите их проектные решения, а затем адаптируйте любой пример для собственного агента.
Используйте эти примеры, чтобы сформировать JSON, который другой клиент A2A получит перед тем, как решить, может ли ваш агент выполнить задачу.
Адаптируйте провайдера, навыки, теги, возможности и метаданные безопасности, чтобы рецензенты понимали, что делает агент и кто им управляет.
Стандартизируйте описания конечных точек, аутентификации и навыков во внутренних агентах, прежде чем команды интегрируют их в рабочие процессы.
JSON-шаблоны
Обрабатывает вопросы о товарах, запросы о заказах, возвраты, и передачу эскалаций.
Почему это построено именно так
{
"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"
]
}
]
}Находит доступные слоты для встреч и готовит подтверждения бронирования.
Почему это построено именно так
{
"name": "Агент бронирования",
"description": "Ищет наличие свободных мест, предлагает варианты бронирования и подготавливает бронирование для утверждения.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/booking",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Пример Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": false,
"pushNotifications": true,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "find-and-prepare-booking",
"name": "Найти и подготовить бронирование",
"description": "Проверяет доступность ресурсов, сравнивает окна бронирования и возвращает структурированное предложение по резервированию.",
"tags": [
"booking",
"calendar",
"availability"
],
"examples": [
"Найдите 30-минутную встречу завтра днем."
]
}
],
"securitySchemes": {
"apiKey": {
"apiKeySecurityScheme": {
"location": "header",
"name": "X-API-Key"
}
}
},
"security": [
{
"apiKey": []
}
]
}Сравнивает товары, наличие, цены и ограничения покупки.
Почему это построено именно так
{
"name": "Агент покупок",
"description": "Сравнивает продукты с ограничениями пользователя и возвращает ранжированные варианты покупки с компромиссами.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/shopping",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Пример Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "compare-shopping-options",
"name": "Сравните варианты покупок",
"description": "Оценивает продукты-кандидаты, фильтрует по ограничениям и возвращает ранжированные рекомендации с обоснованием.",
"tags": [
"shopping",
"commerce",
"recommendations"
],
"examples": [
"Сравните легкие ноутбуки стоимостью менее 1200 долларов."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}Проверяет задачи по коду, предлагает патчи и объясняет решения по реализации.
Почему это построено именно так
{
"name": "Агент программирования",
"description": "Помогает решать задачи разработки программного обеспечения, анализируя код, предлагая изменения и возвращая заметки по реализации.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/coding",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Пример Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true,
"extendedAgentCard": true
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "implement-code-change",
"name": "Внедрить изменение кода",
"description": "Считывает запрос на кодирование, проверяет соответствующие файлы, возвращает предложение по исправлению и обобщает этапы проверки.",
"tags": [
"coding",
"review",
"patches"
],
"examples": [
"Добавьте нумерацию страниц в API пользователей."
]
}
],
"securitySchemes": {
"apiKey": {
"apiKeySecurityScheme": {
"location": "header",
"name": "X-API-Key"
}
}
},
"security": [
{
"apiKey": []
}
]
}Собирает источники, извлекает доказательства и возвращает структурированные исследовательские заметки.
Почему это построено именно так
{
"name": "Агент исследований",
"description": "Собирает исходный материал, извлекает доказательства и составляет структурированные исследовательские заметки с цитатами.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/research",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Пример Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "prepare-research-brief",
"name": "Подготовить краткое исследование",
"description": "Ищет утвержденные источники, извлекает утверждения и доказательства и возвращает краткое описание исследования.",
"tags": [
"research",
"evidence",
"citations"
],
"examples": [
"Подготовьте краткий обзор политики в области возобновляемых источников энергии."
]
}
]
}Координирует утверждения, проверки статуса, и обновления офисного рабочего процесса.
Почему это построено именно так
{
"name": "Агент внутреннего рабочего процесса",
"description": "Координирует внутренние утверждения, проверяет состояние системы и готовит обновления рабочих процессов для оперативных групп.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/workflow",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Пример Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": false,
"pushNotifications": true,
"extendedAgentCard": true
},
"defaultInputModes": [
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "coordinate-internal-workflow",
"name": "Координировать внутренний рабочий процесс",
"description": "Получает намерения рабочего процесса, проверяет требования политики, собирает утверждения и сообщает об окончательном статусе.",
"tags": [
"workflow",
"operations",
"approval"
],
"examples": [
"Запросите одобрение для развертывания обновления расчета заработной платы."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}Адаптируйте уверенно
Каждый пример Agent Card намеренно достаточно полон для копирования, но Agent Card не следует публиковать без изменений. Относитесь к ней как к карте полей для вашего собственного сервера A2A: замените идентичность, конечную точку, провайдера, аутентификацию, возможности, режимы и детали навыков на производственные значения.
Самые сильные Agent Card объясняют границу задачи агента как простым языком, так и машиночитаемыми метаданными. Клиент должен быть в состоянии определить, что агент может делать, что не может, какой URL вызывать, и требуются ли учётные данные.
Замените каждый URL example.com на развёрнутую конечную точку A2A и сайт провайдера.
Перепишите имя навыка, описание, теги (обязательны в v1.0) и примеры под реальную границу задачи.
Задайте provider.organization и повышайте version верхнего уровня всякий раз, когда меняется содержимое Agent Card.
Удаляйте поля аутентификации только тогда, когда конечная точка намеренно публична.
Держите defaultInputModes и defaultOutputModes в соответствии с тем, что ваш сервер фактически принимает и возвращает.
Проверьте итоговый JSON и опубликуйте его по адресу /.well-known/agent-card.json на домене вашего сервиса.
Готовы к созданию
Откройте любой шаблон в генераторе Agent Card, просмотрите JSON, и проверьте его перед публикацией.