AnySkills

ru.anyskillsPublished by anyskills.ruOfficial publisherv1.0.0Updated Oct 24, 2026

AnySkills online school: build courses, lessons and tests, publish, track student progress.

Overview

AI-generated overview

AnySkills connects an assistant to an online school platform to build courses, lessons and tests, publish them, and track student progress and sales.

What you can do
Read school overview, courses, modules, lessons and tests, including drafts and correct answers, and create or update courses, modules, lessons and tests, with version checks on edits and publishing controlled by plan limits. Track cohorts and students: cohort progress, students who have stalled, and the review queue of submitted work. Analyze test questions by share of correct answers across all attempts. Manage the sales pipeline: stages, deals, notes, tasks, tags and leads, with idempotency protection on lead creation. Build Telegram bot funnels as drafts, read the funnel format, check a funnel before publication, and manage sales rules, which are created disabled.
When to use it
Use it when a school employee wants an assistant to draft or restructure course content, check how a cohort is progressing, find students who have stopped, or work the sales pipeline and bot funnels without opening the admin cabinet.
Requirements
Remote streamable HTTP endpoint; no local package. Requires a bearer API key issued in the school cabinet under Settings, API and AI, sent in the Authorization header. The key's scopes and the school's personal-data setting determine whether names are visible.
Before you install
The key acts as a school employee: it can create and change courses, lessons, tests, deals, tags, tasks and funnel drafts, and publishing counts against the plan limit. Test tools return correct answers. Deal and lead tools handle personal data; names appear only if the key has the names scope and the school allows it. Funnel drafts and sales rules do not reach people until a person publishes or enables them in the cabinet.

Installation

In SourceWeft

  1. Open AnySkills in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/ru.anyskills%2Fanyskills/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "anyskills": {
      "type": "http",
      "url": "https://mcp.anyskills.ru/",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Tools

45

get_school_summary

Сводка школы

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

Takes no parameters.

list_courses

Курсы школы

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

Takes no parameters.

create_course

Создать курс

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

Parameterstitlerequiredaccess_modedescription

get_course

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

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

Parameterscourse_idrequired

get_lesson

Урок целиком

Документ урока в формате TipTap/ProseMirror (`document_format: "v2"`): `{"type": "doc", "content": [узлы]}`. Узлы: `paragraph`, `heading` (`attrs.level` 2–4), `bulletList`/`orderedList`/`taskList` из `listItem`/`taskItem`, `blockquote`, `codeBlock` (`attrs.language`), `table`, `image` (`attrs.attachmentId`), `video` (`attrs.provider`, `attrs.videoId`), `file`, `test` (`attrs.testId`), `assignment`, `survey`, `callout` (`attrs.style`), `details` (спойлер), `columns`, `section`, `horizontalRule`. Текст — узлы `text` с `marks` (`bold`, `italic`, `link` …). Ответ годится как образец для `create_lesson`. Урок, ещё не открытый в редакторе, отдаётся тоже в этом формате.

Parameterslesson_idrequired

update_lesson

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

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

Parameterstitledocumentlesson_idrequiredupdated_at

get_test

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

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

Parameterstest_idrequired

create_module

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

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

Parameterstitlerequiredcourse_idrequired

create_lesson

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

Урок встаёт в конец модуля. `document` — в формате TipTap (`{"type": "doc", "content": [{"type": "heading", "attrs": {"level": 2}, "content": [{"type": "text", "text": "..."}]}, {"type": "paragraph", "content": [...]}]}`); узлы перечислены у `get_lesson`, образец отдаёт он же. Старый формат Editor.js (`{"blocks": [...]}`) тоже принимается и переводится. Видео — провайдер и идентификатор, не iframe. Неизвестное выбрасывается.

Parameterskindtitlerequireddocumentmodule_idrequiredis_requiredduration_minutes

create_test

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

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

Parameterstitlerequiredlesson_idmodule_idquestionsrequiredpass_scoredescriptionmax_attempts

publish_course

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

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

Parameterscourse_idrequiredpublished

list_cohorts

Потоки школы

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

Takes no parameters.

cohort_progress

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

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

Parameterscohort_idrequired

stuck_students

Кто встал

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

Parametersdayscohort_id

review_queue

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

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

Takes no parameters.

question_stats

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

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

Parameterstest_idrequired

list_sales_stages

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

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

Takes no parameters.

create_sales_stage

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

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

Parametersnamerequiredcolorafter_stage_id

list_deals

Сделки школы

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

Parameterstaglimitstage_idopen_onlyupdated_since

get_deal

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

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

Parametersdeal_idrequired

create_lead

Новая заявка

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

Parametersnameemailphonecommenttelegramutm_termcourse_idutm_mediumutm_sourceutm_contentutm_campaign

move_deal

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

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

Parametersreasondeal_idrequiredstage_idrequired

add_deal_note

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

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

Parameterstextrequireddeal_idrequired

list_deal_tags

Метки сделок

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

Takes no parameters.

create_deal_tag

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

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

Parametersnamerequiredcolorgroupis_source

add_deal_tag

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

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

Parametersnamerequireddeal_idrequired

remove_deal_tag

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

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

Parametersnamerequireddeal_idrequired

add_deal_task

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

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

Parameterstextrequireddue_atrequireddeal_idrequired

update_sales_stage

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

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

Parametersnamecolorstage_idrequiredafter_stage_id

update_deal_tag

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

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

Parametersnamecolorgrouptag_idrequiredis_source

list_sales_rules

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

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

Takes no parameters.

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: не делать, если человек ответил.

Parametersgoaleventactiontag_idstage_idfunnel_idtask_daystask_textlost_reasondelay_minutestarget_tag_idskip_if_replied+1 more

update_sales_rule

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

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

Parametersgoaleventactiontag_idrule_idrequiredstage_idfunnel_idtask_daystask_textlost_reasondelay_minutestarget_tag_id+2 more

list_bots

Боты школы

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

Takes no parameters.

list_funnels

Воронки бота

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

Parametersbot_idrequired

create_funnel_draft

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

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

Parametersnamerequiredgraphrequiredbot_idrequired

get_funnel_format

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

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

Takes no parameters.

get_funnel

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

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

Parametersfunnel_idrequired

check_funnel

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

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

Parametersfunnel_idrequired

update_funnel_draft

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

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

Parametersnamegraphrequiredfunnel_idrequireddraft_versionrequired

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.