MCP-сервер для ИИ-агентов
MCP (Model Context Protocol) — открытый протокол, через который ИИ-агенты подключаются к внешним сервисам. Подключите AI PixelTools к Claude, Cursor или любому другому MCP-клиенту — и агент сам получит список ваших GEO-проектов, посмотрит видимость бренда, конкурентов, источники, тексты ответов нейросетей, а также сделает всё, что вы делаете в личном кабинете: создаст проект, настроит его, добавит промпты, сгруппирует конкурентов, запустит проверку, аудит или отчёт. Писать код и разбираться в REST API не нужно: достаточно попросить агента обычными словами.
Примеры запросов агенту:
- «Как изменилась видимость моего бренда за месяц и в каких нейросетях просела?»
- «По каким промптам нас не упоминают, а конкурентов — да? Покажи, что именно отвечает нейросеть»
- «На какие сайты ссылаются нейросети и где о нас стоит написать?»
- «Запусти проверку проекта и скажи, когда закончится»
- «Создай проект для бренда „Ромашка“, подбери промпты и отключи Perplexity»
- «Объедини в одну группу конкурентов „Сбер“ и „СберБанк“, а нерелевантных скрой»
- «Сделай еженедельный отчёт по понедельникам с блоками сводки и конкурентов»
Параметры подключения
| Параметр | Значение |
|---|---|
| Адрес сервера | https://ai.pixeltools.ru/api/mcp |
| Транспорт | Streamable HTTP (POST, JSON-RPC 2.0) |
| Авторизация | Заголовок Authorization: Bearer YOUR_API_TOKEN — тот же токен, что и для REST API |
| Версии протокола | 2025-06-18, 2025-03-26, 2024-11-05 |
| Ограничение | 120 запросов в минуту на токен |
Токен создаётся в настройках пользователя, подробнее — в разделе «Авторизация». Агент работает строго от вашего имени: видит только ваши и расшаренные вам проекты, действуют те же права доступа и те же лимиты, что в веб-интерфейсе.
Подключение
Claude Code
claude mcp add --transport http pixeltools https://ai.pixeltools.ru/api/mcp \
--header "Authorization: Bearer YOUR_API_TOKEN"
Claude Desktop
Откройте «Настройки → Разработчик → Изменить конфигурацию» и добавьте сервер в файл
claude_desktop_config.json. Нужен установленный Node.js — пакет mcp-remote
связывает приложение с удалённым сервером. После сохранения перезапустите Claude Desktop.
{
"mcpServers": {
"pixeltools": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://ai.pixeltools.ru/api/mcp",
"--header", "Authorization:${PIXELTOOLS_AUTH}"
],
"env": {
"PIXELTOOLS_AUTH": "Bearer YOUR_API_TOKEN"
}
}
}
}
Cursor
Файл ~/.cursor/mcp.json (или .cursor/mcp.json в проекте):
{
"mcpServers": {
"pixeltools": {
"url": "https://ai.pixeltools.ru/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Клиенты, где можно указать только адрес
Если клиент не позволяет задать заголовки, передайте токен в адресе:
https://ai.pixeltools.ru/api/mcp?api_key=YOUR_API_TOKEN.
Такой адрес — это пароль от вашего аккаунта: не публикуйте его и не пересылайте.
Инструменты
Агенту доступен весь функционал личного кабинета: чтение данных проекта, создание и настройка проектов,
промпты и группы, конкуренты, источники, контент-план, рекомендации, аудит, отчёты, брендовый спрос,
события и доступы. Почти все инструменты принимают обязательный project_id — его агент
берёт из list_projects. Параметр dates — период
["YYYY-MM-DD", "YYYY-MM-DD"], по умолчанию последние 30 дней.
Пометки у инструментов:
- изменяет — меняет данные, запускает проверку или генерацию. Такие инструменты помечены для клиента аннотацией
readOnlyHint: false, и Claude по умолчанию спрашивает подтверждение перед вызовом; - удаляет — удаление (
destructiveHint: true). Промпты и группы попадают в корзину и восстанавливаются, остальное — нет.
Если инструмент тратит лимиты, это сказано в его описании. Долгие операции (проверка, генерации ИИ, отчёты, аудит) запускаются одним инструментом, а результат забирается другим — агент сам опрашивает статус.
Проекты, настройки и доступ
| Инструмент | Что делает | Параметры |
|---|---|---|
list_projects
|
GEO-проекты пользователя: id, название, бренд, домен, пауза. Источник project_id. | — |
get_project_status
|
Статус проверки (съёма): idle|queued|in_progress|completed, прогресс %, фаза, дата последней. | — |
run_update
изменяет |
Запустить проверку (съём), тратит лимиты. Ошибка, если уже идёт, нет нейросетей/промптов или лимитов. Прогресс — get_project_status. |
with_recommendations — Рекомендации после проверки. Не задано — по расписанию.with_frequency — Частотность после проверки. Не задано — по расписанию. |
get_project_settings
|
Настройки: нейросети, регион, язык, бренд и альт. названия, домен и зеркала, режим конкурентов, Метрика, расписания, число промптов и групп. | — |
list_neurals
|
Нейросети для проекта: id, system_name, название, поддержка веб-поиска. | — |
list_regions
|
Поиск региона по названию (рус/англ). code → параметр region. Россия 225, Москва 213. |
searchlimit — По умолчанию 20, макс. 100. |
create_project_draft
изменяет |
Шаг 1/3 создания проекта: черновик + асинхронный подбор промптов. Далее поллить get_project_draft (~10 с) до ready → update_project_draft_prompts (опц.) → create_project_from_draft. Черновик живёт сутки. |
brand*activities* — Товары/услуги бренда — по ним подбираются промпты.domain — Например example.ru.alternative_brands — Другие написания бренда.neurals* — system_name или id из list_neurals.language — По умолчанию ru, потом не меняется.region — Из list_regions, по умолчанию 225. |
get_project_draft
|
Шаг 2: статус черновика: processing (поллить), ready (prompts: text, group, source), error. |
draft_id* — Из create_project_draft. |
update_project_draft_prompts
изменяет |
Заменить промпты черновика ЦЕЛИКОМ (только в ready): убранные пропадут, новые — без группы, у подобранных группа сохранится. |
draft_id*prompts* — Итоговый список. |
create_project_from_draft
изменяет |
Шаг 3: проект из готового черновика → project_id. Проверку не запускает (run_update). Повтор не создаёт дубль. |
draft_id* |
update_project_settings
изменяет |
Меняет только переданное. Списки — ЦЕЛИКОМ (сначала get_project_settings), ""/null очищает. Снять паузу — schedule. detail: weekdays/monthdays — через запятую, every_n_days 1–90; once/twice_per_week — дни выбирает сервис, detail любой валидный (день 0–6, 0=вс). |
namebrandalternative_brands — Тоже считаются упоминанием.brand_info — До 500 символов.activitiesdomain — "" — убрать сайт и зеркала.domain_aliases — Зеркала — считаются сайтом проекта.sources_include_subdomainsneurals — system_name или id из list_neurals.neurals_web_search — Из выбранных, с web_search_supported.region — Из list_regions.collect_online — Ответы с веб-поиском.collect_google_ai_modecount_empty_answers — Пустые ответы в знаменателе видимости.check_brand_mentions — Бренд на страницах-источниках. Тратит лимиты каждую проверку.check_brand_mentions_top_domains — Топ-доменов, 1–1000.competitors_mode — top — из ответов, manual — только свой список.competitors_manual_list — До 100.competitors_tracked_firstschedule — Проверки (съёмы).recommendations_schedule — Рекомендации.frequency_schedule — Частотность промптов.url_indexation_schedule — Индексация источников. |
pause_project
изменяет |
Все расписания → paused, данные целы. Прежнее расписание не запоминается: снять — schedule в update_project_settings. | — |
delete_project
удаляет |
Удалить проект (только владелец). Вернуть может лишь поддержка. Сначала явно подтверди у пользователя. | — |
clone_project
изменяет |
Новый проект из project_id: настройки, нейросети, расписание, опц. промпты. Данные проверок не копируются, лимиты не тратятся. |
name*region — Из list_regions, по умолчанию как у источника.with_prompts — По умолчанию true.paused |
run_frequency_check
изменяет |
Частотность всех промптов по Вордстату. ТРАТИТ лимиты сразу: 50 + 1 за промпт. В фоне до часа; результат — в list_prompts. | — |
list_project_updates
|
История проверок, новые сверху: статус, запуск (manual|system — по расписанию), время. |
limit — По умолчанию 20, макс. 200. |
list_project_members
|
Участники проекта кроме владельца: user_id, email, роль, комментарий. Нужны права редактора. | — |
add_project_member
изменяет |
Доступ по email (нужен аккаунт Pixel Tools). Уже участник — роль обновится. |
email*role* — viewer — просмотр, editor — правка и запуск проверок.comment — До 255 символов.notifications |
update_project_member
изменяет |
Роль, комментарий, уведомления участника. user_id — из list_project_members. |
user_id*role — viewer — просмотр, editor — правка и запуск проверок.comment — До 255 символов.notifications |
remove_project_member
удаляет |
Забрать доступ. user_id — из list_project_members. Владельца нельзя. |
user_id* |
list_project_events
|
События на графиках видимости (публикации, смена нейросетей/промптов, заметки, системные) — объясняют скачки. is_system и is_auto менять нельзя. |
typesearchlimit — До 200, по умолчанию 50. |
create_project_event
изменяет |
Ручное событие на графиках («вышла статья», «обновили сайт»). |
date* — YYYY-MM-DD.title* — 3–255 символов.description — До 2000 символов.link — Ссылка или домен.time — Затрачено часов, 0–200. |
update_project_event
изменяет |
Меняет событие (id из list_project_events), только меняемые поля. Системные — нельзя; у автоматических не меняется название. |
event_id*date — YYYY-MM-DD.title — 3–255 символов.description — До 2000 символов.link — Ссылка или домен.time — Затрачено часов, 0–200. |
delete_project_event
удаляет |
Удаляет событие безвозвратно; системные нельзя. Сначала подтверди у пользователя. |
event_id* |
get_notification_settings
|
Уведомления: тип → канал → bool. Типы: visibility_update, recommendations, report; каналы: bell, email, telegram. telegram.connected — привязан ли (привязывает сам пользователь). | — |
update_notification_settings
изменяет |
Вкл/выкл уведомлений: settings — {тип: {канал: bool}}, напр. {"report": {"email": false}}; неупомянутое не меняется. |
settings* |
Промпты и группы
| Инструмент | Что делает | Параметры |
|---|---|---|
list_prompts
|
Промпты с id, группами и частотностью (Вордстат, в месяц, по подобранному запросу). |
searchlimit — По умолчанию 100, макс. 500.order_by_frequency |
add_prompts
изменяет |
Дубли не создаются, только привязываются к группам. group_id — из list_groups, group_name — найти или создать. Сюда же — prompts из get_generated_prompts как есть. Лимиты не тратит. |
prompts* — Строки или {value, group_id, group_name}.group_ids — Группы для ВСЕХ промптов. |
delete_prompts
удаляет |
По id (list_prompts) или точному тексту. Мягко: в корзину с историей и группами, вернуть — restore_prompts. Из следующих проверок выпадают. |
prompt_ids — Из list_prompts.values — Точные тексты — вместо prompt_ids. |
list_groups
|
Группы: id, название, тип (system — интенты сервиса, user — свои), число промптов, избранная. Плюс число промптов без группы. | — |
create_group
изменяет |
Пользовательская группа. Наполнять — assign_prompts_to_groups или add_prompts. |
name* — До 255 символов.is_favourite — Не больше 10 избранных на проект. |
update_group
изменяет |
Переименовать и/или сменить «избранная» (макс. 10 на проект). |
group_id* — Из list_groups.nameis_favourite |
delete_group
удаляет |
Промпты остаются в проекте; delete_prompts=true — удалить и их. Мягко: в корзину, вернуть — restore_groups / restore_prompts с членством. |
group_ids* — Из list_groups.delete_prompts |
assign_prompts_to_groups
изменяет |
mode: add — добавить к прежним группам; move — оставить ТОЛЬКО в указанных; detach — убрать из указанных (без group_ids — из всех). |
mode*prompt_ids* — Из list_prompts.group_ids — Из list_groups; обязательны для add/move. |
get_prompt_generation_pricing
|
Для generate_prompts: item_cost в лимитах (итог × число items), допустимые count, интенты, макс. items, доступность (только ru-проекты). | — |
generate_prompts
изменяет |
ТРАТИТ ЛИМИТЫ: item_cost × items (~75 за элемент, см. get_prompt_generation_pricing). Асинхронно: поллить get_generated_prompts, сохранить — add_prompts (сама в проект не пишет). |
group_type*count* — Промптов на элемент.items* — intents: situational, comparative, reputational, predictive, search; иначе названия продуктов/сегментов/сущностей. До 10. |
get_generated_prompts
|
status=running — повтори через 10–20 с. Готово — prompts без дублей; сохранить — add_prompts как есть. |
session_id* — Из generate_prompts. |
distribute_prompts_to_groups
изменяет |
ИИ раскладывает по группам-интентам (прежние группы сохраняются). ТРАТИТ 50 лимитов. ОБЯЗАТЕЛЬНО поллить get_prompts_distribution — запись в проект только там. |
prompt_ids — Из list_prompts.prompts — Тексты; новые будут созданы.ungrouped — Все промпты без группы. |
get_prompts_distribution
изменяет |
status=running — повтори через 5–10 с. Первый готовый ответ пишет распределение в проект; повторы безопасны. |
session_id* — Из distribute_prompts_to_groups. |
list_deleted_prompts
|
Корзина: удалённые промпты (с прежними группами) и группы. Вернуть — restore_prompts / restore_groups. |
limit — Каждого вида, по умолчанию 100. |
restore_prompts
изменяет |
Вместе с историей и группами. |
prompt_ids* — Из list_deleted_prompts. |
restore_groups
изменяет |
Промпты, удалённые с группой, — отдельно через restore_prompts. |
group_ids* — Из list_deleted_prompts. |
Видимость и ответы нейросетей
| Инструмент | Что делает | Параметры |
|---|---|---|
get_summary
|
Сводка: видимость бренда и сайта по нейросетям, тональность, доля голоса, топ-промпты по динамике, топ-5 конкурентов. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней. |
get_prompt_visibility
|
Видимость по промптам × нейросетям: упоминание, позиция, тональность, конкуренты в ответе, частотность, динамика. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.mention — Фильтр по упоминанию бренда.prompt — Подстрока промпта.limit — По умолчанию 30, макс. 100. |
get_answer_texts
|
Тексты ответов и ссылки за последнюю проверку, по паре промпт×нейросеть — бери 1–3 промпта. ID — из list_prompts / get_prompt_visibility. |
prompt_ids* — Макс. 5.max_chars — Обрезка ответа, по умолчанию 2000. |
get_answers_history
|
По промптам × проверкам × нейросетям: упоминание бренда, позиция, тональность. Постранично. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.neural_ids — Из поля neurals ответа; по умолчанию все.prompt — Подстрока промпта.limit — По умолчанию 20, макс. 50.cursor — next_cursor из прошлого ответа. |
get_answers_comparison
|
«Было → стало» по нейросети между двумя проверками: упоминание, позиция, тональность, сайт, конкуренты. По умолчанию две последние и первая нейросеть. Тексты — get_answer_texts. |
neural_id — Из get_answers_history.date1 — «Было», YYYY-MM-DD.date2 — «Стало», YYYY-MM-DD.presence — Фильтр по наличию бренда/сайта.prompt — Подстрока промпта.answer_chars — Длина начала текста ответа, до 1000; 0 — без текстов.limit — По умолчанию 20, макс. 50.cursor — next_cursor из прошлого ответа. |
get_site_positions_history
|
Позиция ссылки на сайт в источниках ответов по промптам × проверкам × нейросетям (null — нет). |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.neural_ids — Из поля neurals ответа; по умолчанию все.prompt — Подстрока промпта.limit — По умолчанию 20, макс. 100. |
set_answer_tone
изменяет |
Исправить тональность бренда в ответе нейросети на промпт. |
prompt_id*neural_id* — Из get_answers_history.tone*update_id — По умолчанию последняя завершённая. |
Конкуренты
| Инструмент | Что делает | Параметры |
|---|---|---|
get_competitors
|
Конкуренты по видимости: видимость и её дельта, доля голоса, тональность. |
limit — По умолчанию 10, макс. 100. |
find_competitors
|
Конкуренты с ID (нужны остальным инструментам конкурентов): видимость, доля голоса, тип, дубли. type=own — свой бренд, его members — альт. названия бренда. |
search — Подстрока названия, в т.ч. дублей.type — По умолчанию все, кроме hidden. key — ключевой, direct — прямой, indirect — косвенный, hidden — скрыт из сводки и списка.dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.limit — По умолчанию 30, макс. 200. |
get_competitor
|
Карточка конкурента: тип, видимость, упоминания, доля голоса за период, дубли группы. |
competitor_id* — Из find_competitors.dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней. |
set_competitor_type
изменяет |
key — ключевой, direct — прямой, indirect — косвенный, hidden — скрыт из сводки и списка. |
competitor_id* — Из find_competitors.type* |
rename_competitor
изменяет |
Старое название остаётся в группе как дубль. |
competitor_id* — Из find_competitors.name* — До 255 символов. |
group_competitors
изменяет |
Склеить дубли одной компании в группу, главный — самый видимый. include_brand=true — сделать их альт. названиями своего бренда. |
ids* — Из find_competitors; мин. 2, с include_brand — 1.include_brand |
ungroup_competitor
изменяет |
Вывести из группы дублей в отдельную строку. ID — из group_members в get_competitor. |
competitor_id* — Из find_competitors. |
make_competitor_canonical
изменяет |
Сделать участника главным: группа показывается под его названием. |
competitor_id* — Из find_competitors. |
remove_competitor_alternative_name
изменяет |
Убрать альт. название бренда (members строки type=own) — оно снова станет конкурентом. |
name* — Точно как в списке. |
find_irrelevant_competitors
изменяет |
ИИ ищет не-конкурентов в списке. ТРАТИТ 75 лимитов. Асинхронно: поллить get_irrelevant_competitors раз в 10–15 с, скрыть — hide_irrelevant_competitors. До 5 запусков/мин. |
description* — Чем занимается компания — кто настоящий конкурент, 3–500 символов. |
get_irrelevant_competitors
|
Пока идёт — status=in_progress, затем [{id, name, reason}]. Хранится 3 ч. |
session_id* — Из find_irrelevant_competitors. |
hide_irrelevant_competitors
изменяет |
Ставит тип hidden; только id из результата этой сессии. Вернуть — set_competitor_type. |
session_id*ids* — Из get_irrelevant_competitors. |
Источники
| Инструмент | Что делает | Параметры |
|---|---|---|
get_sources
|
Домены, на которые ссылаются нейросети: упоминания, видимость и дельта, тип, есть ли бренд на страницах. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.limit — По умолчанию 20, макс. 100. |
list_source_types
|
Типы источников (slug, название) для set_source_type. | — |
find_source_urls
|
URL домена-источника (домен — из get_sources) с ID, типом, упоминаниями, видимостью. |
domain* — Например habr.com.dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.limit — По умолчанию 30, макс. 200. |
set_source_type
изменяет |
Тип ставится всему домену URL. «Ваш сайт» вручную не ставится. |
url_id* — Из find_source_urls.type* — Slug из list_source_types. |
get_source_prompts
|
Промпты, где нейросети сослались на URL в последней проверке периода. |
url_id* — Из find_source_urls.dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней. |
Трафик и KPI
| Инструмент | Что делает | Параметры |
|---|---|---|
get_traffic
|
Переходы из нейросетей по Метрике: визиты, посетители, отказы, глубина, время — по нейросетям. Нужен счётчик Метрики. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней. |
get_kpi
|
KPI сайта по Метрике: посещаемость, визиты по нейросетям и каналам, конверсии и доход, брендовый трафик, города, устройства, площадки. Нужен счётчик Метрики. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней. |
Брендовый спрос
| Инструмент | Что делает | Параметры |
|---|---|---|
get_brand_demand
|
Брендовый спрос по Вордстату: запросов в месяц и топ регионов (последние проверки). | — |
update_kpi_settings
изменяет |
Настройки «KPI», только меняемые поля; каждый список ЗАМЕНЯЕТСЯ целиком (до 500 символов суммарно). |
brand_demand_phrases — Брендовый спрос за год (Вордстат).brandedness_substrings — Подстроки, по которым запрос из Метрики считается брендовым.favorite_sources — Домены-источники трафика для отдельного виджета.region_demand_phrasesregion_demand_regions — Из list_demand_regions; [] — все. |
run_brand_demand_check
изменяет |
Брендовый спрос за год по Вордстату, асинхронно (минуты). Нужна Метрика. 5 лимитов за фразу, только при успехе. Результат — get_brand_demand. |
phrases — До 500 символов суммарно. Не передано — сохранённые в проекте; переданные сохраняются. |
list_demand_regions
|
Регионы Яндекса для run_region_demand_check: код, название. |
searchlimit — До 500, по умолчанию 50. |
run_region_demand_check
изменяет |
Брендовый спрос по регионам (Вордстат), асинхронно. 5 лимитов за фразу, только при успехе. Результат — get_brand_demand. |
phrases — До 500 символов суммарно. Не передано — сохранённые в проекте; переданные сохраняются.regions — Из list_demand_regions; [] — все; не передано — сохранённые. |
generate_brand_phrases
изменяет |
ИИ-подбор по запросам Метрики (нужна): brand_phrases — фразы спроса, stop_substrings — brandedness_substrings. Поллить get_brand_phrases_result. Не сохраняет (→ update_kpi_settings). 50 лимитов при непустом результате. |
type* |
get_brand_phrases_result
изменяет |
Результат generate_brand_phrases: progress < 100 — повторить через 5–10 с; готово — phrases и charged. |
session_id* |
refresh_kpi
изменяет |
Сбросить кеш Метрики в «KPI» (до 2 ч). Только если просят свежие данные. | — |
Контент-план, рекомендации, аудит, отчёты
| Инструмент | Что делает | Параметры |
|---|---|---|
get_content_plan
|
Контент-план: материалы, формат, статус, дата, площадка, промпты, видимость, индексация. |
dates — [YYYY-MM-DD, YYYY-MM-DD], по умолчанию 30 дней.limit — По умолчанию 20, макс. 50. |
get_recommendations
|
Рекомендации для роста видимости: заголовок, пояснение, тип, выполнена ли. |
status — По умолчанию uncompleted.limit — По умолчанию 20, макс. 50. |
get_audit
|
Аудиты бренда против конкурентов. Без audit_id — список и текст последнего завершённого. |
audit_id — Из списка аудитов.max_chars — Обрезка текста, по умолчанию 8000. |
generate_recommendations
изменяет |
Перегенерировать рекомендации. ТРАТИТ 5 лимитов × число промптов, сразу. В фоне несколько минут, результат — get_recommendations. | — |
set_recommendation_done
изменяет |
Отметить рекомендацию выполненной или снять отметку. |
recommendation_id* — Из get_recommendations.done* |
postpone_recommendation
изменяет |
Отложить рекомендацию до даты (в «Отложенные»). Без publish_at — вернуть в работу. |
recommendation_id* — Из get_recommendations.publish_at — YYYY-MM-DD или YYYY-MM-DD HH:MM. |
run_audit
изменяет |
Аудит бренда против конкурентов. ТРАТИТ 1000 ЛИМИТОВ. Без competitors — 4 самых видимых. В фоне 5–20 мин: поллить get_audit(audit_id) до completed/failed. |
competitors — До 4, из get_audit_settings → available_competitors.comparison_params — По умолчанию все.model — system_name из get_audit_settings → neurals.search_mode — verified (по умолчанию) — только проверенные источники. |
delete_audit
удаляет |
Удалить аудит. Необратимо. |
audit_id* — Из get_audit. |
get_audit_settings
|
Настройки автоаудита + справочники (конкуренты, нейросети, критерии) для update_audit_settings и run_audit. | — |
update_audit_settings
изменяет |
Изменить настройки автоаудита, только меняемые поля; значения из get_audit_settings. Каждый автоаудит — 1000 лимитов. |
enabledcompetitor_ids — До 4; [] — 4 самых видимых.comparison_paramsmodel — system_name.emails_success — Кому слать готовый аудит.emails_error — Кому слать ошибку.attach_pdfschedule |
get_audit_pdf
изменяет |
PDF завершённого аудита. Нет файла — запускает сборку, status=in_progress: повторить через 15–30 с. Бесплатно. |
audit_id* — Из get_audit. |
get_audit_share_link
|
Публичная ссылка на завершённый аудит (без авторизации). |
audit_id* — Из get_audit. |
create_content_material
изменяет |
Добавить материал в контент-план. Сразу привязать: prompt_ids (list_prompts), group_ids (все промпты групп) или prompts — недостающие тексты СОЗДАДУТСЯ в проекте. |
name* — Тема, до 500 символов.url — URL публикации.formatstatussource_url — Документ с текстом.published_at — YYYY-MM-DD.comment — До 5000 символов.prompt_idsgroup_idsprompts |
update_content_material
изменяет |
Изменить материал, только меняемые поля. Пустая строка в url, source_url, published_at, comment очищает поле. |
material_id* — Из get_content_plan.name — Тема, до 500 символов.url — URL публикации.formatstatussource_url — Документ с текстом.published_at — YYYY-MM-DD.comment — До 5000 символов. |
delete_content_material
удаляет |
Удалить материал с привязками промптов. Необратимо. |
material_id* — Из get_content_plan. |
get_material_prompts
|
Промпты материала: id, текст, видимость бренда. |
material_id* — Из get_content_plan. |
attach_prompts_to_material
изменяет |
Привязать промпты: prompt_ids (list_prompts), group_ids (все промпты групп) или prompts — недостающие тексты СОЗДАДУТСЯ в проекте. |
material_id* — Из get_content_plan.prompt_idsgroup_idsprompts |
detach_prompts_from_material
изменяет |
Отвязать промпты (id из get_material_prompts) от материала; сами промпты остаются. |
material_id* — Из get_content_plan.prompt_ids* |
check_material_indexation
изменяет |
Проверить индексацию URL материала в Google/Яндексе; без material_id — всех. ТРАТИТ 4 лимита за URL. В фоне минуты, результат — get_material_indexation. |
material_id — Из get_content_plan. |
get_material_indexation
|
Индексация URL материала в Google/Яндексе, дата проверки. |
material_id* — Из get_content_plan. |
generate_content_plan
изменяет |
ИИ-темы для контент-плана по промптам. ТРАТИТ 75 ЛИМИТОВ. Поллить get_content_plan_generation до completed, затем apply_content_plan_generation. Уже идущая вернётся без списания. | — |
get_content_plan_generation
|
Статус генерации контент-плана; после завершения — темы (index, название, формат, промпты). |
generation_id* — Из generate_content_plan. |
apply_content_plan_generation
изменяет |
Добавить темы завершённой генерации в план как материалы с промптами. Без theme_indexes — все. Повтор создаст дубли. |
generation_id* — Из generate_content_plan.theme_indexes — index тем из get_content_plan_generation. |
generate_material_text
изменяет |
ИИ-текст статьи по промптам материала (без промптов — ошибка). ТРАТИТ ЛИМИТЫ (cost в get_material_text_generation). Поллить get_material_text_generation. Параметры по умолчанию — из проекта/материала. |
material_id* — Из get_content_plan.titleformatlength — Символов, 500–60000.brand_info — О бренде, до 500 символов.languagecoverillustrationsfaq |
get_material_text_generation
|
Статус последней генерации текста; после — заголовок, текст (до max_chars), .docx, картинки. cost — цена в лимитах. |
material_id* — Из get_content_plan.max_chars — По умолчанию 8000. |
list_reports
|
Отчёты проекта, новые сверху: id, статус (queued/running/done/failed), период, блоки. |
statuslimit — По умолчанию 20, максимум 100. |
list_report_blocks
|
Блоки отчёта: slug для blocks в create_report/create_report_schedule, название, описание, вкл. по умолчанию, цена в лимитах (платный только ai_conclusions). | — |
create_report
изменяет |
Генерация отчёта в фоне (минуты): поллить get_report_status раз в 15–30 с до done, затем get_report_download_link. Бесплатно, кроме ai_conclusions — 500 лимитов; при нехватке он молча выключается. |
period — По умолчанию last_30_days; custom — даты в dates.dates — [начало, конец] YYYY-MM-DD для custom.comparison_period — prev_period — предыдущий такой же; null — без сравнения.comparison_dates — Для comparison_period=custom.blocks — slug из list_report_blocks; по умолчанию — дефолтные.group_ids — Фильтр по группам (id из list_prompts); 0 — без группы. По умолчанию все. |
get_report_status
|
Статус отчёта: queued/running — повторить через 15–30 с; done — get_report_download_link; failed — создать заново. Плюс ссылка на просмотр. |
report_id* — Из list_reports или create_report. |
get_report_download_link
|
PDF готового (done) отчёта. Не собран — запускает сборку, status=in_progress: повторять через 15–30 с до status=success и file. |
report_id* — Из list_reports или create_report. |
delete_report
удаляет |
Удаляет отчёт безвозвратно. Сначала подтверди у пользователя. |
report_id* — Из list_reports или create_report. |
list_report_schedules
|
Регулярные отчёты: id, вкл., расписание, время, период, блоки, получатели. | — |
create_report_schedule
изменяет |
Регулярный отчёт: генерируется по расписанию и уходит на emails. По умолчанию пн 09:00 за 7 дней. ai_conclusions — 500 лимитов при КАЖДОМ запуске. |
period — По умолчанию last_30_days; custom — даты в dates.dates — [начало, конец] YYYY-MM-DD для custom.comparison_period — prev_period — предыдущий такой же; null — без сравнения.comparison_dates — Для comparison_period=custom.blocks — slug из list_report_blocks; по умолчанию — дефолтные.group_ids — Фильтр по группам (id из list_prompts); 0 — без группы. По умолчанию все.enabledschedule — weekdays — дни из weekdays, monthdays — числа из monthdays.weekdays — 0 — вс, 1 — пн … 6 — сб.monthdays — 1–31.time — HH:MM.emails — Кому слать готовый отчёт.error_emails — Кому слать ошибку.file_type — pdf — приложить к письму. |
update_report_schedule
изменяет |
Меняет регулярный отчёт (id из list_report_schedules), только меняемые поля. Выключить — enabled=false. |
schedule_id* — Из list_report_schedules.period — По умолчанию last_30_days; custom — даты в dates.dates — [начало, конец] YYYY-MM-DD для custom.comparison_period — prev_period — предыдущий такой же; null — без сравнения.comparison_dates — Для comparison_period=custom.blocks — slug из list_report_blocks; по умолчанию — дефолтные.group_ids — Фильтр по группам (id из list_prompts); 0 — без группы. По умолчанию все.enabledschedule — weekdays — дни из weekdays, monthdays — числа из monthdays.weekdays — 0 — вс, 1 — пн … 6 — сб.monthdays — 1–31.time — HH:MM.emails — Кому слать готовый отчёт.error_emails — Кому слать ошибку.file_type — pdf — приложить к письму. |
delete_report_schedule
удаляет |
Удаляет регулярный отчёт безвозвратно (готовые отчёты остаются). Пауза — enabled=false в update_report_schedule. Сначала подтверди у пользователя. |
schedule_id* — Из list_report_schedules. |
* — обязательный параметр.
Кроме того, сервер отдаёт служебные describe_section и call_data_tool —
их использует встроенный ИИ-помощник сервиса (ему доступно только чтение). Своему агенту удобнее
вызывать инструменты напрямую.
Только в интерфейсе остаются действия, которые нельзя отменить или которые оплачиваются рублями: передача владения проектом, платное размещение материалов на внешних площадках и окончательная очистка корзины.
Протокол вручную
Обычно этим занимается MCP-клиент, но сервер можно проверить и через curl.
Сервер stateless: сессии не нужны, каждый запрос самостоятельный.
Рукопожатие
curl -X POST "https://ai.pixeltools.ru/api/mcp" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
Список инструментов
curl -X POST "https://ai.pixeltools.ru/api/mcp" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
Вызов инструмента
curl -X POST "https://ai.pixeltools.ru/api/mcp" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_project_status","arguments":{"project_id":7953}}}'
Ответ
Результат инструмента — JSON, упакованный в текстовый блок:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "{\"data\":{\"id\":7953,\"name\":\"My Project\", ... ,\"parse\":{\"status\":\"in_progress\",\"progress\":42,\"phase\":\"receive\"}}}"
}
],
"isError": false
}
}
Ошибки
| Ситуация | Что вернёт сервер |
|---|---|
| Нет токена или он неверный | HTTP 401 с {"message": "API token required"} или {"message": "Invalid API token"} |
| Превышен лимит запросов | HTTP 429 |
GET или DELETE на адрес сервера | HTTP 405 — SSE-поток и сессии не поддерживаются |
| Неизвестный метод протокола | JSON-RPC ошибка -32601 |
| Ошибка инструмента (нет доступа к проекту, проверка уже идёт, не хватает лимитов, неверные параметры) | Обычный результат с "isError": true и текстом ошибки — агент прочитает его и сам решит, что делать |
Безопасность
- Токен даёт агенту доступ ко всем вашим проектам — храните его как пароль.
- Если токен утёк, сгенерируйте новый в настройках — старый перестанет работать.
- Агент может менять проекты, запускать проверки и генерации и тратить лимиты. Изменяющие инструменты помечены, и Claude спрашивает подтверждение перед их вызовом — не включайте автоподтверждение для них без необходимости.