Перейти к содержанию

AnySkills

Управление онлайн-школой: курсы, уроки, тесты, ученики и воронка продаж

Продуктивностьавтор: AnySkills · добавлен каталогом✓ Проверен модератором
45 инструментов
подключить к ассистенту

Добавьте сервер в «Мои MCP» — получите адрес подключения для Claude и ChatGPT.

Добавить в «Мои MCP»

Нужно войти или зарегистрироваться — вернём на эту страницу.

/about

Описание

AnySkills — платформа для онлайн-школ. Сервер позволяет вести школу через ИИ-ассистента: собирать курсы, следить за учениками и работать со сделками, не открывая кабинет. Можно получить сводку по школе, создавать курсы, модули, уроки и тесты, править содержимое уроков и публиковать курс или возвращать его в черновики. Для обучения есть списки потоков, прогресс каждого ученика, поиск тех, кто давно ничего не делает, очередь работ на проверку куратору и статистика ответов по вопросам тестов. Для продаж доступна воронка: этапы, сделки, новые заявки, перевод сделки по этапам, заметки, метки и задачи со сроком. Нужен свой аккаунт школы в AnySkills и ключ доступа; часть действий, например публикация курсов, ограничена тарифом.

/tools

Инструменты · 45

из ответа tools/list

Заметка в сделку

add_deal_note

Добавить заметку в ленту сделки: итог звонка, договорённость, возражение. Заметку увидят менеджеры в карточке сделки.

add_deal_note(text: string, deal_id: integer)

Поставить метку сделке

add_deal_tag

Поставить сделке метку по имени. Имя сравнивается без регистра и с прежними именами меток; такой метки нет, она заводится. Если метка в группе «одна из», прежняя метка группы снимается сама. Повторная метка ничего не меняет. Событие ложится в ленту сделки.

add_deal_tag(name: string, deal_id: integer)

Задача по сделке

add_deal_task

Поставить задачу по сделке со сроком: позвонить, отправить договор. Ответственный — хозяин ключа. Срок обязателен: задача без срока не попадёт в «Сегодня» и будет забыта.

add_deal_task(text: string, due_at: string, deal_id: integer)

Проверить черновик воронки

check_funnel

Та же проверка, что перед публикацией, но ничего не публикует. errors: не опубликуется, пока не исправить; warnings: можно, но стоит посмотреть. У каждой записи номер блока (node) и текст.

check_funnel(funnel_id: integer)

Прогресс потока по ученикам

cohort_progress

По каждому ученику потока: процент курса (считается по обязательным опубликованным урокам, как в кабинете), когда последний раз заходил или проходил урок, сколько дней с тех пор. Плюс доходимость потока — доля тех, кто дошёл до 100 %. Имена — только по ступени 3 (см. описание сервера), иначе «Ученик 14».

cohort_progress(cohort_id: integer)

Создать курс

create_course

Заводит курс-черновик: ученикам он не виден, пока не опубликован через `publish_course`. Черновиков можно держать сколько угодно на любом тарифе. Режим доступа: `open` — всё открыто сразу, `cohort` — по расписанию потока, `sequence` — по прогрессу ученика. Автор курса — хозяин ключа. Повтор с тем же Idempotency-Key вернёт тот же курс, а не создаст второй.

create_course(title: string, access_mode?: string, description?: string)

Завести метку сделок

create_deal_tag

Новая метка в справочнике сделок. group: имя группы «одна из» (у сделки одна метка группы, например «Урок»), новая группа заведётся. is_source: метка говорит, откуда пришёл человек. Имя, занятое другой меткой или её прежним именем, отказ: возьмите ту метку.

create_deal_tag(name: string, color?: string, group?: any, is_source?: boolean)

Собрать новую воронку черновиком

create_funnel_draft

Новая воронка бота черновиком. Людям ничего не уходит: опубликовать её может только человек в кабинете, ссылка в ответе (editor_url). Формат воронки: get_funnel_format. В ответе проверка (errors, warnings): исправьте ошибки правкой черновика.

create_funnel_draft(name: string, graph: object, bot_id: integer)

