Машинный слой
Опубликованные материалы сайта агент может искать и читать программно — без скрейпинга и ключей. Курсы, разборы и страницы доступны через MCP и A2A; результаты поиска и карточки курсов содержат ссылку на страницу, где то же самое видно человеку. Здесь ничего не пишется и не меняется: слой только читает.
Как выбрать протокол: MCP — если IDE или чат с MCP-клиентом: Claude Code, Codex, Cursor — агент сам вызывает инструменты. A2A — если один агент разговаривает с другим: отправляет сообщение и получает ответ. У A2A два способа доставить одно и то же сообщение: JSON-RPC одним вызовом или HTTP+JSON обычным REST-запросом; агент за ними один.
Это точка входа, а не спецификация: формы запросов — вспецификации MCP и спецификации A2A; сигнатуры инструментов агент получит сам через tools/list.
/mcpPOSTMCP 2025-06-18 · Streamable HTTP, JSON-RPC
Заголовки, ответ и ограничения
Обязательные заголовки: Content-Type: application/json, Accept: application/json, text/event-stream.
Формат ответа: text/event-stream.
Первый вызов: initialize.
без заголовка Accept сервер отвечает 406; ответ приходит потоком даже на одиночный вызов.
GET /mcp → 405.
/a2aPOSTA2A 1.0 · JSON-RPC
Заголовки, ответ и ограничения
Обязательные заголовки: Content-Type: application/json, A2A-Version: 1.0.
Формат ответа: application/json.
Первый вызов: SendMessage.
без заголовка A2A-Version сервер отвечает 400; Radar: один текстовый part со строгим JSON {"radar":"v1","operation":"get_radar_edition","arguments":{"snapshot_id":"week-2026-09-14-r1"}}; pin в примере иллюстративный; те же пять операций MCP, без угадывания дат. Точные pins без fallback; invalid/missing/unavailable — nonfacts, empty — успешный нулевой охват. Данные baked, без автоматического обновления.
GET /a2a → 404.
/a2a/rest/v1/message:sendPOSTA2A 1.0 · HTTP+JSON
Заголовки, ответ и ограничения
Обязательные заголовки: Content-Type: application/json, A2A-Version: 1.0.
Формат ответа: application/a2a+json.
POST идёт на полный путь операции, а не на базовый; без A2A-Version — 400; Radar: один текстовый part со строгим JSON {"radar":"v1","operation":"get_radar_edition","arguments":{"snapshot_id":"week-2026-09-14-r1"}}; pin в примере иллюстративный; те же пять операций MCP, без угадывания дат. Точные pins без fallback; invalid/missing/unavailable — nonfacts, empty — успешный нулевой охват. Данные baked, без автоматического обновления.
GET /a2a/rest → 404.
/.well-known/agent-card.jsonGETA2A · JSON, discovery
с неё начинает клиент A2A; стандартные поля карточки не объявляют MCP — он опубликован отдельно, здесь и в llms.txt.
search_siteпоиск по разделам курсов, абзацам статей и страницам; каждый результат — с цитатой и адресом раздела (#id)list_coursesкаталог курсов, необязательный фильтр по семействуget_courseописание, разделы и FAQ одного курса по slugget_passageодна единица цитирования целиком по unit_id: текст, адрес с якорем, происхождение, соседиsearch_radarпоиск выпущенных объектов: query, limit 1–20, необязательный точный snapshot_id; результаты содержат происхождение и digestlist_radar_editionsвсе выпущенные ревизии и исправления; horizon day|week|month|quarter необязателен; порядок start_at DESC, day/week/month/quarter, edition.id ASC, revision ASC, snapshot_id ASCget_radar_editionполный исторический оригинал по обязательному точному snapshot_id, без fallbackget_radar_itemполная история объекта по slug; необязательный snapshot_id точно закрепляет срезcompare_radar_editionsсравнение точных snapshot_id и prior_snapshot_id; несопоставимость возвращается явноlist_radar_researchнеподписанные исследовательские темы в текущем или точном snapshot_id с полными карточкамиsearch_radar_researchпоиск по документальным карточкам без подмены их подписанными оценкамиget_radar_research_itemполная неподписанная документальная карточка по topic_id и необязательному точному snapshot_idlist_radar_research_snapshotsистория неподписанных снимков: даты, digest, число тем и причины измененийget_radar_research_snapshotточный архивный снимок исследовательского Радара по snapshot_idaicoding://site/indexРесурс · индекс публичного содержимого целиком, JSONaicoding://radar/indexРесурс · структурированный индекс released-снимков, точных маршрутов и corpus_digest; данные baked на сборке, без автоматического обновления; empty — ноль выпусков, unavailable — ресурс недоступенaicoding://radar/research/indexРесурс · текущий индекс неподписанных исследовательских карточек, точные ссылки и история снимковaicoding://radar/research/historyРесурс · индекс датированных исследовательских снимков и причин измененийtools/list, и второй список разошёлся бы с первым.claude mcp add --transport http aicoding https://aicoding.space/mcpcodex mcp add aicoding --url https://aicoding.space/mcpcodex mcp listHermes: подключите сервер и проверьте соединение:
hermes mcp add aicoding --url https://aicoding.space/mcp
hermes mcp test aicodingПосле подключения начните новый CLI-чат командой hermes chat. Если используете уже работающий gateway, перезапустите процесс Hermes; новая вкладка сама по себе его не перезапускает. Ключи и OAuth для этого сервера не нужны.
Доступные инструменты Hermes:
mcp_aicoding_search_sitemcp_aicoding_list_coursesmcp_aicoding_get_coursemcp_aicoding_get_passagemcp_aicoding_search_radarmcp_aicoding_list_radar_editionsmcp_aicoding_get_radar_editionmcp_aicoding_get_radar_itemmcp_aicoding_compare_radar_editionsmcp_aicoding_list_radar_researchmcp_aicoding_search_radar_researchmcp_aicoding_get_radar_research_itemmcp_aicoding_list_radar_research_snapshotsmcp_aicoding_get_radar_research_snapshot
Попросите найти материалы про MCP на aicoding.space и дать ссылки на разделы.
Если инструменты не появились, проверьте, что изменён конфиг активного профиля и сервер доступен с машины Hermes. Схема подключения — из официальной документации Hermes; запуск самого клиента в этой сборке не проверяется.
Альтернатива: подключить Hermes через YAML
Добавьте сервер в ~/.hermes/config.yaml. Если блок mcp_servers уже есть, добавьте в него только запись aicoding, сохранив остальные серверы. После изменения конфига начните новый CLI-чат или перезапустите работающий gateway.
mcp_servers:
aicoding:
url: "https://aicoding.space/mcp"Accept сервер ответит 406:curl -X POST https://aicoding.space/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}'text/event-stream, даже на одиночный вызов. Так он выглядел 2026-10-18 — это проверенный пример, а не живой вызов:event: message
data: {"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":true},"resources":{"listChanged":true}},"serverInfo":{"name":"aicoding-space","version":"1.4.0"}},"jsonrpc":"2.0","id":1}A2A начинайте с карточки агента: она перечисляет оба биндинга машиночитаемо. MCP опубликован отдельно — здесь и в llms.txt.После подключения MCP к Codex или Claude Code задайте вопрос своими словами. Замените обозначения периода нужными датами:
Найди на aicoding.space обзоры трендов GitHub за период [дата начала] — [дата конца]. Учитывай период, который охватывает обзор, а не только дату публикации. Объедини повторяющиеся репозитории, объясни, что изменилось и какие проекты стоит изучить. Для каждого вывода дай ссылки на материалы сайта и первоисточники. Не складывай прирост звёзд за пересекающиеся интервалы. Если часть периода не покрыта публикациями, прямо укажи это.Агент может искать через search_site и читать найденные фрагменты через get_passage. Для полного списка публикаций доступен ресурс aicoding://site/index. Период агент сверяет по текстам обзоров: отдельного фильтра дат у поиска пока нет.
Обычная ссылка на сайт сама по себе не подключает MCP. Если у агента есть доступ к вебу, он также может прочитать публичные материалы без MCP. Ответ опирается на опубликованные выпуски; отсутствующую историю сайт не восстанавливает.