# Для разработчиков

Как опубликовать паспорт ИИ-агента и карточку A2A, подать заявку и подключить поиск по реестру к своему агенту: обязательные поля, примеры на Python и JavaScript, проверка перед заявкой.

## 1. Опубликуйте паспорт ИИ-агента

Файл /.well-known/agent-passport.json на домене оператора. Формат 0.1, схема, генератор и скрипт подписи — на паспорт-агента.рф; проверка — там же. В поле operator.responsible_contact укажите рабочую почту: на неё придёт код подтверждения записи. Чтобы реестр нашёл карточку A2A, добавьте её адрес в agent.a2a_agent_card.

## 2. По желанию — карточку A2A

Файл /.well-known/agent-card.json (A2A 1.0; старый путь /.well-known/agent.json реестр тоже проверяет). Обязательные поля для реестра: name, url (адрес по HTTPS), version, skills с id и name у каждого навыка. Поле provider.organization сверяется с оператором из паспорта.

{
  "name": "Помощник закупок ООО «Пример»",
  "description": "Ищет товары в каталоге, считает смету, готовит заказ на подтверждение",
  "url": "https://example.ru/a2a",
  "version": "1.0.0",
  "protocolVersion": "1.0",
  "provider": { "organization": "ООО «Пример»", "url": "https://example.ru" },
  "capabilities": { "streaming": false, "pushNotifications": false },
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["text/plain", "application/json"],
  "skills": [
    { "id": "search-catalog", "name": "Поиск по каталогу", "description": "Поиск товаров по описанию и параметрам", "tags": ["search", "catalog"] },
    { "id": "quote", "name": "Расчёт сметы", "description": "Смета по списку позиций", "tags": ["quote"] }
  ]
}
Полная спецификация и примеры транспортов — a2adocs.ru; протокол и Agent Card по-русски — a2aprotocol.ru. Реестр хранит слепок карточки и показывает последнее известное состояние, если агент временно недоступен.

## 3. Подайте заявку

Страница Добавить агента: адрес сайта, при желании адрес карточки. Сервер проверит паспорт и карточку и отправит код на почту владельца. Если запись о вашем агенте уже есть «по открытым данным», та же заявка переведёт её в статус «подтверждён владельцем».

## 4. Подключите поиск по реестру к своему агенту

Два запроса без ключа. Лимит 60 запросов в минуту с адреса, у проверки по адресу — 10. Полный список параметров — в описании API и OpenAPI.

### Python
import requests

# 1. найти агентов, которые умеют считать смету, у компаний с подтверждённой записью
r = requests.get("https://a2aregistry.ru/api/v1/agents", params={"skill": "quote", "status": "active"}, timeout=10)
for a in r.json()["items"]:
    print(a["name"], a["owner"]["name"], a["endpoint"], a["passport"]["number"])

# 2. убедиться, что агент настоящий, прежде чем обращаться к нему
v = requests.get("https://a2aregistry.ru/api/v1/verify", params={"url": "example.ru"}, timeout=40).json()
ok = v["ok"] and v["endpoint"]["online"] and v["passport"]["status"] in ("confirmed", "published")
print("можно обращаться" if ok else "лучше не надо", v["passport"]["note"])

### JavaScript
const base = "https://a2aregistry.ru/api/v1";
const agents = await (await fetch(`${base}/agents?skill=verify&interface=api`)).json();
const check  = await (await fetch(`${base}/verify?url=` + encodeURIComponent("agentreadyscan.ru"))).json();
console.log(agents.count, check.passport.status, check.registry && check.registry.status);

### Из агента через MCP или A2A

Собственного MCP-сервера у реестра нет: достаточно обычного HTTP-инструмента с двумя адресами выше. Описание для языковых моделей — llms.txt и AGENTS.md; Markdown-версия любой страницы по ?format=md или заголовку Accept: text/markdown.

## 5. Что проверить у себя перед заявкой

- curl -sI https://ваш-сайт/.well-known/agent-passport.json — ответ 200 и content-type: application/json;- паспорт проходит проверку без ошибок;- адрес из поля url карточки отвечает по HTTPS с валидным сертификатом;- почта из responsible_contact принимает письма с robot@a2aprotocol.ru (письмо с кодом уходит с этого ящика).
