~/api

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

Всё, что есть на сайте, ваш агент может прочитать программно — без скрейпинга и без ключей. Курсы, разборы и страницы отдаются через 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. GET /a2a → 404.
/a2a/rest/v1/message:sendPOSTA2A 1.0 · HTTP+JSON. Обязательные заголовки: Content-Type: application/json, A2A-Version: 1.0. Ответ: application/json. POST идёт на полный путь операции, а не на базовый; без A2A-Version — 400. GET /a2a/rest → 404.
/.well-known/agent-card.jsonGETA2A · JSON, discovery. с неё начинает клиент A2A; стандартные поля карточки не объявляют MCP — он опубликован отдельно, здесь и в llms.txt.
инструменты mcp
search_siteпоиск по разделам курсов, абзацам статей и страницам; каждый результат — с цитатой и адресом раздела (#id)
list_coursesкаталог курсов, необязательный фильтр по семейству
get_courseописание, разделы и FAQ одного курса по slug
get_passageодна единица цитирования целиком по unit_id: текст, адрес с якорем, происхождение, соседи
aicoding://site/indexресурс · индекс публичного содержимого целиком, JSON
Сигнатуры аргументов здесь не приводятся намеренно: их отдаёт tools/list, и второй список разошёлся бы с первым.
подключить
Claude Code — одной командой:
claude mcp add --transport http aicoding 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-09-15 — это проверенный пример, а не живой вызов:
event: message
data: {"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":true},"resources":{"listChanged":true}},"serverInfo":{"name":"aicoding-space","version":"1.1.0"}},"jsonrpc":"2.0","id":1}
Для A2A начинайте с карточки агента: она перечисляет оба биндинга машиночитаемо. MCP опубликован отдельно — здесь и в llms.txt.
границы
только чтение · не требуется: ни ключа, ни регистрации · генеративной модели нет · лимитов частоты — нет. Пожалуйста, не превращайте это в нагрузочный тест.
Чего агент здесь не может:
— подать заявку в мастерскую — это делает человек на /workshop/
— оформить подписку на рассылку
— написать автору
— изменить что-либо на сайте
Всё это — слой над публичным содержимым. Заявку в мастерскую и письмо автору отправляет человек, подписку он же оформляет.
версия 1.1.0 · проверено 2026-09-15 · манифест: src/data/agent-surface.json
aicoding.spaceКурсы, инструменты и мастерская по Agentic Engineering. Код инструментов открыт.
Считаем посещения обезличенно, на своём сервере. Данные не передаются третьим лицам и не используются для рекламы. Политика обработки данных.