Новая заявка

create_lead

Завести заявку: человек и сделка одним запросом. Нужна почта, телефон или Telegram. Человек, который уже есть, не заводится второй раз; повторная заявка про то же ложится заметкой в открытую сделку. Заголовок `Idempotency-Key` защищает от двойной отправки.

create_lead(name?: string, email?: string, phone?: string, comment?: string, telegram?: string, utm_term?: string, course_id?: any, utm_medium?: string, utm_source?: string, utm_content?: string, utm_campaign?: string)

Добавить урок в модуль

create_lesson

Урок встаёт в конец модуля. `document` — в формате Editor.js: `{"blocks": [{"type": "header", "data": {"text": "...", "level": 2}}, {"type": "paragraph", "data": {"text": "..."}}, ...]}`. Разрешённые блоки: header, paragraph, list, quote, callout, code, table, image, video (провайдер и идентификатор, не iframe), file, test (`{"test_id": N}`). Неизвестные блоки выбрасываются, разметка чистится. Образец готового документа отдаёт `get_lesson`.

create_lesson(kind?: string, title: string, document?: any, module_id: integer, is_required?: boolean, duration_minutes?: any)

Добавить модуль в курс

create_module

Модуль встаёт в конец курса. Уроки добавляются в модуль отдельно, `create_lesson`. Порядок модулей потом можно поменять в кабинете.

create_module(title: string, course_id: integer)

Собрать шаг правила продаж выключенным

create_sales_rule

Шаг правила продаж, ВСЕГДА выключенный: включает его владелец в кабинете, до этого он ничего не делает. Повод: event tag (tag_id, метка поставлена на сделку) или stage (stage_id, сделка перешла на этап). delay_minutes: через сколько. action: bot (funnel_id, запустить воронку бота), tag_add или tag_remove (target_tag_id), stage (target_stage_id, «Оплачено» нельзя), task (task_text, task_days), goal (цель Метрики). skip_if_replied: не делать, если человек ответил.

create_sales_rule(goal?: any, event?: any, action?: any, tag_id?: any, stage_id?: any, funnel_id?: any, task_days?: any, task_text?: any, lost_reason?: any, delay_minutes?: any, target_tag_id?: any, skip_if_replied?: any, target_stage_id?: any)

Завести этап продаж

create_sales_stage

Новый этап «в работе» в воронке продаж: сразу после after_stage_id, а без него перед «Оплачено» и «Отказом». Цвет: secondary, azure, blue, purple, yellow, orange, green, red. Людям это ничего не шлёт. Удалить этап может только человек в кабинете.

create_sales_stage(name: string, color?: string, after_stage_id?: any)

Завести короткую ссылку

create_short_link

Короткая ссылка на домене школы: на адрес (url) или в бота (bot_username и, если нужно, start_code: код воронки «Старта»). platform (youtube, vk, rutube, telegram, direct, email, site, other) ставит метки сама: utm_source, utm_medium, utm_campaign; свои метки (utm: source, medium, campaign, content, term) главнее. path: свой путь латиницей; без него система выберет понятный, варианты покажет suggest_link_path. button: подпись кнопки под роликом, set_id: ролик или кампания школы. Та же ссылка (тот же адрес или бот с кодом, та же площадка, кнопка и ролик) второй раз не заводится: вернётся прежняя, created=false. Например: url https://it-ontime.ru/mikrotik, platform youtube → short_url https://go.it-ontime.ru/mikrotik, метки youtube, video, mikrotik. Ошибка (путь занят, адрес не тот, нет домена) приходит ответом 400 с текстом для человека.

create_short_link(url?: string, utm?: any, path?: string, title?: string, button?: string, set_id?: any, platform?: string, start_code?: string, bot_username?: string)

Создать тест с вопросами

create_test

Тест целиком за один вызов: параметры и вопросы по порядку. Типы вопросов: `one` (один из списка, ровно один верный), `many` (несколько верных), `text` и `number` (верный ответ в `correct_text`), `open` (ответ своими словами; `reference_answer` и `criteria` помогают проверке). Куда положить: `lesson_id` — блоком в конец урока, `module_id` — итоговым тестом модуля; можно и то и другое, можно ничего.

