MCP
Тот же сервис, но для ИИ-агентов. Подключите Claude, Cursor или своего агента — и отправка ссылок, проверка статусов и учёт расхода делаются словами, без обёртки на HTTP.
Что это даёт#
MCP — открытый протокол, по которому ИИ-агент получает доступ к внешнему сервису: не к описанию в подсказке, а к настоящим вызовам с настоящими ответами. Подключив наш сервер, агент видит ваш баланс, отправляет ссылки и читает статусы сам.
Разговор с подключённым агентом выглядит примерно так:
— Отправь на индексацию все статьи из sitemap блога, которые вышли в августе.
— Нашёл 42 адреса. Проверка показывает, что 11 из них поисковик уже знает —
отправлять их незачем. Остальные 31 обойдутся в 93 токена (≈ $0.09),
на счету 4980. Отправляю?
— Да.
— Задание 965 создано. Загляну через час и скажу, по скольким прошёл бот.Тот же результат достижим и через HTTP API — разница в том, кто пишет код. Здесь его не пишет никто.
Подключение#
Сервер отвечает по HTTP, отдельной установки не требует. Нужен ключ — тот же, что у API: создаётся в кабинете, на странице «API и ключи».
Claude Desktop и Claude Code
{
"mcpServers": {
"doberman-index": {
"type": "http",
"url": "https://dobermanindexztoken.com/mcp",
"headers": { "Authorization": "Bearer ik_ВАШ_КЛЮЧ" }
}
}
}В Claude Desktop файл настроек открывается через «Настройки → Разработчик → Изменить конфигурацию». В Claude Code то же самое делает команда claude mcp add.
Cursor и другие клиенты
Настройка одинаковая: адрес сервера и заголовок с ключом. Клиенты, умеющие только запускать локальный процесс, подключаются через мост mcp-remote.
{
"mcpServers": {
"doberman-index": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://dobermanindexztoken.com/mcp",
"--header", "Authorization: Bearer ik_ВАШ_КЛЮЧ"]
}
}
}Проверить связь
Список инструментов отдаётся без ключа — клиент показывает его до того, как человек введёт токен, и отказ на этом шаге читался бы как «сервер не работает».
curl -X POST https://dobermanindexztoken.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'Инструменты#
Одиннадцать штук. Платный ровно один — тот, что отправляет ссылки; остальные только читают или возвращают ваши же токены.
| Инструмент | Что делает | Стоимость |
|---|---|---|
index_balance | Сколько токенов на счету и сколько это в долларах | бесплатно |
index_services | Услуги и цена за одну ссылку — чтобы посчитать до отправки | бесплатно |
index_submit_links | Отправляет ссылки на индексацию и списывает токены. До 1000 адресов за вызов | платно |
index_task_status | Состояние задания и его счётчики | бесплатно |
index_link_status | Что стало с каждой ссылкой: заходил ли бот, когда, проверялась ли выдача | бесплатно |
index_list_tasks | Задания с отбором по статусу, услуге и датам | бесплатно |
index_cancel_task | Отменяет задание до начала работы, замороженные токены возвращаются. После старта отмена невозможна | бесплатно |
index_spending | Движения токенов: пополнения, заморозки, списания, возвраты | бесплатно |
index_list_webhooks | Подписки на события | бесплатно |
index_create_webhook | Новая подписка. Секрет возвращается один раз | бесплатно |
index_delete_webhook | Удаляет подписку, доставки прекращаются | бесплатно |
Заход бота и проверка выдачи — разные факты. В ответе index_link_status crawled_at означает, что по ссылке прошёл подтверждённый поисковый бот, а checked_at — что мы смотрели поисковую выдачу. Пустой checked_at значит «проверки не было», а не «страницы нет в индексе»: описания инструментов говорят об этом агенту прямо, чтобы он не выдал одно за другое.
Подтверждение расхода#
Единственный платный инструмент требует поле confirm_cost_tokens — сколько, по мнению агента, будет списано. Не совпало с нашим расчётом больше чем на 5% — вызов отклоняется с подсказкой пересчитать через index_services.
{
"name": "index_submit_links",
"arguments": {
"urls": ["https://site.com/a", "https://site.com/b"],
"confirm_cost_tokens": 20
}
}Зачем это. Модель ошибается в арифметике молча, а платит клиент. Поле заставляет агента посчитать стоимость до отправки и назвать её вслух — разойдясь с нами, он получит отказ, а не счёт.
Ограничение на объём тоже есть: до 1000 адресов за вызов. Больше — разбивайте на несколько заданий; так ошибка в списке стоит одной тысячи, а не всего баланса.
Протокол#
JSON-RPC 2.0 поверх HTTP POST, версия протокола 2025-06-18. Сервер представляется как doberman-index. Открыты без ключа initialize, tools/list, ping и notifications/initialized — всё остальное требует Authorization: Bearer.
curl -X POST https://dobermanindexztoken.com/mcp \
-H "Authorization: Bearer ik_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": { "name": "index_balance", "arguments": {} }
}'{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{ "type": "text", "text": "На счету 4980 токенов (≈ $4.98)" }],
"structuredContent": {
"account": { "id": 4320, "balance": { "total": 4980, "usd": "4.98" } }
}
}
}Ответ приходит в двух видах сразу: текстом — чтобы агент мог просто прочитать его человеку, и структурой — чтобы мог посчитать. Ошибка инструмента приходит как isError с объяснением, что делать дальше: агент, получивший «неверные данные» без продолжения, обычно повторяет то же самое.
Что агенту недоступно#
Ключ даёт агенту ровно то же, что даёт вашему коду, и ни на шаг больше.
- Нельзя пополнить баланс или потратить деньги. Расход возможен только токенами и только тем единственным платным инструментом.
- Нельзя увидеть чужое. Задания, ссылки и подписки — только владельца ключа; чужой номер задания отвечает «не найдено».
- Нельзя тронуть аккаунт. Пароль, почта, ключи и настройки менять недоступно — это делается руками в кабинете.
- Отзыв ключа действует сразу. Если агент повёл себя не так, доступ снимается одной кнопкой, и остальные ключи продолжают работать.
Инструменты, которые меняют состояние, но не тратят токены — отмена задания и удаление подписки, — описаны для агента с прямой просьбой спросить человека перед вызовом.
Обход сайта агент заказать не может — намеренно. Сколько адресов в карте сайта, знает только сама карта, поэтому назвать стоимость до запуска невозможно. Платящий инструмент здесь один, и он требует суммы заранее: модель ошибается в арифметике молча, а платит клиент. Следить за уже заказанным обходом агент может — задания видны через index_task_status и index_list_tasks. Заказ — в кабинете или через API.
Нужен обычный HTTP вместо агента? Те же действия доступны через API — ключ подходит один и тот же.
Ключ выдаётся сразу после регистрации
Один и тот же ключ работает и в MCP, и в обычном API. Пробные десять ссылок доступны там же — проверить связку можно, не пополняя баланс.