Реестр доверия
Ответ на вопрос кошелька «кому вообще можно платить». Открытый формат подписанных дескрипторов получателей + федерация коммерческих провайдеров верификации. Первый провайдер — 4agents (verified-магазины и, расширением, verified платные MCP-серверы).
Зачем это отдельный слой
Мандат с прямым перечислением получателей работает для пары инструментов, но не масштабируется: принципал не может вручную проверять каждый новый MCP-сервер или магазин. Реестр выносит проверку («получатель реален: владеет доменом, оплатил верификацию, имеет историю») к провайдеру, которому принципал доверяет один раз — строкой в мандате:
"allow": [ "registry:4agents/verified" ]
Семантика: «платить можно любому получателю, чей дескриптор подписан провайдером
4agents с уровнем verified или выше».
Дескриптор получателя
Единый формат — и для реестра, и для self-hosted /.well-known/stipendex.json:
{
"stipendex": "receiver/0.1",
"id": "mcp:exa-search",
"name": "Exa Search",
"keys": [ "ed25519:GfHq…" ],
"endpoints": { "mcp": "https://mcp.exa.ai", "http": "https://api.exa.ai" },
"rails": [ { "scheme": "account", "facilitator": "https://pay.4agents.io" } ],
"profiles": [ "service" ],
"trust": {
"provider": "4agents",
"level": "verified",
"verified_at": "2026-06-01T00:00:00Z",
"expires_at": "2026-09-01T00:00:00Z",
"evidence": [ "domain", "payment", "feed" ]
},
"sig": "<jws провайдера реестра>"
}
Ключевые правила:
- T1. Ключ в
quote.receiver.keyMUST совпадать с одним изkeys[]дескриптора — подмена получателя внутри доверенного имени невозможна. - T2. Дескриптор имеет срок (
trust.expires_at, SHOULD ≤ 90 дней) и переиздаётся; отзыв = невыпуск + revocation-список провайдера, который кошелёк проверяет при первом платеже получателю и далее по TTL кеша. - T3.
trust.level— шкала провайдера; провайдер обязан публиковать значение уровней (что проверено). Для 4agents:verified= владение доменом + рабочий платёж + валидный фид;trusted+= KYC + история сделок.
API провайдера (минимум)
GET /registry/receivers/{id} → дескриптор (JWS)
GET /registry/revocations → список отозванных id/ключей (JWS, инкрементальный)
GET /registry/meta → ключи провайдера, описание уровней
Кошелёк кеширует дескрипторы по TTL; офлайн-валидация — по подписи провайдера.
Федерация
Реестров может быть много (по отраслям, юрисдикциям, экосистемам). Принципал перечисляет доверенных провайдеров в мандате; кошелёк принимает дескриптор от любого из них. Провайдеры конкурируют качеством проверки — как центры сертификации, но с прозрачной шкалой и без глобального единого корня.
Экономика провайдера
Верификация — платная для получателя (модель 4agents: подписка за verified). Это и барьер для спама, и бизнес провайдера. Для кошельков и принципалов реестр бесплатен — они «клиенты доверия», а не источники выручки.
Злоупотребления
| Угроза | Контроль |
|---|---|
| Купленный verified у мошенника | уровень честно означает «проверено X»; история сделок и споров двигает уровень вниз/вверх; отзыв по инцидентам |
| Компрометация ключа получателя | ротация в дескрипторе; revocation-список; короткий срок дескриптора |
| Злонамеренный/взломанный провайдер | несколько провайдеров в мандате не суммируются в «или», а логируются: кошелёк показывает, чьей подписью пропущен платёж; принципал может убрать провайдера одной строкой |
Squatting имён (mcp:exa-search от чужака) |
привязка id к домену/ключу при верификации; конфликтные id провайдер не выпускает |