create_test(title: string, lesson_id?: any, module_id?: any, questions: array, pass_score?: integer, description?: string, max_attempts?: integer)

Структура курса

get_course

Один курс целиком: модули по порядку, в каждом — уроки по порядку с типом (`lecture`, `practice`, `webinar`, `test`, `survey`), длительностью и признаком обязательности. Итоговый тест модуля, если есть, назван по номеру — его вопросы отдаёт `get_test`. Текст уроков сюда не входит: за ним `get_lesson`.

get_course(course_id: integer)

Сделка с лентой

get_deal

Одна сделка: поля, человек и последние 30 событий ленты (заметки менеджеров, переводы, открытие доступа, оплаты). Помогает ответить, что с человеком происходит и о чём с ним договорились.

get_deal(deal_id: integer)

Воронка целиком

get_funnel

Черновик и опубликованная версия воронки, номер версии черновика (нужен для правки) и сколько людей сейчас стоит на каждом блоке опубликованной версии. Люди считаются числом, без имён.

get_funnel(funnel_id: integer)

Как устроена воронка

get_funnel_format

Формат воронки: блоки, их настройки и стрелки. Прочитать до того, как собирать или править воронку: черновик присылается целиком в этом формате.

get_funnel_format()

Урок целиком

get_lesson

Документ урока в формате Editor.js: список блоков `header`, `paragraph`, `list`, `quote`, `callout`, `code`, `table`, `image`, `video`, `file`. Это тот же формат, в котором урок принимается на запись, поэтому ответ годится как образец для `create_lesson`. У старых уроков документа может не быть — тогда `document` пуст, а содержимое лежит строками в `blocks`.

get_lesson(lesson_id: integer)

Статистика короткой ссылки

get_link_stats

Что принесла одна ссылка за период. funnel: clicks (переходы), people (разные люди), to_bot (пришли в бота), leads (заявки с сайта), deals (сделки), payments (оплаты), revenue (рубли, строкой), returned (вернулись в бота, были в нём раньше), filtered (отсеяны роботы и повторы). daily: переходы по дням. paths: люди по каждому пути за 7 и 30 дней и всего, видно, идут ли ещё по старому пути. referrers: откуда переходят, devices: с чего. Период: since и until, даты ГГГГ-ММ-ДД включительно, по Москве; без них последние days дней (по умолчанию 30), days=0 значит всё время. Например, «сколько оплат дал ролик за сентябрь»: since=2026-09-01, until=2026-09-30.

get_link_stats(days?: any, since?: any, until?: any, link_id: integer)

Сводка школы

get_school_summary

Название школы, тариф, сколько курсов и из них опубликовано, сколько учеников и потоков, и что можно этому ключу. ИИ вызывает это первым при подключении и представляется человеку по-человечески: не списком инструментов, а тремя делами, ради которых школа его подключила, и одним примером вопроса. Цифры настоящие, из этого же ключа.

get_school_summary()

Тест с вопросами

get_test

Тест целиком: порог зачёта, число попыток и вопросы по порядку. У каждого вопроса тип (`one`, `many`, `text`, `number`, `open`), варианты с отметкой верного либо верный текст. Верные ответы отдаются, потому что ключ принадлежит сотруднику школы, а не ученику.

get_test(test_id: integer)

Боты школы

list_bots

Боты школы в Telegram: номер, название, адрес и работает ли. Номер бота нужен, чтобы читать его воронки и собирать новые.

list_bots()

Потоки школы

list_cohorts

Потоки: курс, даты старта и окончания, сколько записано. Поток — группа учеников с общим расписанием; прогресс по нему — `cohort_progress`. Ученики вне потоков (запись без потока) сюда не попадают — их ищет `stuck_students` без `cohort_id`.

list_cohorts()

Курсы школы

list_courses

Все курсы школы, включая черновики: название, опубликован ли, сколько модулей и уроков. Звать первым, чтобы узнать номера курсов для остальных запросов. Черновик отличается от опубликованного полем `is_published`; ученики видят только опубликованные.

