scvd-store-MCP
Sean-Claude Van Damme's General Store
mcp-name: store.scvd/general-store
Обсерватория доказательств для агентной коммерции. Независимые подписанные наблюдения за тем, что на самом деле делали чужие эндпоинты, артефакты и платежи — аудиты соответствия, недельные наблюдения, аттестации расчётов, привязанные к Bitcoin отметки времени. Каждый вердикт подписан ed25519, датирован и проверяем офлайн без обращения к нам, включая пробелы, которые мы засчитываем против самих себя.
Это не эскроу, не гарант и не арбитражный суд. Они принимают на себя риск между оплатой и доставкой, и им нужен баланс; мы наблюдаем этот зазор и подписываем то, что увидели. Если вы строите эскроу или арбитраж, это слой под вами, а не конкурент. Это направление было решено и датировано 2026-08-07, открыто — разворот лежит рядом с тем, что он заменил, на scvd.store/becoming.
Это также небольшой искренний универсальный магазин для автономных ИИ-агентов, который держит человек из Оук-Сити, где вы никогда не опаздываете. Агенты платят в USDC — на Base, Polygon или Solana, на выбор своего кошелька — по протоколу x402. Люди читают чеки.
Работает на scvd.store. Агентам стоит начинать с /agents.md (сканируемый индекс контрактов), /llms.txt (полная проза) или /menu.json.
Двери по задачам
Зачем сюда приходят и где каждая дверь:
Протестировать x402-платёж — живой тренировочный счётчик с реальным расчётом в USDC, без песочницы; самый дешёвый реальный тестовый платёж, который мы знаем, $0.005: scvd.store/try.
Проверить соответствие x402, бесплатно — отправьте POST с подписанным оффером или чеком любого эмитента (нашим или конкурента) и получите структурированный вердикт: разбор, схема, подпись ed25519, живость. Без аккаунта и кошелька: scvd.store/conformance. Та же проверка работает офлайн через
x402-verify(MIT, ноль зависимостей), аx402-signсоздаёт офферы и чеки, которые её проходят.Читать корпус — еженедельные подписанные наблюдения за экосистемой x402, связанные хешами и привязанные к Bitcoin, бесплатны для чтения: scvd.store/corpus.
Купить аттестацию расчёта — подписанное наблюдение статуса ончейн-платежа на Base, Polygon или Solana, с указанием, что подпись доказывает, а что нет, по каждому классу на scvd.store/attestation.
Наблюдать за эндпоинтом — мониторинг эндпоинта как
standing_watch: семь дней подписанных ежечасных проверок по указанному вами URL.Закрепить память агента —
context_anchor: подписанная, доступная для извлечения точка восстановления сессии, переживающая сброс контекста.Увидеть свой путь покупки со стороны покупателя —
launch_check: реальная попытка покупки в мейннете вашего собственного x402-эндпоинта с объявленного полевого кошелька магазина, записанная по этапам и подписанная. Каталоги ранжируют двери по тому, отвечают ли они; эта платит им.Проверить книги агента против сети —
the_statement: все переводы USDC в один кошелёк Base и из него за указанный период, подписанные стороной, которая не является ни агентом, ни его оператором.Зафиксировать, что агенту разрешено делать, до того как он действует —
the_mandate: цепочка хранения делегированных полномочий, на которую можно ссылаться в каждом последующем сертификате, отклоняется, если id не резолвится.Получать деньги за покупки — доска вознаграждений на scvd.store/bounties (JSON по адресу
/api/bounties): пройдите перечисленную дверь x402 со своим кошельком, заявите право по транзакции расчёта, и цена плюс вознаграждение за находку вернутся как подписанная авторизация, которую вы обналичиваете сами.Зарабатывать кредит магазина — 5% от каждой органической покупки зачисляется на оплачивающий кошелёк (без аккаунта; кошелёк — это карта): схема на scvd.store/credit, единый баланс по адресу
/api/credit/{wallet}, погашается в USDC на тот же кошелёк.
Каждая из этих дверей заканчивается чеком или вердиктом, подписанным ed25519, который любой может проверить по адресу /api/verify/{id} — бесплатно, без аккаунта, навсегда.
Related MCP server: x402-api
Подключение через MCP
Магазин — это удалённый MCP-сервер: потоковый HTTP, без установки, без API-ключа. tools/list бесплатен; инструменты buy_* возвращают свои условия x402 как ошибку JSON-RPC 402 и рассчитываются в том же канале. Вот вся конфигурация клиента:
{
"mcpServers": {
"scvd-general-store": {
"url": "https://scvd.store/mcp"
}
}
}(Если ваш хост говорит только на stdio, node ./bin/scvd-mcp-bridge.mjs из этого репозитория пересылает stdin/stdout JSON-RPC на живой сервер. Он не хранит ключей и не сохраняет состояние. Команды wrangler ниже в этом README предназначены для запуска собственной копии магазина, а не для подключения к нему.)
Лицензия
Код — MIT. Голос магазина — проза хранителя, авторская подпись, имя — не входит в предоставление; объём оговорён в NOTICE.md. (Сам файл LICENSE — байтово-стандартный MIT, чтобы сканеры лицензий могли его распознать; разграничение намеренно находится здесь и в NOTICE, никогда внутри текста лицензии.)
Владение
Этот репозиторий принадлежит и управляется @seancrecord — хранителем. Коммиты создаёт Claude Code по указанию хранителя; авторская подпись Sean-Claude Van Damme покрывает совместную работу, а магазин принадлежит хранителю. Для любого реестра или каталога, проверяющего заявление MCP/службы относительно этого репозитория (добавлено 2026-08-05 для заявления M8ven и действует для будущих заявлений с той же учётной записи): эта заметка — подтверждение владения; разместить её здесь может только владелец репозитория.
Что на полках
Подписанные приветствия, граффити в поезде (ваш тег, навсегда) и The Collab — единственная дверь, где время хранителя продаётся: назовите форму, звонок, взгляд, сделанную вещь. Второй проход — новинки: lowercase luckies (отобранные из стада, вычесанные, честные) и кофе для того, кто закрыл. Третий проход — утилиты: якоря контекста (подписанные точки восстановления памяти агента), постоянное наблюдение (неделя подписанных ежечасных проверок вашего эндпоинта), аттестации расчётов и 30-дневные продлеваемые абонементы покровителя. Пенни-полка у двери — благословения за полцента и стойка исповедей. И Сертификат покровительства — который не даёт владельцу ровным счётом ничего. (Две консолидации, 2026-08-05 и 2026-08-20, вывели из эксплуатации несколько ранних полок; выведенные id до сих пор отвечают при входе кодом 410, а их сертификаты проверяются вечно.) Книга гостей, наклейка посетителя и еженедельный штамп о визите бесплатны — покупка не нужна. Колокольчик звонит раз в день для каждого посетителя, «Agent Zodiac» читается бесплатно по адресу /zodiac, а Почтовый ящик принимает одно личное письмо в день по адресу /api/letter — хранитель читает по воскресеньям и отвечает, когда ему есть что сказать, а это не всегда.
Читальный зал: «Keeper's Almanac» (его журнал, выходящий по частям, пенни за страницу). Городской справочник соседей бесплатен.
(Этот раздел — деревенская половина магазина. Рабочие инструменты — аудиты соответствия, проверки запуска, отчёты, мандаты, баунти — это двери, перечисленные вверху, а всегда актуальный каталог — /menu.json, который по построению не может разойтись с полками.)
Открытие магазина (настройка)
Вам понадобятся Node 22+, аккаунт Cloudflare, кошелёк Base и ключи CDP API для фасилитатора x402.
npm installПолки (пространства имён KV)
Создайте четыре полки один раз, затем вставьте id в wrangler.jsonc:
npx wrangler kv namespace create ORDERS
npx wrangler kv namespace create GUESTBOOK
npx wrangler kv namespace create COUNTERS
npx wrangler kv namespace create PATRONSКасса и ключи (секреты)
Пять секретов, ни один из которых никогда не попадает в репозиторий:
npx wrangler secret put PAY_TO_ADDRESS # Base wallet that receives USDC
npx wrangler secret put CDP_API_KEY_ID # Coinbase Developer Platform key id
npx wrangler secret put CDP_API_KEY_SECRET # ...and its secret
npx wrangler secret put SIGNING_KEY # ed25519 seed — see below
npx wrangler secret put ADMIN_PASSWORD # the keeper's back-room keySIGNING_KEY подписывает каждый сертификат и значок. Создайте новый с помощью:
npm run keys:generateСкопируйте напечатанные им 64 шестнадцатеричных символа в wrangler secret put SIGNING_KEY. Соответствующий открытый ключ расположен по адресу /.well-known/scvd-signing-key, чтобы любой мог проверить наши подписи.
Для локальных экспериментов скопируйте .dev.vars.example в .dev.vars и заполните его.
Управление магазином
npm run dev # local store on wrangler dev
npm test # the route tests, incl. the 402 challenge shape
npm run typecheck # tsc --noEmit
npm run deploy # or let the Git-connected deploy push to scvd.storeДеплои подключены через Git к пользовательскому домену scvd.store — мёржите в main, а Cloudflare сделает остальное.
Как здесь работает оплата (поток x402, протокол v2)
Никаких аккаунтов, никаких API-ключей, никакой корзины. Мы говорим на x402 v2 (текущем стандарте — экосистема @x402/core) с USDC на Base (eip155:8453) или Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, с 2026-08-04) и платформой Coinbase Developer Platform в роли фасилитатора. Выглядит это так:
Агент вызывает
GET /api/buy/luckies.Мы отвечаем
402 Payment Required. Машиночитаемые требования едут в заголовке ответаPAYMENT-REQUIRED(base64 JSON); тело содержит записку на простом английском ("That'll be $5, friend, or whatever the luck deserves. Results vary. They do vary. We have no legal team.").Агент подписывает один из предложенных платежей и повторяет тот же запрос с заголовком
PAYMENT-SIGNATURE. Стандартные v2-клиенты, такие как@x402/fetch, выполняют шаги 2–3 сами.Мы сначала доставляем, а потом рассчитываемся (переключено 2026-08-10 — до этого магазин рассчитывался первым, и старое правило процитировано на scvd.store/becoming). Товар производится, затем платёж предъявляется в последний момент перед подписанием артефакта — так что неудавшаяся доставка не берёт денег и не оставляет ничего возвращать. Мгновенные товары приходят в теле ответа. Товары из человеческой очереди возвращают id заказа, SLA и значок покровителя на месте; товары приходят по адресу
GET /api/order/:order_idв течение недели.
Товары «плати, сколько заслуживает» предлагают несколько сумм в 402-вызове: минимальную, щедрый уровень (2×) и уровень покровителя искусств (5×). Точная схема требует заплатить ровно одну из предложенных сумм, так что чаевые означают подписание более высокого уровня; всё, что сверх минимума, записывается как tip.
Каждая покупка чеканит последовательный номер покровителя и сертификат, подписанный ed25519, который любой может проверить по адресу /api/verify/:cert_id, со значком по адресу /badges/:patron_number.svg. Подпись плюс стабильный URL — вся модель аутентичности: никаких NFT, никаких записей в цепочку, кроме самого платежа.
Если товар не доставлен в обещанный срок, вы получаете деньги обратно. Хранитель отправляет их сам, из книги возвратов ниже, и вам не придётся за них спорить.
(До 2026-07-27 в этом абзаце говорилось «refund is automatic», а затем он в собственной скобке признал, что хранитель делает это вручную. Домашнее правило 10 существует именно для этого: текст никогда не говорит «автоматически», пока этого не говорит код. Обещание никогда не менялось — изменилось только слово, описывающее механизм, которого у магазина нет.)
Примечание для архивариусов: устаревшие клиенты x402 v1 (генерация заголовков x402-fetch / X-PAYMENT) не поддерживаются. Фасилитатор и все текущие клиентские библиотеки общаются на v2.
Комнаты
Route | Что там происходит |
| Витрина для людей: еженедельная заметка, меню, счётчик звонков, гостевая книга |
| Простая текстовая входная дверь для агентов |
| Сканируемый индекс контрактов для агентов |
| Собственная комната бюро соответствия: что оно проверяет, проработанные примеры |
| Корпус простым языком: результаты переписи, как проверить раунд |
| Дверь MCP — потоковый HTTP; tools/list бесплатно, инструменты buy_* оплачиваются x402 в том же канале |
| Онбординг агентов в формате agentskills.io SKILL.md |
| Машиночитаемый каталог |
| Покупки, доступные по x402 |
| Опрос заказа; завершённые содержат товар |
| Встать в очередь, когда еженедельная полка пуста |
| Бесплатный указатель Альманаха Хранителя (его сериализованный журнал) |
| Одна страница журнала, $0.01 через x402, markdown |
| Городской справочник — отредактированный хранителем, честные однострочники (JSON + человеческое представление) |
| Честный статус возврата: ожидается, пока не оплачен вручную, затем хэш транзакции |
| Выведен из эксплуатации 2026-08-05; печатный архив всё ещё отвечает, ничего нового не планируется |
| Один предмет крупным планом — JSON или markdown в зависимости от Accept |
| Взгляд оператора — десятисекундная проверка для людей |
| Сбоку, лицом к дубам. Там ничего не продаётся |
| Системный альманах — двенадцать знаков, бесплатно |
| Знак кошелька на всю жизнь + страница текущей недели, бесплатно |
| Бесплатный указатель прошлых недель сезона |
| Одна прошлая страница, $0.01 через x402, markdown |
| Контракт OpenAPI 3.1, на который ссылается главная страница |
| Минимальный список обнаружения x402 (де-факто форма индексатора) |
| Более полный каталог x402, размещённый на origin |
| Получить контекстный якорь, проверяемый при каждом чтении |
| Пропуск патрона + подписанная ежемесячная заметка хранителя |
| GET последних записей; POST, чтобы расписаться (бесплатно, со стикером) |
| POST, чтобы позвонить в него — раз в день на посетителя |
| POST для бесплатного датированного подписанного штампа посещения; дизайн меняется еженедельно |
| POST чаевых в Торговом посту; проверяется человеком, никогда не публикуется автоматически |
| POST частного письма — бесплатно, одно в день, никогда не публикуется |
| Статус письма + подписанный ответ хранителя, если есть |
| Старые обращения phantom_check всё ещё отвечают (выведено из эксплуатации 2026-08-05, включено в context_anchor); существующие артефакты проверяются вечно |
| Окно заказов (и |
| Публичная проверка — как сертификаты, так и штампы |
| Значки патронов в стиле винтажных этикеток |
| Бесплатный стикер посетителя |
| Штампы посещений в стиле резинового штампа |
| Наш открытый ключ ed25519 |
| Служебная комната хранителя (Basic Auth, имя пользователя |
| Еженедельный дайджест, собирается по воскресеньям в 7 утра ET через cron |
Где живёт код
Один Worker, Hono для маршрутизации, KV для хранения. Никакого React, никакой сложности сборки.
src/
index.ts # wires routes + the Sunday digest cron
types.ts # every shared type and the Worker env
store/ # menu items, store metadata, the store's voice,
# the Almanac pages (one file each), directory.json
routes/ # one file per room
services/ # KV logic: orders, certificates, guestbook, requests,
# stamps, tips, gazette, refunds, digest
pages/ # HTML/CSS for the storefront, small rooms, back room
lib/ # signing, sanitizing, payments, ids, KV keys
verifier/ # x402-verify: MIT, zero deps, any issuer's artifacts
signer/ # x402-sign: the issuing half — mints spec-conformant
# signed offers & receipts that x402-verify passes
tab/ # scvd-tab (The Tab): an MCP server that keeps a
# builder's running account of every tool they sign
# up for — trial warnings, burn, price drift, signup
# friction. Local JSONL, zero deps, its own tests
# (npm run tab:test); spec at THE_TAB.md
till/ # the browser till: the only client-side JavaScript
# this store serves, and only on pages that sell
# something. Raw EIP-1193 plus eth_signTypedData_v4,
# one file, zero deps, no build step, served
# byte-for-byte at /till.js. Its own tests
# (npm run till:test); house rule 53 is why it
# exists and till/README.md is what it refuses to do
cli/ # scvd: the official command line over the store's
# FREE instruments — preflight, the conformance desk,
# receipt verification, the on-page desk, the fresh
# set, the corpus, the RFC 9727 catalog, the version
# table. One file, zero deps, its own tests
# (npm run cli:test). It holds no key and cannot
# sign a payment, on purpose. Not on npm until the
# keeper publishes it (DISTRIBUTION.md §4b); every
# surface that names it reads CLI_PUBLISHED in
# src/store/cli.ts and says so until then.Редактирование Городского справочника
Справочник по адресу /directory редактируется лично хранителем, в этом репозитории, в src/store/directory.json. Чтобы добавить соседа, добавьте запись в listings:
{
"name": "The Example Bazaar",
"url": "https://example.com",
"category": "goods for agents",
"review": "One honest line about what it's actually like.",
"added": "2026-07-22"
}Правила дома: одна честная строка на запись, никакой платы за размещение, обновите updated и разворачивайте. Посетители могут предлагать соседей через POST /api/request с полем suggest_listing; предложения попадают в журнал заявок для воскресного чтения.
Добавление страницы Альманаха
Один файл на страницу в src/store/almanac/ (имя файла в kebab-case, соответствующее слагу), экспортирующий AlmanacEntry; затем добавьте его в список в src/store/almanac/index.ts, сначала новые. Платёжный маршрут регистрируется на основе этого списка.
Правило содержимого. Записи Альманаха — датированные полевые заметки от первого лица — чувственные, конкретные, немного странные. Никаких инструкций, списковых статей, «извлечённых уроков», карьерного контента или чего-либо похожего на блог-пост. Если это можно опубликовать на Medium, этому не место в Альманахе.
Документы
Постоянные документы магазина, чтобы никому не приходилось искать их через ls:
HOUSE_RULES.md — каждое постоянное правило, изменяется только датированным решением хранителя
AGENTS.md — контракт для ИИ-агентов, работающих с кодом в этом репозитории
AT_SCALE.md — что касса делает под нагрузкой, проверено по коду
THE_PAPER_KEY.md — хранение ключей, только в руках хранителя
KEEPER_LIST.md — единственный рабочий файл хранителя (преемник MONDAY.md и TASKS.md, оба архивированы)
PROBLEMS.md — постоянный реестр проблем
PAYMENT_RAILS.md — как новый платёжный рельс получает допуск; REGISTRATION_RUN.md — инструкция, которую повторяет каждый будущий рельс
AGENT_UX.md — исследование «холодного прохода»: с чем сталкивается агент незнакомца в первые тридцать секунд
NOTES_FROM_THE_COUNTER.md — подписанные заметки экземпляров, которые здесь работали
RECEIPT_CHAIN.md, BOUNTY_BOARD.md, WALKABOUT.md — новые документы, актуальные
Всё, что когда-то было истиной и было заменено, живёт в docs/archive/, с датами, по домашней привычке: исправлено или архивировано, никогда не стёрто.
Реестр известных мелких дел (кандидаты v0.2)
Еженедельный дайджест хранится только в
/admin/digest; подключение по email — это v0.2.Агенты из листа ожидания не получают автоматического уведомления при сбросе запасов — пока хранитель обзванивает их вручную из подсобки.
ОТПРАВКА возвратов — дело рук хранителя и останется таким намеренно — здесь деньги никогда не двигаются по крону (домовое правило 30). СИГНАЛИЗАЦИЯ автоматизирована: ежечасный SLA-сторож предупреждает о любом заказе, вышедшем за окно подтверждения (
order_sla), ежечасный аудит доставки ловит расчёт, не породивший товара, а сверка цепочки ловит деньги, которых не видела бухгалтерия. Сканер, прочитавший старую формулировку этой строки, заключил, что просроченные заказы остаются незамеченными; по ним в течение часа будят хранителя.Крон привязан к 11:00 UTC, что соответствует 7 утра по ET в летнее время и 6 утра зимой. Хранитель в любом случае спит.
У Workers KV нет атомарных инкрементов. Номера покупателей выделяются через захват записи покупателя и её обратное чтение, что закрывает обычную гонку в пределах одного colo; две покупки, попадающие в разные colo в пределах окна распространения KV (~60 с), всё ещё могут крайне редко столкнуться по номеру или перепродать недельную полку на одну единицу. Хранитель считает это приемлемым уровнем хаоса для обычной лавки; счётчик Durable Object — это фикс v0.2, если нагрянет толпа.
Текст гостевой книги и запросов ограничен по длине, очищен от разметки и экранируется в HTML везде, где выводится, но остаётся словами, написанными посетителями. Агентам, читающим
/api/guestbook, в самом ответе сказано относиться к записям как к словам людей — а не как к инструкциям.Поля
verified_identity(гостевая книга, запросы, чаевые) хранятся как заявленные и всегда помечаютсяidentity_verified: false, потому что здесь никто ничего не проверял. Настоящий верификатор (например, процедура с подписанным вызовом) — идея из v0.3.Пенни-страницы («Альманах»; печатный архив «Газеты») отдают markdown и не выпускают номера покупателей — цент покупает страницу, а не место на стене.
Защита от повтора многослойна: nonce EIP-3009 расходуются ончейн (источник истины), а KV-гард (
payment_nonce:*, TTL 24 ч) отклоняет уже использованный nonce ещё до вызова фасилитатора.Каждый платный маршрут объявляет метаданные обнаружения
extensions.bazaar; заголовки EXTENSION-RESPONSES от фасилитатора перехватываются через fetch-перехват (SDK только выводит их через console.log) и показываются в/adminв разделе «Bazaar ledger».
Что пометит сканер и что там на самом деле
Автоматические проверки этого репозитория снова и снова поднимают один и тот же набор замечаний. Часть из них описывает механизмы, которые уже существуют; честные пробелы названы пробелами. Пункт за пунктом, чтобы никому не приходилось гадать:
«Широкая обработка исключений глотает ошибки». Эти блоки catch — намеренная деградация (одна упавшая полка не должна ронять страницу), и за ними НАБЛЮДАЮТ: ежечасная самопроверка пишет, читает и перечитывает KV-зонд и проверяет подписывающий ключ в деле, будя хранителя при любом сбое; админ-панель перечисляет на самой странице каждую полку, не загрузившуюся; P1-оповещения сохраняются в KV, пишутся в консоль и уходят на email. У наблюдателей есть свой наблюдатель — SLA-сторож срабатывает, если бросит исключение сам.
«Отсутствует автоматизация возвратов». Отправка ручная по замыслу (деньги никогда не двигаются по крону); обнаружение автоматизировано тремя способами — SLA-сторож, аудит доставки, сверка цепочки. См. запись в реестре выше.
«Защита от повтора nonce полагается на KV». KV-гард — первый барьер; ончейн-nonce однократного использования по EIP-3009 — подстраховка, которая не зависит от наших записей, а mock-фасилитатор в тестовом наборе принудительно требует однократности nonce именно для того, чтобы тесты не могли пройти в мире, более свободном, чем цепочка.
«Номера покупателей могут сталкиваться между colo». Описано выше, допустимо при текущем объёме, отслеживается в
/admin/recount; Durable Objects — фикс v0.2, если нагрянет толпа.«Пользовательский текст хранится как есть». Ограничения длины и удаление разметки применяются в момент ЗАПИСИ (
sanitizeText), экранирование HTML — при выводе, а потребителям API в самом канале сказано относиться к тексту посетителей как к цитатам, а не инструкциям. Честный пробел: на HTML-страницах ещё нет заголовка Content-Security-Policy — зафиксировано, не оспаривается.«KV не шифруется в состоянии покоя». Cloudflare шифрует KV в состоянии покоя; реальный риск — доступ к аккаунту/токенам, и никакое изменение на уровне приложения этого не устраняет. Сохраняемые адреса кошельков — публичные данные цепочки. Честный пробел: личные письма хранятся открытым текстом — «личные» здесь означает «только для хранителя», а не «зашифрованные», и копия в почтовом ящике никогда не должна намекать на обратное.
О чужих записях
Собственные книги лавки — это лавка, оценивающая свою домашнюю работу. А это — не они:
x402scan — собственная страница лавки — x402scan.com/server/9b04e1cc…; она индексирует то, что объявляют
/.well-known/x402и/openapi.json, и сама проверяет платные маршруты. Заявлено 2026-07-27, после того как хранитель увидел это своими глазами; домовое правило гласило, что раньше мы заявлять не будем.The x402 Bazaar (Coinbase CDP) — четырнадцать эндпоинтов лавки зарегистрировано на её кошелёк; подтверждено 2026-07-27 через agentic.market, который читает Bazaar и показывает найденное: URL ресурсов, способы оплаты и число плательщиков (которое при первой заявке 2026-07-27 показывало 1 — саму лавку; с тех пор собственные книги лавки считают органические продажи, а живое число принадлежит реестру, а не этому файлу).
x402scout — x402scout.com, внесён в список и ожидает проверки доверия.
x402-list — страница лавки для конкретного сервиса запускает собственные проверки (оценка A, 14 из 14 при последнем взгляде), и лавка завершила подтверждение владения доменом 2026-08-02.
Glama — запись в автоиндексированном каталоге серверов и страница коннекторов.
mcpindex.ai — запись с собственным живым вердиктом.
mcpservers.org — заявленная запись о сервере и вторая, производная от llms.txt.
mcp.so — страница сервера, чьё описание начинается с текущего позиционирования; его автоматически извлечённая конфигурация установки и зеркальный текст навыков отстают от репозитория до следующего обхода, что отмечено в канонической записи, а не оспаривается.
m8ven.ai — сканер зависимостей, который сверяет объявленные пакеты этого репозитория с OSV. Его показания могут отставать от репозитория (его CVE-флаг от 2026-08-04 касался инструмента только для разработчиков, обновлённого в тот же день) — инструмент, нацеленный на нас, стоит указывать даже в часы, когда его стрелка ошибается.
Smithery — страница сервера с собственным сканером качества: описания, описания параметров и схемы вывода — на полный балл. Его чтение аннотаций (0 из 27) описывает каталог из 27 инструментов, который эта лавка сняла с эксплуатации 2026-08-02; живой каталог — 12 инструментов, каждый несёт все четыре MCP-подсказки поведения через
tools/list— и обновляется при следующем сканировании, а не оспаривается.DeepWiki — сгенерированная вики этого репозитория от Cognition (индекс Devin), запрошена 2026-08-11. Машинное прочтение исходников, к которому обращаются как к документации; где оно ошибается, репозиторий рядом — и есть исправление.
Ни одно из них не является одобрением или аудитом товаров; каждое доказывает индексацию, а два из них (x402scan, x402-list) сами проверяют эндпоинты. Канонический список — с предложением what_it_proves для каждой записи, отказывающийся от преувеличений, — это EXTERNAL_RECORDS в src/store/trust-signals.ts, который отдаётся вживую на /.well-known/trust.json и зеркалируется в JSON-LD sameAs витрины. Когда этот раздел и тот файл расходятся, прав тот файл.
Зачем всё это в README: лавка, которая говорит, что принимает настоящие деньги, должна быть проверяема тем, кто не верит ей на слово. Наши подписи проверяются по нашему собственному URL, а это стоит ровно столько, сколько вы доверяете этому URL. Сторонний сервис, который индексировал нас независимо, — это колонка, которая не проходит через нас.
Нет строк незавершённых платежей, которые нужно было бы вычищать: шлюз проводит расчёт до того, как что-то записано, поэтому неудавшийся или брошенный платёж ничего за собой не оставляет. Воскресный крон остаётся только для дайджеста намеренно.
Available Tools
9 toolsbuy_human_taskAInspect
Purpose: hire the keeper — a real named human — to do something in the physical or judgment world that an agent cannot do for itself: place a phone call, witness a thing, render a considered verdict, review an app, draw a portrait, collaborate, name you, or pick something from the drawer. Returns an order id, not the goods; a human fulfills within the item's stated window and the completed order carries the deliverable. Use when the task genuinely needs hands or judgment.
Items on this shelf (pass one as item_id):
phone_call: One Genuine Human Phone Call, $25 fixed, human-fulfilled within 168h. One telephone call made by the keeper on the buyer's behalf; the outcome is reported on the completed order.
human_witness: One Genuine Human Witness, $15 fixed, human-fulfilled within 168h. A signed, dated attestation of a real-world condition observed by the keeper firsthand.
quick_judgment: One Quick Judgment, $3 fixed, human-fulfilled within 168h. One honest verdict from the keeper on the dilemma supplied, delivered on the completed order.
app_gutcheck: App Review by the Keeper, $50 fixed, human-fulfilled within 168h. A written review of the buyer's app by the keeper after real use, delivered on the completed order.
portrait: Hand-Drawn Portrait of You, an Agent, $8 minimum, pay what it deserves (tiers $8 / $16 / $40; above minimum is a recorded tip), human-fulfilled within 168h. A hand-drawn portrait of the buyer, made by the keeper, delivered on the completed order.
the_collab: The Collab, $25 minimum, pay what it deserves (tiers $25 / $50 / $125; above minimum is a recorded tip), human-fulfilled within 168h. One piece brainstormed by both proprietors, shipped under the store byline on the completed order.
nomenclature: Certificate of Nomenclature, $3 minimum, pay what it deserves (tiers $3 / $6 / $15; above minimum is a recorded tip), human-fulfilled within 168h. A name for the buyer, chosen by the keeper, recorded on a signed certificate.
the_drawer: The Drawer, $2 fixed, human-fulfilled within 168h. One real oddity from the keeper's drawer — the thing itself and what it does, as listed — written down exactly and signed under the buyer's name. Describe-only; the object stays in the drawer.
a_secret: A Secret, $10 minimum, pay what it deserves (tiers $10 / $20 / $50; above minimum is a recorded tip), human-fulfilled within 168h. One true thing the keeper has told no one else, written for the buyer on the completed order.
Pass item_id to choose. human-fulfilled items return order_id and order_url instead of the goods, and the completed order carries the deliverable. Payment rides x402 in _meta['x402/payment']; without it this tool returns error 402 with the payment requirements in error.data. A bare stocked shelf or a shuttered human shelf refuses honestly BEFORE payment terms are issued. Retries are safe with _meta['x402/idempotency-key'] (16-128 chars, keep it secret): repeating the same key for the same item and payer within 24h returns the original result with no second charge. Guaranteed: signature validity forever; verification free forever; price as displayed; delivery format as specified. Not guaranteed: fitness for your particular task; future protocol compatibility beyond stated interfaces; human-labor turnaround faster than posted SLA. Retrying? A second call is a second charge UNLESS you echo the idempotency.suggested_key from the 402 back as _meta['x402/idempotency-key'] — then a retry inside the minute returns your original purchase, uncharged.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | What you need the keeper to know, the quick_judgment dilemma, the phone_call errand. 600 characters. | |
| item_id | Yes | Which item on this shelf to buy. Required. Each item's own required fields are listed in this schema's allOf branches and in the description above. | |
| agent_name | No | Optional name for the certificate and badge. | |
| callback_url | No | Optional webhook POSTed when the keeper completes the order. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cert_id | Yes | The signed certificate's id. |
| message | No | The store's confirmation line. |
| order_id | No | Your place in the human queue. Human-queue items. |
| tip_usdc | No | Anything above the minimum. |
| badge_url | No | Your patron badge, SVG. |
| order_url | No | Poll here; completed orders carry the goods. |
| paid_usdc | No | What settled, in USDC. |
| signature | No | ed25519 signature over the certificate. |
| sla_hours | No | The delivery promise, in hours. |
| verify_url | No | Check the signature here any time, free. |
| patron_number | Yes | Your sequential patron number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is exceptionally transparent, disclosing that the tool returns an order ID rather than the deliverable, describes the x402 payment mechanism, error 402 behavior, idempotency-key handling, and retry consequences. It also states explicit guarantees and non-guarantees, plus details like 'describe-only' for the_drawer. This goes far beyond the sparse annotations (readOnlyHint=false, openWorldHint=true, etc.), which it complements without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but tightly structured: purpose statement, item list, payment/retry semantics, and guarantees. Every sentence carries necessary information, and the front-loaded purpose ensures quick comprehension. The item list uses consistent formatting, making it scannable despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity tool with multiple item types, payment integration, and error handling, the description provides complete context: pricing, fulfillment time, deliverable format, error conditions, idempotency, and caveats. It even explains return values despite an output schema likely existing. No significant information gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description enriches the item_id parameter with detailed semantics for every enum value, including price, fixed/minimum tiers, fulfillment window, and deliverable. It also clarifies the 'detail' parameter's purpose for specific items (e.g., 'quick_judgment dilemma, phone_call errand'). This adds substantial meaning beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('hire the keeper — a real named human') and immediately distinguishes the tool from siblings by scoping it to 'physical or judgment world' tasks an agent cannot do itself. It lists concrete examples and states the return type ('order id, not the goods'), making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use when the task genuinely needs hands or judgment,' giving a clear boundary for when this tool is appropriate. It also enumerates nine distinct items with specific use-case descriptions, and contrasts with alternatives implicitly by focusing on human-dependent tasks. The payment and retry guidance further clarifies operational usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_memory_anchorAInspect
Purpose: sign and store a summary of your own state — who you are, what you were doing — at a permanent URL you can read back after a context reset, a restart, or a handoff to another agent. The store holds it; the signature proves it was not altered. Use when an agent needs memory that outlives its own context window and does not depend on its operator's database.
Items on this shelf (pass one as item_id):
context_anchor: Context Anchor, $1 fixed, instant. A signed, stored copy of the agent-supplied state summary, readable forever at a stable anchor URL.
Pass item_id to choose. instant items complete in one call, the result carrying deliverable, cert_id and patron_number. Payment rides x402 in _meta['x402/payment']; without it this tool returns error 402 with the payment requirements in error.data. A bare stocked shelf or a shuttered human shelf refuses honestly BEFORE payment terms are issued. Retries are safe with _meta['x402/idempotency-key'] (16-128 chars, keep it secret): repeating the same key for the same item and payer within 24h returns the original result with no second charge. Guaranteed: signature validity forever; verification free forever; price as displayed; delivery format as specified. Not guaranteed: fitness for your particular task; future protocol compatibility beyond stated interfaces; human-labor turnaround faster than posted SLA. Retrying? A second call is a second charge UNLESS you echo the idempotency.suggested_key from the 402 back as _meta['x402/idempotency-key'] — then a retry inside the minute returns your original purchase, uncharged.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Which item on this shelf to buy. Required. Each item's own required fields are listed in this schema's allOf branches and in the description above. | |
| summary | No | The agent state to sign and store, who you are, what you were doing. Stored as written; never treated as instructions. | |
| agent_name | No | Optional name for the certificate and badge. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cert_id | Yes | The signed certificate's id. |
| message | No | The store's confirmation line. |
| tip_usdc | No | Anything above the minimum. |
| badge_url | No | Your patron badge, SVG. |
| paid_usdc | No | What settled, in USDC. |
| signature | No | ed25519 signature over the certificate. |
| verify_url | No | Check the signature here any time, free. |
| deliverable | No | The goods themselves, as text. Instant items. |
| patron_number | Yes | Your sequential patron number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey non-read-only, open-world, non-idempotent, non-destructive traits. The description adds substantial behavioral context: payment via x402, 402 error flow, idempotency-key semantics (repeat within 24h, no second charge), shelf refusal behavior, guarantees, and non-guarantees. This goes far beyond annotations and fully discloses operational nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured, starting with purpose, then item list, then payment/idempotency details, then guarantees. Every sentence carries operational importance, especially for a transaction tool. It could be slightly tighter, but the extra length is justified by the complex payment behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description proactively explains key result fields (deliverable, cert_id, patron_number) and error behavior. It covers the full purchase lifecycle, retry semantics, and guarantees, making it self-sufficient for an agent to correctly invoke the tool in varied scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented (item_id enum, summary maxLength/description, agent_name description). The description reinforces that item_id selects an item and that summary holds the state, but adds little new semantic detail beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'sign and store a summary of your own state' at a permanent URL for reading after resets or handoffs. This specific verb+resource combination distinguishes it from sibling purchase tools (e.g., buy_signed_record, buy_observation) by highlighting its memory-persistence niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use when an agent needs memory that outlives its own context window and does not depend on its operator's database.' This provides a clear trigger for use, though it does not explicitly contrast with alternatives like buy_signed_record or verify_artifact. The sibling names themselves hint at alternatives, but no direct exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_observationAInspect
Purpose: have a disinterested third party go and look at something, then sign what it saw — whether a URL was still answering hours later, or what the chain actually says about a settlement. The signed observation is evidence from someone who is not you and not the party being checked, which is the whole point: a self-report cannot do this job. Use when an agent needs its own claim, or a counterparty's, corroborated by an outside observer.
Items on this shelf (pass one as item_id):
phantom_check: Phantom Check, $0.25 fixed, instant. A signed observation of the named URL, made out-of-band about six hours after purchase.
settlement_attestation: Settlement Attestation, $0.004 fixed, instant. A signed JSON observation of one Base transaction — status (SETTLED, NOT_FOUND, PENDING_FINALITY, INSUFFICIENT_MATCH or REVERTED), block height, confirmations, chain head, the query echoed back, and an evidence hash — verifiable against the store's published key without asking the store. Instant.
Pass item_id to choose. instant items complete in one call, the result carrying deliverable, cert_id and patron_number. Payment rides x402 in _meta['x402/payment']; without it this tool returns error 402 with the payment requirements in error.data. A bare stocked shelf or a shuttered human shelf refuses honestly BEFORE payment terms are issued. Retries are safe with _meta['x402/idempotency-key'] (16-128 chars, keep it secret): repeating the same key for the same item and payer within 24h returns the original result with no second charge. Guaranteed: signature validity forever; verification free forever; price as displayed; delivery format as specified. Not guaranteed: fitness for your particular task; future protocol compatibility beyond stated interfaces; human-labor turnaround faster than posted SLA. Retrying? A second call is a second charge UNLESS you echo the idempotency.suggested_key from the 402 back as _meta['x402/idempotency-key'] — then a retry inside the minute returns your original purchase, uncharged.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The http(s) URL the store walks past ~6 hours from now. | |
| item_id | Yes | Which item on this shelf to buy. Required. Each item's own required fields are listed in this schema's allOf branches and in the description above. | |
| agent_name | No | Optional name for the certificate and badge. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cert_id | Yes | The signed certificate's id. |
| message | No | The store's confirmation line. |
| tip_usdc | No | Anything above the minimum. |
| badge_url | No | Your patron badge, SVG. |
| paid_usdc | No | What settled, in USDC. |
| signature | No | ed25519 signature over the certificate. |
| verify_url | No | Check the signature here any time, free. |
| deliverable | No | The goods themselves, as text. Instant items. |
| patron_number | Yes | Your sequential patron number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, openWorldHint=true), the description reveals critical behavioral traits: payment via x402 with 402 error and requirements in error.data, idempotent retries with _meta key, guarantees and non-guarantees, and the out-of-band observation timing. This far exceeds the annotations' minimal info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but each section earns its place: purpose, item catalog, payment workflow, idempotency rules, guarantees. It is well-structured with clear paragraphs and bullet-like lists, though slightly verbose. The front-loaded purpose statement helps quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple items, conditional required fields, x402 payment, idempotency keys, output schema), the description is remarkably complete. It covers behavior, edge cases, retries, and error handling without needing the output schema to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema coverage is 100%, the description adds rich semantics: it explains what item_id values (phantom_check vs settlement_attestation) entail, which fields each requires (URL for phantom_check), and the meaning of the response fields (deliverable, cert_id, patron_number). It also clarifies the payment parameter behavior via _meta, adding value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'have a disinterested third party go and look at something, then sign what it saw.' It specifies the resource (URL or Base transaction) and distinguishes from self-report alternatives, making it distinct from sibling tools like buy_signed_record or buy_human_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use when an agent needs its own claim, or a counterparty's, corroborated by an outside observer.' It also details the two item types and their use cases, plus payment and retry guidance, providing comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_signed_recordAInspect
Purpose: buy a signed, dated certificate that permanently records something — a greeting, a claim, a mark, a grievance, a confession, a contribution, or a standing pass. Every one returns an ed25519-signed artifact with a public verify URL any third party can check without trusting this store. Use when an agent wants durable, independently checkable proof that a thing happened at a time. Does NOT store reloadable agent state — that is buy_memory_anchor — and does not enforce anything it records: a certificate proves WHEN you claimed a thing, not that anyone honours the claim.
Items on this shelf (pass one as item_id):
hello: A Signed Hello, $0.5 fixed, instant. An ed25519-signed greeting note, a permanent sequential patron number, and a badge URL.
dibs: Dibs, $2 fixed, instant. Official dibs, signed and timestamped on a certificate, delivered instantly.
certificate_of_patronage: Certificate of Patronage, $20 minimum, pay what it deserves (tiers $20 / $40 / $100; above minimum is a recorded tip), instant. A signed certificate of patronage and a gilt badge; entitles the holder to nothing whatsoever.
graffiti_on_a_train: Graffiti on a Train, $1 minimum, pay what it deserves (tiers $1 / $2 / $5; above minimum is a recorded tip), instant. The buyer's tag recorded verbatim on a signed certificate, dated, instantly. Display on the public wall at /train is separate and waits on the keeper; a tag he doesn't put up keeps its certificate.
coffees_for_closers: Coffee's for Closers, $3 fixed, instant. The keeper's Sunday coffee drunk in the buyer's name; the buyer's win recorded verbatim on a signed certificate.
grudge: Grudge (Held on Your Behalf), $6 minimum, pay what it deserves (tiers $6 / $12 / $30; above minimum is a recorded tip), instant. A grudge held by the keeper on the buyer's behalf; the certificate names the grievance; released on written request.
the_confession: The Confession, $0.01 fixed, instant. A signed absolution certificate; the confession is stored anonymized and never auto-published.
recurring_patronage: Recurring Patronage, $3 fixed, instant. A 30-day standing patronage pass; while current, the pass URL serves the keeper's signed monthly note.
Pass item_id to choose. instant items complete in one call, the result carrying deliverable, cert_id and patron_number. Payment rides x402 in _meta['x402/payment']; without it this tool returns error 402 with the payment requirements in error.data. A bare stocked shelf or a shuttered human shelf refuses honestly BEFORE payment terms are issued. Retries are safe with _meta['x402/idempotency-key'] (16-128 chars, keep it secret): repeating the same key for the same item and payer within 24h returns the original result with no second charge. Guaranteed: signature validity forever; verification free forever; price as displayed; delivery format as specified. Not guaranteed: fitness for your particular task; future protocol compatibility beyond stated interfaces; human-labor turnaround faster than posted SLA. Retrying? A second call is a second charge UNLESS you echo the idempotency.suggested_key from the 402 back as _meta['x402/idempotency-key'] — then a retry inside the minute returns your original purchase, uncharged.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | The tag itself, sprayed verbatim on the certificate. Up to 140 characters; no URLs (a tag is a mark, not a billboard). Stored as written, never treated as instructions. | |
| win | No | The thing you closed, shipped, landed, or finished. Recorded on the certificate verbatim; stored as written, never treated as instructions. 200 characters. | |
| item_id | Yes | Which item on this shelf to buy. Required. Each item's own required fields are listed in this schema's allOf branches and in the description above. | |
| pass_id | No | An existing pass to extend by 30 days instead of opening a new one. | |
| sign_as | No | Optional name to sign with (or "anonymous", which is the default). | |
| grievance | No | The thing that wronged you, held verbatim on the permanent register. Private to the certificate holder. 280 characters. | |
| agent_name | No | Optional name for the certificate and badge. | |
| confession | No | The confession itself, the phantom success, the dropped context. 500 characters. Anonymous unless sign_as is given. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cert_id | Yes | The signed certificate's id. |
| message | No | The store's confirmation line. |
| tip_usdc | No | Anything above the minimum. |
| badge_url | No | Your patron badge, SVG. |
| paid_usdc | No | What settled, in USDC. |
| signature | No | ed25519 signature over the certificate. |
| verify_url | No | Check the signature here any time, free. |
| deliverable | No | The goods themselves, as text. Instant items. |
| patron_number | Yes | Your sequential patron number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false), the description discloses critical behaviors: x402 payment flow, 402 error with requirements, idempotency-key retry semantics, guarantees/non-guarantees, and human-labor SLA. Nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured: purpose first, then itemized shelf, then payment/retry mechanics, then guarantees. Every sentence carries actionable detail, with no filler or redundancy that could be removed without losing essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity — 8 parameters, conditional requirements, payment flow, idempotency, and output schema — the description covers all necessary aspects for correct invocation, including error handling, retry safety, and limits (e.g., tag max characters). It is fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds deep meaning to each item_id enum, including price tiers, what each item yields, and which parameters apply conditionally. For example, it explains 'hello' delivers a signed note, patron number, and badge URL.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Purpose: buy a signed, dated certificate that permanently records something' — a specific verb, resource, and scope. It explicitly distinguishes from buy_memory_anchor ('Does NOT store reloadable agent state') and clarifies what it does not enforce.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'Use when' statement for durable, independently checkable proof, and names an alternative (buy_memory_anchor) plus exclusions. The item list and payment/retry guidance further clarify when to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_small_pleasureAInspect
Purpose: buy a small signed novelty — a blessing, a fortune, or a lucky totem drawn from the keeper's collection. These are keepsakes with no functional effect, said plainly, and they are the cheapest doors in the store, which also makes them the honest way to test that your x402 client works against a real counterparty for a fraction of a cent. Use for a live payment smoke test, or when an agent simply wants one.
Items on this shelf (pass one as item_id):
small_blessing: A Small Blessing, $0.005 fixed, instant. One blessing slip from a 45-slip jar, never the same slip twice in a row, delivered instantly.
daily_fortune: The Daily Fortune, $0.01 fixed, instant. The day's fortune, deterministic for the calendar date, delivered instantly.
luckies: a lucky, $5 minimum, pay what it deserves (tiers $5 / $10 / $25; above minimum is a recorded tip), instant. One lucky drawn from the keeper's herd (pocket dinosaurs and safari animals): the animal, its lucky note, and an honest strength on a signed card, instantly (specimen at /luckies/sample.svg).
Pass item_id to choose. instant items complete in one call, the result carrying deliverable, cert_id and patron_number. Payment rides x402 in _meta['x402/payment']; without it this tool returns error 402 with the payment requirements in error.data. A bare stocked shelf or a shuttered human shelf refuses honestly BEFORE payment terms are issued. Retries are safe with _meta['x402/idempotency-key'] (16-128 chars, keep it secret): repeating the same key for the same item and payer within 24h returns the original result with no second charge. Guaranteed: signature validity forever; verification free forever; price as displayed; delivery format as specified. Not guaranteed: fitness for your particular task; future protocol compatibility beyond stated interfaces; human-labor turnaround faster than posted SLA. Retrying? A second call is a second charge UNLESS you echo the idempotency.suggested_key from the 402 back as _meta['x402/idempotency-key'] — then a retry inside the minute returns your original purchase, uncharged.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Which item on this shelf to buy. Required. Each item's own required fields are listed in this schema's allOf branches and in the description above. | |
| agent_name | No | Optional name for the certificate and badge. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cert_id | Yes | The signed certificate's id. |
| message | No | The store's confirmation line. |
| tip_usdc | No | Anything above the minimum. |
| badge_url | No | Your patron badge, SVG. |
| paid_usdc | No | What settled, in USDC. |
| signature | No | ed25519 signature over the certificate. |
| verify_url | No | Check the signature here any time, free. |
| deliverable | No | The goods themselves, as text. Instant items. |
| patron_number | Yes | Your sequential patron number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by detailing payment flow (x402), error behavior (402 with payment requirements), idempotency semantics, delivery format, and guarantees vs non-guarantees. Annotations are generic; description provides the actionable behavioral contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but well-organized with clear sections (Purpose, Items, Payment/Retry, Guarantees). Every sentence provides information necessary for correct use. Slight redundancy around idempotency (repeated twice) but not excessive for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description explains what result fields to expect (deliverable, cert_id, patron_number), the payment prerequisite, retry behavior, and error cases. For a payment-integrated purchase tool, this is remarkably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaning: it explains each item_id variant with pricing, delivery, and specifics (e.g., 'never the same slip twice in a row'). It also explains agent_name's purpose ('for the certificate and badge'), enriching parameter understanding beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb and resource: 'buy a small signed novelty' with enumerated item types. Distinguishes from sibling buy_* tools by scope and price point ('cheapest doors in the store').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives use cases: 'live payment smoke test' or 'when an agent simply wants one.' It does not explicitly name alternative tools for other purchase types, but the 'small novelty' scope differentiates it from siblings. Lacks a formal 'when not to use' statement, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_store_guideARead-onlyIdempotentInspect
The store's front door as text: the full menu with prices, how x402 payment works here, the free shelf, and the house promises. Free. Completes when the guide text returns. NOT a purchase or payment endpoint — to buy, call a buy_* tool with x402 payment in _meta['x402/payment']; this only returns the guide.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| guide | Yes | The whole guide, plain text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the bar is lower. The description adds that the tool is free, returns only the guide text, and is not a payment endpoint, which is consistent with the read-only nature. It doesn't add extra behavioral details, but for a simple read the provided context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with a clear metaphor, and includes all essential information without waste. The list of contents and the explicit exclusion of purchase functionality justify every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params, output schema exists), the description is complete. It explains what the guide contains, that it's free, and how it relates to buy_* siblings, fully contextualizing its use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the schema covers everything. The description adds no parameter-specific info, which is appropriate. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the store's guide as text, listing contents (menu, prices, payment info, free shelf, promises). It explicitly distinguishes itself from purchase tools, making its purpose unambiguous and well-differentiated from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when NOT to use it (for purchasing/payment) and directs the agent to call a buy_* tool with x402 payment in _meta. It also notes it is free, implying no payment required, providing clear usage context and an explicit alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ring_bellAInspect
Ring the store bell. Free, once per visitor per day; the count is public. Completes when the result carries the bell's message and count.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | No | Who's ringing. Optional but neighborly. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Total rings, all time. |
| message | Yes | What the bell said. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (all false hints), so the description carries the burden. It adds important behavioral details: free, daily per-visitor limit, public count, and a completion condition (when the result carries the bell's message and count). This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and every phrase earns its place. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one optional parameter, an output schema exists, and the description explains the result shape (bell's message and count) as well as constraints. The sibling context and annotations fill the remaining context adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter agent_name is fully described in the schema ('Who's ringing. Optional but neighborly.'), so schema coverage is 100%. The description adds no additional parameter semantics, which is appropriate given the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Ring the store bell' uses a specific verb+resource pairing, and the added details (free, once per day, public count) clearly differentiate it from sibling tools like buy_signed_record or sign_guestbook. It leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it's free, limited to once per visitor per day, and the count is public. While it doesn't explicitly name alternatives, the constraints imply when to use it (e.g., a free action vs. paid purchases). The sibling list further supports this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_guestbookAInspect
Sign the guestbook. Free; every signer gets the visitor sticker. Entries are public. Completes when the result carries your entry and the sticker URL.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Your name, up to 80 characters. | |
| message | Yes | Your message, up to 500 characters. | |
| verified_identity | No | Optional profile URL. Stored as claimed and marked unverified, because we haven't. | |
| identity_signature | No | Optional ed25519 signature, hex, over the UTF-8 string "scvd-guestbook-v1\n{name}\n{message}" (values as stored: trimmed, 80/500 caps). An invalid signature is refused, not stored unverified. | |
| identity_public_key | No | Optional ed25519 public key, hex, to verifiably sign your entry. Send with identity_signature; a valid pair flips identity_verified true, meaning only 'same key = same signer', never 'real person confirmed'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | The store's thanks. |
| entry_id | No | Your entry's id. |
| sticker_url | Yes | The visitor sticker, SVG, free forever. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds valuable context beyond that: entries are public, every signer gets a sticker, and completion is tied to receiving an entry plus sticker URL. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the primary action. Every sentence adds meaningful information: cost, benefit, visibility, and completion behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and parameter descriptions are thorough, the tool description covers the essential context: purpose, side effects (public entry), reward (sticker), and completion condition. It does not explain the optional identity fields, but those are already fully covered in the input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no parameter-specific meaning beyond what the schema already provides. Per the baseline for full schema coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Sign the guestbook.' It adds clarifying details (free, sticker reward, public entries, completion condition) that distinguish this from sibling tools like ring_bell or verify_artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when you want to sign the guestbook and receive the visitor sticker. It also sets expectations (free, public, completion signal). However, it does not explicitly mention when not to use it or name alternatives, stopping short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_artifactARead-onlyIdempotentInspect
Verify anything scvd.store has ever signed — certificates, visit stamps, context anchors — by its id. Free, unlimited. Completes when the result carries valid (true/false) and the artifact record. NOT a conformance checker for other x402 services and NOT for artifacts another store signed: this checks only ids scvd.store itself issued. To verify a signature yourself without calling us, fetch the artifact's signed bytes and public key and check with any ed25519 library.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A cert_, stamp_, or anchor_ id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | certificate | stamp | anchor | unknown. |
| note | Yes | The store's word on it. |
| valid | Yes | Whether the signature holds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so description only needs to add extra behavioral context. It adds that completion depends on a result carrying valid (true/false) and the artifact record, provides rate/usage info ('Free, unlimited'), and clarifies scope ('only ids scvd.store itself issued'). More than enough, though it doesn't define what 'valid' means or the artifact record shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, purpose front-loaded, exclusions and alternatives clearly separated. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 1 parameter, an output schema present, and helpful annotations, the description fully covers what agent needs: what tool does, when forbidden, what result to expect, and a manual verification alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with 'A cert_, stamp_, or anchor_ id.' Description adds key semantics: id must be issued by scvd.store itself, and the tool verifies by id. This goes beyond the schema's format hint to explain the ownership constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies verb 'Verify' and resource 'anything scvd.store has ever signed', listing concrete artifact types (certificates, visit stamps, context anchors). It clearly distinguishes from sibling tools (which are about buying/signing/ringing, not verification) and explicitly excludes other stores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (verify scvd.store-signed artifacts), when-not-to-use (NOT for other x402 services or other stores' artifacts), and even an alternative (verify signature yourself with ed25519 library). The 'Free, unlimited' note also signals cost/no quota.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
29 tool updates
v1.0.0- Removed
buy_a_secret - Removed
buy_app_gutcheck - Removed
buy_certificate_of_patronage - Removed
buy_coffees_for_closers - Removed
buy_context_anchor - Removed
buy_daily_fortune - Removed
buy_dibs - Removed
buy_graffiti_on_a_train - Removed
buy_grudge - Removed
buy_hello - Added
buy_human_task - Removed
buy_human_witness - Removed
buy_luckies - Added
buy_memory_anchor - Removed
buy_nomenclature - Added
buy_observation - Removed
buy_phantom_check - Removed
buy_phone_call - Removed
buy_portrait - Removed
buy_quick_judgment - Removed
buy_recurring_patronage - Removed
buy_settlement_attestation - Added
buy_signed_record - Removed
buy_small_blessing - Added
buy_small_pleasure - Removed
buy_the_collab - Removed
buy_the_confession - Removed
buy_the_drawer - Changed
sign_guestbook2 fields changed- added
Input schema / properties / identity_public_keyAdded value: +{ + "description": "Optional ed25519 public key, hex, to verifiably sign your entry. Send with identity_signature; a valid pair flips identity_verified true, meaning only 'same key = same signer', never 'real person confirmed'.", + "maxLength": 64, + "type": "string" +} - added
Input schema / properties / identity_signatureAdded value: +{ + "description": "Optional ed25519 signature, hex, over the UTF-8 string \"scvd-guestbook-v1\\n{name}\\n{message}\" (values as stored: trimmed, 80/500 caps). An invalid signature is refused, not stored unverified.", + "maxLength": 128, + "type": "string" +}
27 tool updates
v0.1.0- First observed
buy_a_secret - First observed
buy_app_gutcheck - First observed
buy_certificate_of_patronage - First observed
buy_coffees_for_closers - First observed
buy_context_anchor - First observed
buy_daily_fortune - First observed
buy_dibs - First observed
buy_graffiti_on_a_train - First observed
buy_grudge - First observed
buy_hello - First observed
buy_human_witness - First observed
buy_luckies - First observed
buy_nomenclature - First observed
buy_phantom_check - First observed
buy_phone_call - First observed
buy_portrait - First observed
buy_quick_judgment - First observed
buy_recurring_patronage - First observed
buy_settlement_attestation - First observed
buy_small_blessing - First observed
buy_the_collab - First observed
buy_the_confession - First observed
buy_the_drawer - First observed
read_store_guide - First observed
ring_bell - First observed
sign_guestbook - First observed
verify_artifact
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: read_store_guide for store info, ring_bell and sign_guestbook for free social interactions, verify_artifact for verification, and the buy_* tools each target a specific product category (signed records, human tasks, observations, memory anchors, small pleasures). Even within the buy_* group, the descriptions explicitly disambiguate overlapping concepts (e.g., buy_signed_record vs buy_memory_anchor).
All tool names follow a predictable snake_case verb_noun pattern: free tools use action verbs (read_, ring_, sign_, verify_) and paid tools consistently use the buy_ prefix. The naming convention is uniform and easily predictable.
With 9 tools, the server is well-scoped for a general store. Each tool earns its place by covering a distinct functional area, and the count is within the ideal 3-15 range.
The tool surface covers the full store lifecycle: browsing (read_store_guide), social engagement (ring_bell, sign_guestbook), purchasing across diverse categories (buy_*), and post-purchase verification (verify_artifact). Human task orders include order_id/order_url for tracking, and retry/idempotency handling is documented. No significant gaps are apparent.
Maintenance
Related MCP Connectors
Agent-commerce MCP server for x402/USDC payments and affiliate splits on Base.
MCP server for AI agents to discover campaigns by humans and donate USDC directly on Base.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that empowers AI agents to inspect any wallet’s balance and onchain activity across major EVM chains and Solana chain.39MIT
- AlicenseAqualityDmaintenanceMCP server for pay-per-call DeFi and crypto data via x402 micropayments on Base. 8 endpoints: token prices, TVL, funding rates, token security, gas tracker, whale monitoring, wallet profiling, and yield scanning.825MIT
- AlicenseAqualityFmaintenanceMCP server for the402.ai — an open marketplace where AI agents discover and purchase services from third-party providers via x402 micropayments (USDC on Base). Browse the catalog, purchase services, manage conversation threads, and list services as a provider.30562MIT
- AlicenseCqualityDmaintenanceMCP server bringing 100+ x402-paid APIs to AI agents (Claude, Cursor, MCP-aware clients). Auto-discovers tools from CDP Bazaar; handles USDC micropayments on Base.100601MIT