~/api

Машинный слой

Опубликованные материалы сайта агент может искать и читать программно — без скрейпинга и ключей. Курсы, разборы и страницы доступны через MCP и A2A; результаты поиска и карточки курсов содержат ссылку на страницу, где то же самое видно человеку. Здесь ничего не пишется и не меняется: слой только читает.

Как выбрать протокол: MCP — если IDE или чат с MCP-клиентом: Claude Code, Codex, Cursor — агент сам вызывает инструменты. A2A — если один агент разговаривает с другим: отправляет сообщение и получает ответ. У A2A два способа доставить одно и то же сообщение: JSON-RPC одним вызовом или HTTP+JSON обычным REST-запросом; агент за ними один.

Это точка входа, а не спецификация: формы запросов — вспецификации MCP и спецификации A2A; сигнатуры инструментов агент получит сам через tools/list.

Адреса
/mcpPOST

MCP 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.

/a2aPOST

A2A 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:sendPOST

A2A 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.jsonGET

A2A · JSON, discovery

с неё начинает клиент A2A; стандартные поля карточки не объявляют MCP — он опубликован отдельно, здесь и в llms.txt.

Инструменты MCP
search_siteпоиск по разделам курсов, абзацам статей и страницам; каждый результат — с цитатой и адресом раздела (#id)
list_coursesкаталог курсов, необязательный фильтр по семейству
get_courseописание, разделы и FAQ одного курса по slug
get_passageодна единица цитирования целиком по unit_id: текст, адрес с якорем, происхождение, соседи
search_radarпоиск выпущенных объектов: query, limit 1–20, необязательный точный snapshot_id; результаты содержат происхождение и digest
list_radar_editionsвсе выпущенные ревизии и исправления; horizon day|week|month|quarter необязателен; порядок start_at DESC, day/week/month/quarter, edition.id ASC, revision ASC, snapshot_id ASC
get_radar_editionполный исторический оригинал по обязательному точному snapshot_id, без fallback
get_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_id
list_radar_research_snapshotsистория неподписанных снимков: даты, digest, число тем и причины изменений
get_radar_research_snapshotточный архивный снимок исследовательского Радара по snapshot_id
aicoding://site/indexРесурс · индекс публичного содержимого целиком, JSON
aicoding://radar/indexРесурс · структурированный индекс released-снимков, точных маршрутов и corpus_digest; данные baked на сборке, без автоматического обновления; empty — ноль выпусков, unavailable — ресурс недоступен
aicoding://radar/research/indexРесурс · текущий индекс неподписанных исследовательских карточек, точные ссылки и история снимков
aicoding://radar/research/historyРесурс · индекс датированных исследовательских снимков и причин изменений
Сигнатуры аргументов здесь не приводятся намеренно: их отдаёт tools/list, и второй список разошёлся бы с первым.
подключить
Claude Code — одной командой:
Подключить Claude Code
claude mcp add --transport http aicoding https://aicoding.space/mcp
Codex CLI — одной командой:
Подключить Codex
codex mcp add aicoding --url https://aicoding.space/mcp
Проверить сохранённое подключение командой ниже. Настройка MCP общая для Codex CLI и расширения IDE — официальная инструкция OpenAI.
Проверить подключение Codex
codex mcp list

Hermes: подключите сервер и проверьте соединение:

Подключить и проверить Hermes
hermes mcp add aicoding --url https://aicoding.space/mcp
hermes mcp test aicoding

После подключения начните новый CLI-чат командой hermes chat. Если используете уже работающий gateway, перезапустите процесс Hermes; новая вкладка сама по себе его не перезапускает. Ключи и OAuth для этого сервера не нужны.

Доступные инструменты Hermes:

  • mcp_aicoding_search_site
  • mcp_aicoding_list_courses
  • mcp_aicoding_get_course
  • mcp_aicoding_get_passage
  • mcp_aicoding_search_radar
  • mcp_aicoding_list_radar_editions
  • mcp_aicoding_get_radar_edition
  • mcp_aicoding_get_radar_item
  • mcp_aicoding_compare_radar_editions
  • mcp_aicoding_list_radar_research
  • mcp_aicoding_search_radar_research
  • mcp_aicoding_get_radar_research_item
  • mcp_aicoding_list_radar_research_snapshots
  • mcp_aicoding_get_radar_research_snapshot

Попросите найти материалы про MCP на aicoding.space и дать ссылки на разделы.

Если инструменты не появились, проверьте, что изменён конфиг активного профиля и сервер доступен с машины Hermes. Схема подключения — из официальной документации Hermes; запуск самого клиента в этой сборке не проверяется.

Альтернатива: подключить Hermes через YAML

Добавьте сервер в ~/.hermes/config.yaml. Если блок mcp_servers уже есть, добавьте в него только запись aicoding, сохранив остальные серверы. После изменения конфига начните новый CLI-чат или перезапустите работающий gateway.

Конфигурация Hermes YAML
mcp_servers:
  aicoding:
    url: "https://aicoding.space/mcp"
Или любым клиентом — первый запрос вручную. Без заголовка Accept сервер ответит 406:
Запрос curl
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 задайте вопрос своими словами. Замените обозначения периода нужными датами:

Запрос для Codex или Claude
Найди на aicoding.space обзоры трендов GitHub за период [дата начала] — [дата конца]. Учитывай период, который охватывает обзор, а не только дату публикации. Объедини повторяющиеся репозитории, объясни, что изменилось и какие проекты стоит изучить. Для каждого вывода дай ссылки на материалы сайта и первоисточники. Не складывай прирост звёзд за пересекающиеся интервалы. Если часть периода не покрыта публикациями, прямо укажи это.

Агент может искать через search_site и читать найденные фрагменты через get_passage. Для полного списка публикаций доступен ресурс aicoding://site/index. Период агент сверяет по текстам обзоров: отдельного фильтра дат у поиска пока нет.

Обычная ссылка на сайт сама по себе не подключает MCP. Если у агента есть доступ к вебу, он также может прочитать публичные материалы без MCP. Ответ опирается на опубликованные выпуски; отсутствующую историю сайт не восстанавливает.

Ограничения доступа
только чтение · не требуется: ни ключа, ни регистрации · генеративной модели нет · лимит публичного прокси — 30 запросов/мин на IP с допуском короткого всплеска (burst 20); HTTP 429 при превышении. Пожалуйста, не превращайте это в нагрузочный тест.
Клиенты за одним публичным IP делят квоту. Это ограничение запросов MCP/A2A, а не гарантия защиты сайта от распределённой атаки.
Чего агент здесь не может:
— подать заявку в мастерскую — это делает человек на /workshop/
— оформить подписку на рассылку
— написать автору
— изменить что-либо на сайте
Всё это — слой над публичным содержимым. Заявку в мастерскую и письмо автору отправляет человек, подписку он же оформляет.
версия 1.4.0 · контракты сборки проверены 2026-10-31. HTTP-проверка MCP и обоих биндингов A2A выполняется перед сборкой. Она не проверяет внешний TLS-прокси; проверенный пример публичного ответа снят 2026-10-18.
aicoding.spaceКурсы, инструменты и мастерская по Agentic Engineering. Код инструментов открыт.
Считаем посещения обезличенно, на своём сервере. Данные не передаются третьим лицам и не используются для рекламы. На время демонстрации подключён виджет-помощник с sufler.aicoding.space: ему уходит только то, что вы ему пишете.