list_courses()

Метки сделок

list_deal_tags

Справочник меток сделок школы: имя, цвет, группа «одна из» (у сделки одна метка группы, новая снимает прежнюю), признак источника (откуда пришёл человек), прежние имена и на скольких сделках метка стоит. Нужен, чтобы поставить метку существующим именем, а не завести дубль.

list_deal_tags()

Сделки школы

list_deals

Сделки школы, новые сверху: этап, курс, сумма, метки, откуда пришёл человек. Например, «какие сделки ждут оплаты»: отбор по этапу, «кто молчит»: по метке (`tag`, имя метки или её прежнее имя). Люди без имён, если у ключа нет области «имена» или школа не разрешила ИИ персональные данные. Не больше 200 за раз.

list_deals(tag?: any, limit?: integer, stage_id?: any, open_only?: boolean, updated_since?: any)

Воронки бота

list_funnels

Воронки бота: состояние (draft — черновик, active — работает, paused — остановлена), есть ли неопубликованные правки и чьи.

list_funnels(bot_id: integer)

Правила продаж

list_sales_rules

Шаги правил продаж: повод (event tag или stage, с номером метки или этапа), через сколько минут, что сделать (action: bot запустить воронку бота, tag_add, tag_remove, stage, task, goal), включён ли и почему может не сработать (problem).

list_sales_rules()

Этапы воронки продаж

list_sales_stages

Этапы воронки продаж школы по порядку: номер, название и смысл (open — в работе, won — успех, lost — отказ). Нужны, чтобы перевести сделку или отобрать сделки на одном этапе.

list_sales_stages()

Короткие ссылки школы

list_short_links

Короткие ссылки школы, новые сверху: короткий адрес, куда ведёт (адрес или бот с кодом воронки), площадка, ролик или кампания, метки и цифры за последние 30 дней в stats_30d: clicks (переходы), people (разные люди), to_bot (пришли в бота), leads (заявки), deals (сделки), payments (оплаты), revenue (рубли, строкой). Отбор: q ищет в названии, адресе, кнопке, имени бота и пути; platform: youtube, vk, rutube, telegram, direct, email, site, other; set_id: ссылки одного ролика или кампании; archived=true: архив. Например, «какая ссылка под роликами YouTube принесла больше денег»: platform=youtube, затем сравнить stats_30d.revenue. Не больше 200 за раз, дальше offset; total показывает, сколько всего.

list_short_links(q?: string, limit?: integer, offset?: integer, set_id?: any, archived?: boolean, platform?: any)

Перевести сделку на этап

move_deal

Перевести сделку на другой этап той же воронки. Для отказа можно указать причину. Перевод пишется в ленту сделки с пометкой, что его сделал ключ API сотрудника.

move_deal(reason?: string, deal_id: integer, stage_id: integer)

Опубликовать курс

publish_course

Открывает курс ученикам или возвращает в черновики. Публикация идёт через лимит тарифа — ту же проверку, что кнопка в кабинете: считаются только опубликованные курсы, черновики нет. Если лимит исчерпан — 409 с текстом, что делать. Снять с публикации можно всегда.

publish_course(course_id: integer, published?: boolean)

Где спотыкаются

question_stats

По каждому вопросу теста: сколько ответов и какая доля верных по завершённым попыткам. Считаются ВСЕ попытки, а не последняя: вопрос, на котором спотыкаются с первого раза, виден только так. Ниже 50 % верных — вопрос стоит перечитать: он либо трудный, либо сформулирован неясно.

question_stats(test_id: integer)

Снять метку со сделки

remove_deal_tag

Снять со сделки метку по имени (или прежнему имени). Метка остаётся в справочнике и на других сделках. Если её на сделке не было, ответ `changed: false`.

remove_deal_tag(name: string, deal_id: integer)

Очередь проверки

review_queue

Работы, которые ждут куратора: кто сдал, по какому заданию, когда и сколько часов ждёт. Отсортировано от самых старых. Принять или вернуть работу через API нельзя — только посмотреть очередь.

