Kutto в вашем ИИ-агенте
MCP-коннектор даёт Claude, Cursor и любому клиенту Model Context Protocol те же руки, что у вас в Kutto: посмотреть, что залетело у конкурентов, нарезать клипы из ролика, собрать черновик и поставить его в расписание. Вы пишете задачу словами — агент делает её инструментами и показывает результат.
Шпион, Студия, посты, медиа, аналитика, база знаний и Пульс — по разрешениям.
Готовить черновики агенту можно, а публиковать — только с отдельным разрешением ключа.
Роль в организации и выданные каналы ограничивают ключ; у ключа есть дневной потолок.
Подключение
Адрес сервера (Streamable HTTP): https://kutto.ai/mcp
- Клиенты с OAuth (коннекторы Claude в вебе и на десктопе): добавьте адрес как пользовательский коннектор, войдите в Kutto и выберите, какие разделы открыть агенту. Ключ копировать не нужно.
- По ключу (Claude Code, Cursor, свои агенты): выпустите ключ в Настройки → MCP, отметьте разрешения и, если нужно, привяжите ключ к одной организации. Ключ показывается один раз.
claude mcp add kutto --transport http https://kutto.ai/mcp \ --header "Authorization: Bearer plmcp_…"
{
"mcpServers": {
"kutto": {
"url": "https://kutto.ai/mcp",
"headers": {
"Authorization": "Bearer plmcp_…"
}
}
}
}Что спросить
- «Что залетело у моих конкурентов за неделю и почему?»
Агент берёт ленту Шпиона, отбирает посты с аномальными просмотрами и разбирает, чем они цепляют: хук, формат, длина.
- «Нарежь шортсы из этого выпуска: https://youtu.be/…»
Создаёт проект в Студии, ждёт разбор и возвращает найденные моменты с таймкодами — отбирать можно в чате или в ленте Kutto.
- «Собери черновик по лучшему посту конкурента и поставь на пятницу в 18:00»
Готовит подпись и черновик, проверяет требования площадок и ставит в расписание, если у ключа есть разрешение на публикацию. В клиентах с MCP Apps черновик показывается превью прямо в чате.
Готовые сценарии есть и в меню промптов клиента: «Что залетело у конкурентов», «Черновик по залетевшему посту», «Мой канал против конкурентов», «Неделя контента из базы знаний», «Шортс из ссылки».
Инструменты и разрешения
Общее
Доступно без отдельного разрешения: кто я и что этому ключу открыто.
whoamiВозвращает id пользователя-владельца ключа и выданные разрешения (scopes). Диагностика.
Шпион
spy:read — Профили, лента, посты, статистика, папки.
spy_list_profilesВозвращает профили под наблюдением Шпиона. Опционально фильтр по папке.spy_get_profileВозвращает карточку отслеживаемого профиля с последним AI-разбором.spy_feedВозвращает ленту постов по всем профилям (или по папке). Постраничная (nextCursor).spy_profile_postsВозвращает посты одного отслеживаемого профиля. Постраничная выборка с фильтрами.spy_profile_statsСчитает аналитику профиля: вовлечённость, частота постинга, типы контента, топ-хэштеги, лучший час, динамика подписчиков, топ-посты.spy_list_foldersВозвращает папки профилей (id, название, цвет, количество).spy_get_postВозвращает пост отслеживаемого профиля с media[] (вся карусель) для детального разбора.
spy:write — Добавить/удалить/обновить профиль, папки, докачать посты.
spy_add_profileСтавит источник на отслеживание: профиль Instagram (username или ссылка на профиль/пост/reel), профиль TikTok (tiktok.com/@имя или ссылка на ролик), канал YouTube (youtube.com/@имя) или канал VK Видео (vkvideo.ru/@имя). Сбор запускается в фоне.spy_remove_profileСнимает профиль с отслеживания и чистит кеш превью. Необратимо.spy_refresh_profileПересобирает данные профиля синхронно (свежие посты и метрики) и возвращает обновлённую карточку.spy_load_earlier_postsДогружает ранние посты профиля Instagram/TikTok; у каналов YouTube/VK недоступно.spy_set_profile_foldersЗаменяет набор папок профиля целиком. Пустой массив — убрать из всех папок.spy_create_folderСоздаёт папку для группировки профилей.spy_update_folderМеняет название и/или цвет папки.spy_delete_folderУдаляет папку (профили остаются, лишь убираются из неё).spy_mark_seenГасит бейдж «N новых» у профиля (фиксирует текущий момент как «просмотрено»).spy_remake_to_composerСоздаёт из готового ремейка (см. spy_remake) черновик поста в композере (подпись/тип предзаполнены; медиа добавляется отдельно — чужие файлы не репостим). Возвращает postId.spy_add_post_to_draftСоздаёт пустой черновик в композере, привязанный к этому посту-референсу. Черновик ПУСТОЙ: ни подписи, ни медиа — чужой текст и чужие файлы не репостим, оригинал видно в панели референса. Без AI и платных вызовов. Возвращает postId.spy_ingest_postsКладёт собранные КЛИЕНТОМ (браузер с активной IG-сессией) посты в Шпион как «обнаруженные»: сервер сам в Instagram НЕ ходит и медиа не качает — нет риска бана по IP. Создаёт/обновляет профиль и посты, дописывает снапшоты метрик. Идемпотентно. После — работают spy_add_post_to_draft и spy_save_to_board. media[] = [{ kind:image|video, url, thumbnailUrl }] или children[] = [{ isVideo, displayUrl }]; url — уже доступные (локальные /files или прямые), сервер их не загружает.spy_save_to_boardКладёт пост-конкурент в Борд идей с заметкой-анализом (note: «почему залетело», что переиспользовать). Идемпотентно (upsert). Пост уже должен быть в Шпионе (spy_ingest_posts).
spy:analyze — Запуск AI-разбора профиля и ремейка чужого поста. Платно: вызовы модели пишутся в журнал расхода организации.
spy_analyze_profileЗапускает AI-разбор профиля (сводка, топ/аутсайдеры, паттерны вирусности, рекомендации, идеи постов). ПЛАТНО: вызов модели пишется в журнал расхода организации. Перед запуском у профиля должны быть собранные посты.spy_remakeЗапускает AI-ремейк поста под себя: format=script (сценарий) или carousel (карусель). Для reel/video идёт по ссылке, иначе по подписи. ПЛАТНО (журнал расхода). Возвращает AiJob — затем spy_remake_to_composer.
Аналитика
analytics:read — Обзор постов, инсайты аккаунта и медиа опубликованного.
analytics_posts_overviewПоказывает, что и куда опубликовано: пост, аккаунт, ссылка на площадке, превью, время. БЕЗ ЦИФР — они живут на площадке, за ними в analytics_account_media.analytics_account_insightsВозвращает живую статистику подключённого аккаунта: профиль (подписчики/публикации), дневной reach и суммарные просмотры за период.analytics_account_mediaВозвращает посты подключённого аккаунта прямо из Graph API / YouTube со встроенными инсайтами (включая посты до подключения Kutto).
Посты
posts:read — Список и карточки постов, папки, теги, подборки, валидация черновика, карусель со слоями и кадр слайда.
posts_listВозвращает посты организации с фильтрами (статус, платформа, период, архив, поиск по подписи).posts_getВозвращает пост целиком: контент, медиа, цели, статус.posts_validateПроверяет валидность поста под каждый целевой аккаунт (без сохранения) — лимиты, тип контента, требования платформы.posts_folders_listВозвращает папки ленты постов со счётчиками; пост лежит максимум в одной.posts_tags_listВозвращает теги ленты постов со счётчиками; на посте их может быть много.posts_views_listВозвращает сохранённые подборки ленты постов. filters — параметры posts_list: folder, tags (id через запятую), platform, type = content_type, sort, q; tab и view — вид ленты.carousel_getВозвращает карусель черновика: шаблон, формат холста, слайды с видом, полями, длительностью (durationMs) и слоями. Слой: id, type (text/image), role (роль текста или вид картинки), text, box (геометрия в % холста), style, appear (анимация появления). id слоя и имена полей box/style те же, что принимает carousel_update_slide. Слайд со слоями — ~4 тыс. токенов: читай нужный (index), а не всю карусель.carousel_preview_slideПоказывает слайд карусели картинкой PNG (длинная сторона до 768 px), в пост ничего не пишет. time_ms — кадр слайда-ролика в этот момент (анимации появления); без него — финальный кадр, как ляжет в пост. Зови после сборки и правок, чтобы проверить, что видно и ничего не вылезло. Рендер занимает секунды — не зови в цикле без нужды.
posts:write — Создать/изменить черновик, расписание, дубль, архив, удаление, папки, теги, отправка на согласование, карусель из шаблона.
posts_createСоздаёт черновик поста. Медиа добавляй через media_* и передавай media_asset_ids; цели — target_account_ids.posts_updateМеняет переданные поля поста, остальные (медиа, цели, подпись, расписание, папка, название) остаются прежними. media_asset_ids и target_account_ids заменяют список целиком, [] — снять все. Правка возвращает пост в черновик; только title — переименовать в любом статусе.posts_scheduleМеняет время публикации поста. scheduled_at=null снимает время. В очередь пост это НЕ ставит: черновик с временем так и останется черновиком, пока его не поставят posts_queue (нужен posts:publish).posts_duplicateСоздаёт копию поста как новый черновик. Медиа, цели, слайды карусели со слоями и анимацией, формат и чип копируются; расписание и статус — нет: копия всегда черновик.posts_archiveПомещает пост в архив.posts_unarchiveДостаёт пост из архива.posts_deleteУдаляет пост мягко (deletedAt).posts_submit_for_approvalПереводит пост в статус ожидания согласования. Публикации это не запускает — её запускает согласование.posts_rejectОтклоняет пост на согласовании (возврат в черновик).posts_unqueueУбирает пост из очереди публикации (возврат в черновик).posts_mark_publishedСтавит статус «Опубликован» посту без канала, который выложили вручную. Пост с каналом — отказ.posts_unmark_publishedСнимает ручную отметку «Опубликован» с поста без канала: с датой — в очередь, без — в черновик.posts_folder_createСоздаёт папку ленты постов. Положить пост — folder_id (null — без папки) в posts_create/posts_update.posts_set_tagsВешает и снимает теги пачке постов в любом статусе. Теги — имена или id; новое имя в add создаёт тег.carousel_create_from_templateСоздаёт пост-черновик (карусель) по шаблону каталога: каждому слайду — вид (kind) и тексты в поля этого вида из carousel_templates_list. Сборка та же, что в композере: раскладка вида, подгонка кегля под рамку, тема по правилу шаблона, анимация появления из пресета. Список — массив строк, у поля highlight — подстрока заголовка под маркер. Неверный вид, пустое обязательное поле или число слайдов мимо рамки — отказ с перечнем. Бесплатно; дальше carousel_preview_slide — посмотреть, carousel_render_to_post — положить в медиа поста.carousel_update_slideМеняет слайд карусели. op=edit (по умолчанию): fields (+kind) — пересобрать слайд по шаблону с новыми текстами (кегль подгонится, ручные правки слоёв слайда сбросятся); layers — точечно по id из carousel_get: text, box, style, appear (null снимает анимацию), remove, media_asset_id (картинка из media_list); add_layers — новый текст, фигура с style.fill или картинка (media_asset_id); background_media_asset_id — фон слайда; duration_ms — длина слайда-ролика; data — значения {ключ}. style текста: font (имя шрифта или heading|body), sizePct (кегль, % высоты холста, 0.5–40), color (#hex|text|accent|bg|white|black), weight, align, uppercase, italic, lineHeight, letterSpacing, opacity, shadow, strokeColor и strokeWidth (контур, доля кегля 0–0.2), highlight (цвет маркера), highlightText, highlightStyle (plate|marker|band), highlights [{text,color}], textColors; картинки: fill (цвет|{type:linear,angle,colors}), radius (% меньшей стороны слоя, 0–50; 50 — круг), opacity, shape, fade, filter; null снимает поле. Новый text сбрасывает разметку по смещениям. op=add — новый слайд за один вызов: kind с fields и/или фон и/или add_layers, duration_ms, data (at — место; отказ слоёв слайд не оставляет); op=duplicate, op=delete, op=move (to). Индексы с 0.carousel_set_canvasМеняет формат холста поста (aspect; не задан — 3:4, у Story только 9:16) и бренд-чип с ником на слайдах (show_chip) — как в композере, и посту без шаблона. Слои в % холста и не перекладываются — проверь carousel_preview_slide. Собранные слайды пересобираются тут же (rerendered). Бесплатно.carousel_render_to_postСобирает слайды карусели в медиа поста (JPEG на позицию слайда) — то же, что «Сохранить» в композере; без этого пост нечего публиковать. indexes — какие слайды (нет — все). После правок слайда его надо собрать заново. Бесплатно, по слайду за раз — десяток слайдов идёт десятки секунд. motion=rendering — ролик слайда рисуется асинхронно, в посте пока картинка; publish_now до готовности откажет.
posts:publish — Опасное: постановка в очередь публикации / публикация сейчас, включая согласование поста. Держи отдельно.
posts_queueСтавит пост в очередь публикации. ОПАСНО: пост уйдёт в эфир по расписанию, publish_now=true — немедленно. Требует разрешение posts:publish. Ролики слайдов рисуются асинхронно: до готовности publish_now откажет, расписание их подождёт.posts_approveОдобряет пост на согласовании. ОПАСНО: одобрение СРАЗУ ставит пост в очередь публикации, а при пустом расписании — на «сейчас». Поэтому требует posts:publish, как и posts_queue.
AI-инструменты
ai:read — Задачи (jobs), бренд-войсы, шаблоны промптов, шаблоны карусели.
ai_list_jobsВозвращает последние AI-задачи организации (фильтр по типу). Используй ai_get_job для результата.ai_get_jobВозвращает AI-задачу с результатом и статусом — опрашивай после запуска генерации. Переписки с моделью в ответе нет: там система-промт установки, наружу он не уходит.ai_list_brand_voicesВозвращает сохранённые tone-of-voice организации. id можно передавать в генерации (brand_voice_id).ai_list_prompt_templatesВозвращает шаблоны промптов: системные (isSystem) плюс свои. id можно передавать в ai_run_script (prompt_template_id).carousel_templates_listВозвращает опубликованные шаблоны карусели каталога: формат, сколько слайдов, виды слайдов (kinds) и поля текста каждого вида (key, тип, обязательность, maxLength, подсказка), инструкцию и правила автора, тон, темы и правило палитры (fixed — одна, alternate — по очереди, by-kind — по виду), есть ли анимация. Первый шаг перед carousel_create_from_template: пиши тексты под поля вида, а не произвольно. Бесплатно.
ai:write — Запуск генераций (сценарий, карусель, подпись, разборы). ПЛАТНО (журнал расхода).
ai_run_scriptЗапускает генерацию сценария по идее и/или ссылке-референсу. ПЛАТНО (журнал расхода). Возвращает AiJob.ai_continue_scriptОтправляет реплику в существующую script-джобу (итеративная доработка).ai_run_carouselГенерирует текстовую карусель из темы (source=text) или видео по ссылке (source=video). ПЛАТНО (журнал расхода).ai_run_captionГенерирует подпись, заголовок или хэштеги (без AiJob, но вызов модели платный). Возвращает variants[].ai_run_video_analysisРазбирает публикацию по ссылке: Reels, пост/карусель Instagram, TikTok, шортс и видео YouTube до часа, VK. Разбор в счёт тарифа (квота разборов), сверх неё — с баланса только при allow_overage. Работа идёт в фоне: ответ — AiJob со status=running, готовый отчёт (result.analysis) забирай ai_get_job. Та же публикация повторно — готовый разбор бесплатно.ai_run_profile_analysisРазбирает профиль Instagram по username. Считается разбором канала: квота channel_analyses тарифа, сверх неё — с баланса только при allow_overage. Возвращает AiJob.
Медиа
media:read — Список медиа-ассетов воркспейса.
media_listВозвращает медиатеку организации (id, тип, публичный url), свежие сверху. id → posts_create.media_asset_ids. Нужен конкретный файл — фильтруй по type и query (часть имени файла).
media:write — Добавить медиа по URL или base64, удалить ассет.
media_add_externalСохраняет https-ссылку как ассет воркспейса (для поста по ссылке). Сразу файл не скачивается; когда ассет попадёт в пост, сервер за несколько минут скопирует его в хранилище Kutto, так что ссылка должна прожить хотя бы до этого. В слайд карусели такая не встанет — для этого media_upload с url.media_uploadЗагружает файл в медиатеку: url — сервер скачает сам (https, ≤200 МБ, тип по содержимому; бери вместо base64 всё, что лежит по ссылке), или data — base64 (≤50 МБ) с mime_type. Годится для слоёв и фона карусели.media_removeУдаляет файл медиатеки мягко.
Студия
studio:read — Проекты нарезки, найденные моменты, клипы и ссылки на готовые файлы.
studio_list_projectsВозвращает проекты Студии: статус, сколько клипов, когда создан. Свежие сверху. Отдаёт страницу, а не всё разом — за старыми ходи через offset.studio_get_projectПоказывает, где проект: качается, разбирается, готов. Прогресс, длительность исходника, сколько найдено моментов и сколько клипов уже взято в работу. Транскрипт и разметку не отдаёт — они огромные.studio_list_momentsВозвращает найденные в исходнике моменты: таймкоды, заголовок, оценка (0–100), причина и ярлыки. `taken` — момент уже взят в работу. Индекс отсюда идёт в studio_take_moments.studio_list_clipsВозвращает клипы проекта: статус рендера, ссылка на готовый файл и на огрызок-превью, id поста, если клип уже отправлен в ленту. Сюда же попадают кандидаты из ленты отбора (reviewStatus=pending) — взятые в работу отмечены approved. status=done при renderStale=true значит, что файл старше правок.studio_get_clipВозвращает настройки одного клипа: длину готового клипа, ленту (lane: index куска — тот же, что в редакторе, «кусок №N» = index N-1; outFrom/outTo — секунды ГОТОВОГО клипа; frame и кого ведёт кадр), вторую дорожку, субтитры, хук, музыку и вставки поверх. Читай перед правкой — чтобы менять только нужное.studio_clip_wordsВозвращает текст субтитров клипа: слова с индексом i и временем, строки (как их нарисует рендер) и паузы речи между словами. Время — секунды ГОТОВОГО клипа. Индексы i идут в studio_clip_edit_words, паузы — в studio_clip_cut. manual=true — правились руками; language не source — переведены. Длинный клип читай окном from_sec/to_sec.studio_clip_layersВозвращает текстовые надписи поверх кадра, включая хук (role=hook): текст, окно показа startSec–endSec (секунды ГОТОВОГО клипа, null — с начала/до конца), место в % кадра (xPct/yPct — левый верхний угол, widthPct — ширина, sizePct — кегль в % высоты), plate — цвет плашки. id — для studio_clip_edit_layer.studio_clip_peopleВозвращает людей клипа, за которыми можно вести кадр: id, секунд в кадре, сцен, speaking 0..1 (говорит ли), где обычно стоит (side, cx — доля ширины исходника), following — ведём ли сейчас. С at_sec (секунды ГОТОВОГО клипа) — ещё лица в этот момент: personId (-1 — не опознан), cx/cy/w/h, speaker. Нет разбора лиц — запускает его и говорит, когда повторить. Выбор — studio_clip_follow. thumbs=true — ещё миниатюры лиц одной картинкой, номер под лицом (стоит денег — только если по положению не различить).studio_clip_snapshotПоказывает кадр клипа картинкой в момент at_sec ГОТОВОГО клипа. view=frame — как в ролике (с текущим кадрированием, без субтитров и надписей); view=source — исходник целиком: пунктир — окно кадра, рамки — лица с номером человека (жёлтая — говорящий). Зови, когда надо увидеть, кто где и что обрезано, или проверить правку кадра. Каждый кадр стоит денег — не зови без нужды.studio_search_soundsИщет в общем пуле музыки и эффектов. Найденную позицию надо перенести в медиатеку воркспейса (studio_add_sound), и только потом ставить на дорожку.studio_search_footageИщет видео-план в корпусе материала ПО СМЫСЛУ, а не по словам в названии: «ночной город сверху», «руки за клавиатурой». Русский запрос переводится сам. Найденное надо перенести в медиатеку (studio_add_footage), и только потом ставить вставкой.
studio:write — Создать проект из ссылки и отправить готовый клип в ленту черновиком. Создание проекта тратит трафик и платные вызовы моделей.
studio_create_projectСоздаёт проект Студии из ссылки ЛИБО файла (media_upload). По умолчанию нарезка: качает, ищет моменты и ТРАТИТ минуты видео. Ход — studio_get_project. Пустой монтаж — blank.studio_publish_clipДелает из готового клипа черновик поста на выбранный канал. Дальше — обычные posts_* (подпись, расписание, очередь). Клип должен быть отрендерен (и не renderStale). Если у канала включён автопилот, черновик сразу встаёт в его очередь — смотри scheduledAt.studio_create_clipСоздаёт клип из куска исходника проекта. Рендер НЕ запускает — сначала настрой монтаж (studio_edit_clip), потом studio_render_clip. Исходник к этому моменту должен быть скачан.studio_edit_clipСобирает клип: какие куски исходника оставить, что со звуком, какую музыку подложить, что наложить поверх кадра. Передавай только то, что меняешь — остальное остаётся как было. Готовый файл после правки устаревает: нужен studio_render_clip.studio_add_soundПереносит позицию пула в медиатеку воркспейса и возвращает id ассета — его и ставят в studio_edit_clip.music. Повторный вызов не задваивает.studio_add_footageПереносит план в медиатеку воркспейса и возвращает id ассета — его ставят в studio_edit_clip.overlays. Повторный вызов не задваивает файл.studio_clip_captionsВключает караоке-субтитры и выбирает их вид. Стили: hormozi — Капс, слово на лаймовой плашке. mrbeast — Капс, жёлтое слово с прыжком. karaoke — Строка красится по мере речи. band — Текст на тёмной плашке. pill — Слово на фиолетовой капсуле. minimal — Белый текст с мягкой тенью. oneword — По слову на экране, узкий капс. typewriter — Печать по буквам на ленте. expert — Слово на синей плашке. neon — Капс, голубое свечение. pop — Капс, слова выскакивают по одному. gold — Антиква, слово золотом. alarm — Узкий капс, слово красным. comic — Жёлтый капс, слово с наклоном. marker — Слово под жёлтым маркером. ali — Строчные, слова по одному. iman — Капс, слово курсивом. Готовый файл после правки устаревает — нужен studio_render_clip.studio_clip_frameНастраивает кадр: вертикаль или горизонт, кадрирование, сплит с удерживающим видео снизу, качество рендера. Готовый файл после правки устаревает — нужен studio_render_clip.studio_clip_voiceЗаказывает озвучку клипа на другом языке (перевод реплик + голос из «Моих голосов»). Платится ОДИН раз при заказе: минуты озвучки тарифа, сверх них — с баланса только при allow_overage=true. Готовая озвучка через 1–3 минуты сама ложится дорожкой на таймлайн и приглушает оригинал; дальше studio_render_clip. Тот же язык и голос повторно не оплачиваются. Убрать озвучку — studio_edit_clip (дорожка звука).studio_clip_edit_wordsМеняет текст субтитров: заменить слова (опечатка, имя), удалить слово или фразу, перенести строку. Индексы — из studio_clip_words, все относятся к состоянию ДО вызова. Новый текст сам выравнивается по звуку. Пример: исправить «Миша» в слове 12 — edits=[{from:12,to:12,text:"Маша"}]; удалить слова 30–31 — text:"". Субтитры после правки ручные: из транскрипта сами не пересобираются. Файл устаревает — нужен рендер.studio_clip_cutВырезает из клипа паузы речи или заданные отрезки. Время — секунды ГОТОВОГО клипа. Паузы: pauses={min_sec:1} уберёт тишину между словами от 1 с, оставив по keep_sec у краёв. Отрезок: ranges=[{from_sec:5,to_sec:8.5}]. Кадр сохраняется; субтитры, надписи и вторая дорожка едут за лентой, музыка стоит. Нужен рендер.studio_clip_edit_layerДобавляет, меняет или удаляет текстовую надпись поверх кадра (и хук-заголовок). Время — секунды ГОТОВОГО клипа. Новая надпись по умолчанию сверху по центру, белым, 6% высоты кадра, видна весь клип. Пример: action=add, text="СМОТРИ ДО КОНЦА", start_sec:0, end_sec:3, plate:true. Изменить — action=update, layer_id и только меняемые поля; хук — layer_id="hook". Файл устаревает — нужен рендер.studio_clip_partsПравит элементы ленты по index из studio_get_clip; ops применяются по порядку, атомарно, index каждой — по ленте ПОСЛЕ предыдущих. split {at_sec — секунда ГОТОВОГО клипа}: разрезать кусок, кадр половин сохраняется; delete {index}: дальше всё сдвигается раньше; move {index, to_index}; duplicate {index}: повтор сразу за ним; trim {index, edge start|end, delta_frames или delta_sec}: край по исходнику, плюс — вправо, по кадрам исходника; frame {index, zoom 1–2.2 при слежении за лицом, free {x,y,scale} — ручная рамка или false — снова вести лицо, fade_in/fade_out}. Субтитры, надписи и вторая дорожка едут за временем, музыка стоит. Паузы и отрезки по времени — studio_clip_cut. Нужен рендер.studio_clip_duoВключает «двое в кадре»: кадр делится на две дорожки, нижняя — дубль ленты со своим кадром (как кнопка редактора «Дубль на вторую дорожку»). enabled=true — дублировать все куски (с at_sec — только кусок под этим моментом готового клипа), уже стоящие дубли не трогает; enabled=false — снять дубли (с at_sec — только под этим моментом). ratio — доля ВЕРХНЕЙ дорожки 0.15..0.8 (0.5 — пополам). Кого вести внизу — studio_clip_follow с lane=b. Файл устаревает — нужен рендер.studio_clip_overlayСтавит, правит или снимает ОДИН оверлей — картинку (логотип, стикер) или видео из медиатеки поверх кадра; остальные не трогает. op=add: media_asset_id, from_sec/to_sec — секунды ГОТОВОГО клипа (по умолчанию картинка 4 с, видео на свою длину); op=update: id и только меняемые поля; op=remove: id. x/y — смещение центра от центра кадра долями кадра (x −0.5 — левый край, y −0.5 — верх), scale — ширина долей кадра (по умолчанию 0.5), track — слой 0..8 (выше — поверх). Файл устаревает — нужен рендер.
studio:render — Взять моменты в работу, отрендерить клип, перераспознать речь, посчитать кадр за говорящим или выбранным лицом. Отдельно от записи: всё это занимает процессор минутами, и ключу «посмотреть и отправить» это не нужно.
studio_take_momentsПревращает выбранные моменты в клипы и ставит их в очередь рендера. Идемпотентно: момент, уже взятый в работу, второй раз не задваивается. ТРАТИТ процессор и время — рендер идёт минуты.studio_render_clipСтавит клип в очередь рендера. Идёт минутами — следи через studio_list_clips, готовый файл появится в outputUrl. ТРАТИТ процессор.studio_clip_retranscribeРаспознаёт речь этого клипа заново и вклеивает результат в транскрипт проекта. Нужна, когда в куске пропали субтитры: распознавание иногда сворачивает полминуты речи в одну фразу. ТРАТИТ процессор. Ручные правки субтитров в ОСТАЛЬНЫХ клипах не трогает.studio_clip_auto_reframeСтавит клип в очередь на движущийся кадр 9:16: клип режется по сценам, кадр ведёт того, кто говорит. Отвечает сразу, кадр считается фоном минутами (разбор лиц и речи). Ленту собирает ЗАНОВО: ручная раскладка из studio_edit_clip снимается сразу. Готовность — studio_get_clip (reframeState: queued → ready, failed — reframeError) раз в минуту. Повадку камеры (profile) ставь после готовности через studio_clip_follow. Когда кадр готов, файл устарел — нужен studio_render_clip.studio_clip_followВыбирает, за кем ведёт кадр 9:16 (id людей — из studio_clip_people). Режимы: people=[3] — вести их по всему клипу ([] — снова за говорящим); at_sec (секунды ГОТОВОГО клипа) + person_id или cx/cy (доли кадра исходника) — вести это лицо в куске под at_sec (scope=shot) или во всём клипе (scope=clip); только anchor/profile — пересчитать кадр под точку и повадку. Файл устаревает — нужен рендер.
Воркфлоу
workflow:read — Список воркфлоу, граф, каталог нод, прогресс выполнения.
workflow_listВозвращает воркфлоу организации (id, название, обновлён).workflow_getВозвращает воркфлоу целиком: ноды и рёбра графа.workflow_catalogВозвращает каталог доступных типов нод (категории, порты, параметры). Читай раз в сессию.workflow_executionПоказывает состояние последнего запуска воркфлоу (статусы нод). Опрашивай после workflow_run.
workflow:write — Создать/переименовать воркфлоу.
workflow_createСоздаёт пустой воркфлоу. Граф редактируется в UI; здесь — заготовка с названием.
workflow:run — Запуск и отмена выполнения воркфлоу (AI-ноды платные — пишутся в журнал расхода).
workflow_runЗапускает выполнение воркфлоу (AI-ноды платные — пишутся в журнал расхода). Опрашивай workflow_execution.workflow_cancel_runОстанавливает текущий запуск воркфлоу по runId.
Инструменты
toolbox:read — Список инструментов (голос/минус, апскейл, субтитры, перевод, обложки…), цена до запуска и состояние прогонов.
toolbox_listПеречисляет инструменты (голос/минус, апскейл, субтитры, перевод, обложки…): цели, параметры, выходы.toolbox_estimateСчитает цену до запуска тем же кодом, что резерв. blocked — запустить нельзя, с причиной.toolbox_run_statusВозвращает статус прогона, ошибку с кодом и готовые файлы или текст.
toolbox:run — Запуск, остановка и продолжение прогонов инструментов (платные резервируют деньги или квоту).
toolbox_runЗапускает инструмент; платный резервирует деньги или квоту. Ход — toolbox_run_status.toolbox_cancel_runОстанавливает прогон; несписанное возвращается. Законченный прогон не трогает.toolbox_resume_runПродолжает прогон с паузы (paused) по черновику как есть; у платных здесь резерв.
Аккаунты
accounts:read — Список воркспейсов и подключённых соцаккаунтов.
list_workspacesВозвращает организации, доступные пользователю. Используй полученный id как workspace_id в остальных тулзах (Шпион, Аналитика).list_social_accountsВозвращает подключённые каналы организации (Instagram, YouTube, TikTok, Threads, Telegram). id аккаунта нужен для тулз аналитики (analytics_account_*).
База знаний
knowledge:read — Статьи-лайфхаки по контенту/SMM и шпаргалка-агрегат из данных Шпиона.
knowledge_listВозвращает статьи-лайфхаки по контенту организации (авто-выводы из Шпиона + ручные заметки). Фильтры: раздел, тег, источник, поиск по тексту. Полный текст — через knowledge_get.knowledge_getВозвращает полный текст статьи (markdown) по id — со всеми выводами, цифрами и рекомендациями.knowledge_statsСчитает по разобранным постам Шпиона без модели: какие хуки/форматы/CTA/темы и в какое время дают больше вовлечения, плюс список постов-победителей. Без AI и без платных вызовов.
Пульс
pulse:read — Метрики своих YouTube-каналов: ролики с приростом и удержанием, суточные ряды, портрет аудитории, сводка дня, разбор канала. Только чтение уже собранного: запуск сбора наружу не отдан, квота YouTube общая на инсталляцию.
pulse_channelsВозвращает каналы организации с итогами: подписчики, просмотры за всё время, сколько роликов. Отсюда берётся channel_id для остальных тулз Пульса.pulse_channelВозвращает итоги одного канала и состояние сбора аналитики. Пустые метрики почти всегда значат не «канал новый», а сломавшийся сбор — здесь это видно.pulse_videosВозвращает ролики с просмотрами, приростом и удержанием. Ею же берётся топ: sort=week, dir=desc, limit=10. Окно from/to задаёт произвольный период в прошлом — тогда у каждого ролика появляется period.pulse_channel_seriesВозвращает суточный ряд: просмотры и подписчики на конец каждых суток и прирост за сутки. По нему видно, растёт канал или встал.pulse_video_seriesПоказывает, как ролик набирал просмотры день за днём. Отвечает на «залетел сразу или разошёлся потом».pulse_audienceПоказывает, кто смотрит канал: страны, возраст, пол, устройства, подписчики против остальных, источники трафика. Окно — 28 или 365 суток.pulse_digestСводит, что случилось за сегодня по всем каналам разом: подписчики, просмотры, что вышло и что набрало больше всех.pulse_reportРазбирает свой канал так же, как «Анализ каналов» чужие: ритм публикаций, залетевшие против остальных, лестница просмотров, что общего у заголовков, которые сработали.
Ограничения и приватность
- Инструменты с ИИ (разбор, генерация, транскрибация) расходуют деньги провайдеров. Расход пишется в журнал организации; у ключа можно поставить дневной потолок запусков и долларов, а владелец организации — месячный лимит участнику.
- Частота: до 240 вызовов в минуту на ключ и до 60 запускающих работу — агент в неудачной петле не выжжет очередь.
- Пост в TikTok, созданный через MCP, уходит с доступом «Только я»: кто увидит ролик, решает автор в Kutto. Instagram публикуется через бизнес-аккаунт.
- Каждый вызов ключа виден в Настройки → MCP: какой инструмент, когда, чем закончился. Отозванный ключ перестаёт работать в течение нескольких секунд.
- Агент видит только организации, в которых вы состоите, и только разрешённые ключу разделы. Как мы храним данные — политика конфиденциальности.
Что-то сломалось или нужен инструмент, которого нет, — напишите на support@kutto.ai.