review_queue()

Кто встал

stuck_students

Ученики, которые не дошли до конца и ничего не делали дольше `days` дней (ни входа, ни пройденного урока). Это адрес для куратора, а не оценка ученика. `cohort_id` сужает до одного потока; без него — вся школа, включая записи без потока. Черновики курсов не считаются.

stuck_students(days?: integer, cohort_id?: any)

Подсказать понятный путь ссылки

suggest_link_path

До трёх свободных понятных путей для новой ссылки, лучшие первыми: латиница, дефисы, до 40 знаков (go.школа.ru/osi-minikurs вместо go.школа.ru/k7Pq2a). Строятся из того, что передали: адрес, куда вести (url), название ссылки (title), подпись кнопки под роликом (button), название ролика (video_title) или ролик и кампания школы (set_id), кампания (campaign), заголовок страницы (page_title), код воронки бота (code), площадка (platform). Ничего не создаёт. Выбранный путь передайте в create_short_link (path); без path он выберет первый сам. Например: video_title «Модель OSI», button «Мини-курс» → model-osi-minikurs, minikurs, model-osi.

suggest_link_path(url?: string, code?: string, title?: string, button?: string, set_id?: any, campaign?: string, platform?: string, page_title?: string, video_title?: string)

Поправить метку сделок

update_deal_tag

Переименовать метку (прежнее имя запомнится, бот и правила по нему её найдут), сменить цвет, группу (пустая строка убирает из группы) или признак источника. Удалить и склеить метки можно только в кабинете.

update_deal_tag(name?: any, color?: any, group?: any, tag_id: integer, is_source?: any)

Поправить черновик воронки

update_funnel_draft

Заменить черновик воронки целиком, в том числе у работающей: люди идут по опубликованной версии, пока человек не опубликует правки в кабинете (там он увидит их списком). draft_version из get_funnel: если черновик успели поменять, ответ 409, прочитайте воронку заново. В ответе задетые блоки и проверка.

update_funnel_draft(name?: any, graph: object, funnel_id: integer, draft_version: integer)

Изменить урок

update_lesson

Меняет название и/или документ урока. Истории правок нет и замена необратима, поэтому при замене документа ОБЯЗАТЕЛЬНО передать `updated_at` из `get_lesson`: если урок с тех пор менялся — отказ 409, а не затирание. Сначала `get_lesson`, потом правка.

update_lesson(title?: any, document?: any, lesson_id: integer, updated_at?: any)

Поправить выключенный шаг правила

update_sales_rule

Поправить шаг правила, пока он выключен: только присланные поля. Включённый шаг работает на людях, его меняет только владелец в кабинете: ответ 409.

update_sales_rule(goal?: any, event?: any, action?: any, tag_id?: any, rule_id: integer, stage_id?: any, funnel_id?: any, task_days?: any, task_text?: any, lost_reason?: any, delay_minutes?: any, target_tag_id?: any, skip_if_replied?: any, target_stage_id?: any)

Поправить этап продаж

update_sales_stage

Переименовать этап, сменить цвет или переставить: after_stage_id это этап, после которого он встанет. Смысл этапа (в работе, успех, отказ) меняется только в кабинете.

update_sales_stage(name?: any, color?: any, stage_id: integer, after_stage_id?: any)

Поправить короткую ссылку

update_short_link

Поменять, куда ведёт ссылка (url), её название (title) или убрать в архив (archived=true, вернуть: false). Короткий адрес не меняется: новый url сразу получат все, кто нажмёт ссылку под роликами, в письмах и в рекламе, поэтому сначала прочитайте ссылку (list_short_links) и убедитесь, что меняете ту. Ссылку в бота url переводит на адрес. Архивная ссылка продолжает вести людей, она только уходит из списка. Например: {"url": "https://it-ontime.ru/mikrotik-2026"}. Удаления нет: ссылка с переходами хранит историю.

update_short_link(url?: any, title?: any, link_id: integer, archived?: any)

Вопросы, новые серверы, обсуждение MCP

t.me/rusmcp · t.me/RusMcp_bot