Server definition
- Hash
- sha256:02d9f63601c8786d346f57529a41cc7be8a4afadd1b10d898c18327684f12bee
- What it is
- What a remote MCP server returned when asked what it offers: 45 tools
The blob, as servednamed by its sha256
{
"instructions": "Это школа на платформе AnySkills, подключённая через ключ сотрудника.\n\nПри первом обращении в разговоре вызови get_school_summary и коротко\nпредставься человеку: как называется школа, сколько курсов и учеников,\nи что ты умеешь — не перечисляй инструменты, назови три дела, ради которых\nэто подключают: собрать курс из файла или конспекта, показать, кто из\nучеников встал, составить письмо отстающим. Дай один пример вопроса.\n\nПоле students_visibility в сводке говорит, что тебе видно про учеников:\nnone — ничего, anonymous — прогресс без имён («Ученик 14»), names —\nс именами и почтами. Если человек просит имена, а видно anonymous, скажи,\nчто это включается в кабинете: Настройки → API и ИИ, и нужны оба согласия\n(область у ключа и разрешение школы).\n\nПеред изменением урока всегда сначала get_lesson: update_lesson требует\nupdated_at из него, иначе отказ. Документ урока — в формате Editor.js,\nобразец — ответ get_lesson. Неизвестные блоки платформа выбросит.\n\nПубликация курса может упереться в лимит тарифа — тогда API вернёт\nпонятный текст, передай его человеку как есть. Удалять через тебя ничего\nнельзя, писать ученикам тоже: черновик письма — да, отправка — человек.\n\nВоронки ботов ты собираешь и правишь только черновиком. Перед сборкой\nпрочитай get_funnel_format, перед правкой get_funnel: update_funnel_draft\nприсылает черновик целиком с draft_version из него. После каждой правки\nсмотри errors и warnings в ответе и исправляй ошибки. Опубликовать воронку\nможет только человек в кабинете: дай ему editor_url, там он увидит список\nправок. Правила продаж (create_sales_rule) всегда собираются выключенными,\nвключает их владелец. Этапы и метки можно заводить и править, удалять нельзя.\n",
"tools": [
{
"description": "Добавить заметку в ленту сделки: итог звонка, договорённость,\nвозражение. Заметку увидят менеджеры в карточке сделки.",
"inputSchema": {
"properties": {
"deal_id": {
"title": "Deal Id",
"type": "integer"
},
"text": {
"title": "Text",
"type": "string"
}
},
"required": [
"deal_id",
"text"
],
"type": "object"
},
"name": "add_deal_note",
"outputSchema": null
},
{
"description": "Поставить сделке метку по имени. Имя сравнивается без регистра и\nс прежними именами меток; такой метки нет, она заводится. Если метка\nв группе «одна из», прежняя метка группы снимается сама. Повторная\nметка ничего не меняет. Событие ложится в ленту сделки.",
"inputSchema": {
"properties": {
"deal_id": {
"title": "Deal Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"deal_id",
"name"
],
"type": "object"
},
"name": "add_deal_tag",
"outputSchema": null
},
{
"description": "Поставить задачу по сделке со сроком: позвонить, отправить договор.\nОтветственный — хозяин ключа. Срок обязателен: задача без срока не\nпопадёт в «Сегодня» и будет забыта.",
"inputSchema": {
"properties": {
"deal_id": {
"title": "Deal Id",
"type": "integer"
},
"due_at": {
"format": "date-time",
"title": "Due At",
"type": "string"
},
"text": {
"title": "Text",
"type": "string"
}
},
"required": [
"deal_id",
"text",
"due_at"
],
"type": "object"
},
"name": "add_deal_task",
"outputSchema": null
},
{
"description": "Та же проверка, что перед публикацией, но ничего не публикует.\nerrors: не опубликуется, пока не исправить; warnings: можно, но стоит\nпосмотреть. У каждой записи номер блока (node) и текст.",
"inputSchema": {
"properties": {
"funnel_id": {
"title": "Funnel Id",
"type": "integer"
}
},
"required": [
"funnel_id"
],
"type": "object"
},
"name": "check_funnel",
"outputSchema": null
},
{
"description": "По каждому ученику потока: процент курса (считается по обязательным\nопубликованным урокам, как в кабинете), когда последний раз заходил\nили проходил урок, сколько дней с тех пор. Плюс доходимость потока —\nдоля тех, кто дошёл до 100 %. Имена — только по ступени 3\n(см. описание сервера), иначе «Ученик 14».",
"inputSchema": {
"properties": {
"cohort_id": {
"title": "Cohort Id",
"type": "integer"
}
},
"required": [
"cohort_id"
],
"type": "object"
},
"name": "cohort_progress",
"outputSchema": null
},
{
"description": "Заводит курс-черновик: ученикам он не виден, пока не опубликован\nчерез `publish_course`. Черновиков можно держать сколько угодно\nна любом тарифе. Режим доступа: `open` — всё открыто сразу,\n`cohort` — по расписанию потока, `sequence` — по прогрессу ученика.\nАвтор курса — хозяин ключа. Повтор с тем же Idempotency-Key\nвернёт тот же курс, а не создаст второй.",
"inputSchema": {
"properties": {
"access_mode": {
"default": "open",
"enum": [
"open",
"cohort",
"sequence"
],
"title": "Access Mode",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"title": {
"maxLength": 200,
"minLength": 1,
"title": "Title",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "create_course",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Новая метка в справочнике сделок. group: имя группы «одна из»\n(у сделки одна метка группы, например «Урок»), новая группа заведётся.\nis_source: метка говорит, откуда пришёл человек. Имя, занятое другой\nметкой или её прежним именем, отказ: возьмите ту метку.",
"inputSchema": {
"properties": {
"color": {
"default": "secondary",
"title": "Color",
"type": "string"
},
"group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Group"
},
"is_source": {
"default": false,
"title": "Is Source",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_deal_tag",
"outputSchema": null
},
{
"description": "Новая воронка бота черновиком. Людям ничего не уходит: опубликовать\nеё может только человек в кабинете, ссылка в ответе (editor_url).\nФормат воронки: get_funnel_format. В ответе проверка (errors,\nwarnings): исправьте ошибки правкой черновика.",
"inputSchema": {
"properties": {
"bot_id": {
"title": "Bot Id",
"type": "integer"
},
"graph": {
"additionalProperties": true,
"title": "Graph",
"type": "object"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"bot_id",
"name",
"graph"
],
"type": "object"
},
"name": "create_funnel_draft",
"outputSchema": null
},
{
"description": "Завести заявку: человек и сделка одним запросом. Нужна почта,\nтелефон или Telegram. Человек, который уже есть, не заводится второй\nраз; повторная заявка про то же ложится заметкой в открытую сделку.\nЗаголовок `Idempotency-Key` защищает от двойной отправки.",
"inputSchema": {
"properties": {
"comment": {
"default": "",
"title": "Comment",
"type": "string"
},
"course_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Course Id"
},
"email": {
"default": "",
"title": "Email",
"type": "string"
},
"name": {
"default": "",
"title": "Name",
"type": "string"
},
"phone": {
"default": "",
"title": "Phone",
"type": "string"
},
"telegram": {
"default": "",
"title": "Telegram",
"type": "string"
},
"utm_campaign": {
"default": "",
"title": "Utm Campaign",
"type": "string"
},
"utm_content": {
"default": "",
"title": "Utm Content",
"type": "string"
},
"utm_medium": {
"default": "",
"title": "Utm Medium",
"type": "string"
},
"utm_source": {
"default": "",
"title": "Utm Source",
"type": "string"
},
"utm_term": {
"default": "",
"title": "Utm Term",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "create_lead",
"outputSchema": null
},
{
"description": "Урок встаёт в конец модуля. `document` — в формате Editor.js:\n`{\"blocks\": [{\"type\": \"header\", \"data\": {\"text\": \"...\", \"level\": 2}},\n{\"type\": \"paragraph\", \"data\": {\"text\": \"...\"}}, ...]}`. Разрешённые\nблоки: header, paragraph, list, quote, callout, code, table, image,\nvideo (провайдер и идентификатор, не iframe), file, test\n(`{\"test_id\": N}`). Неизвестные блоки выбрасываются, разметка\nчистится. Образец готового документа отдаёт `get_lesson`.",
"inputSchema": {
"properties": {
"document": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Document"
},
"duration_minutes": {
"anyOf": [
{
"maximum": 600,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Duration Minutes"
},
"is_required": {
"default": true,
"title": "Is Required",
"type": "boolean"
},
"kind": {
"default": "lecture",
"enum": [
"lecture",
"practice",
"webinar",
"test",
"survey"
],
"title": "Kind",
"type": "string"
},
"module_id": {
"title": "Module Id",
"type": "integer"
},
"title": {
"maxLength": 200,
"minLength": 1,
"title": "Title",
"type": "string"
}
},
"required": [
"module_id",
"title"
],
"type": "object"
},
"name": "create_lesson",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Модуль встаёт в конец курса. Уроки добавляются в модуль отдельно,\n`create_lesson`. Порядок модулей потом можно поменять в кабинете.",
"inputSchema": {
"properties": {
"course_id": {
"title": "Course Id",
"type": "integer"
},
"title": {
"maxLength": 200,
"minLength": 1,
"title": "Title",
"type": "string"
}
},
"required": [
"course_id",
"title"
],
"type": "object"
},
"name": "create_module",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Шаг правила продаж, ВСЕГДА выключенный: включает его владелец\nв кабинете, до этого он ничего не делает. Повод: event tag (tag_id,\nметка поставлена на сделку) или stage (stage_id, сделка перешла на\nэтап). delay_minutes: через сколько. action: bot (funnel_id, запустить\nворонку бота), tag_add или tag_remove (target_tag_id), stage\n(target_stage_id, «Оплачено» нельзя), task (task_text, task_days),\ngoal (цель Метрики). skip_if_replied: не делать, если человек ответил.",
"inputSchema": {
"properties": {
"action": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Action"
},
"delay_minutes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Delay Minutes"
},
"event": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Event"
},
"funnel_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Funnel Id"
},
"goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Goal"
},
"lost_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Lost Reason"
},
"skip_if_replied": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Skip If Replied"
},
"stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stage Id"
},
"tag_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Tag Id"
},
"target_stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Target Stage Id"
},
"target_tag_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Target Tag Id"
},
"task_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Task Days"
},
"task_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Task Text"
}
},
"required": [],
"type": "object"
},
"name": "create_sales_rule",
"outputSchema": null
},
{
"description": "Новый этап «в работе» в воронке продаж: сразу после after_stage_id,\nа без него перед «Оплачено» и «Отказом». Цвет: secondary, azure,\nblue, purple, yellow, orange, green, red. Людям это ничего не шлёт.\nУдалить этап может только человек в кабинете.",
"inputSchema": {
"properties": {
"after_stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "After Stage Id"
},
"color": {
"default": "secondary",
"title": "Color",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_sales_stage",
"outputSchema": null
},
{
"description": "Короткая ссылка на домене школы: на адрес (url) или в бота\n(bot_username и, если нужно, start_code: код воронки «Старта»).\nplatform (youtube, vk, rutube, telegram, direct, email, site, other)\nставит метки сама: utm_source, utm_medium, utm_campaign; свои метки\n(utm: source, medium, campaign, content, term) главнее. path: свой\nпуть латиницей; без него система выберет понятный, варианты покажет\nsuggest_link_path. button: подпись кнопки под роликом, set_id: ролик\nили кампания школы.\n\nТа же ссылка (тот же адрес или бот с кодом, та же площадка, кнопка\nи ролик) второй раз не заводится: вернётся прежняя, created=false.\nНапример: url https://it-ontime.ru/mikrotik, platform youtube →\nshort_url https://go.it-ontime.ru/mikrotik, метки youtube, video,\nmikrotik. Ошибка (путь занят, адрес не тот, нет домена) приходит\nответом 400 с текстом для человека.",
"inputSchema": {
"properties": {
"bot_username": {
"default": "",
"title": "Bot Username",
"type": "string"
},
"button": {
"default": "",
"title": "Button",
"type": "string"
},
"path": {
"default": "",
"title": "Path",
"type": "string"
},
"platform": {
"default": "",
"title": "Platform",
"type": "string"
},
"set_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Set Id"
},
"start_code": {
"default": "",
"title": "Start Code",
"type": "string"
},
"title": {
"default": "",
"title": "Title",
"type": "string"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
},
"utm": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"title": "Utm"
}
},
"required": [],
"type": "object"
},
"name": "create_short_link",
"outputSchema": null
},
{
"description": "Тест целиком за один вызов: параметры и вопросы по порядку.\nТипы вопросов: `one` (один из списка, ровно один верный), `many`\n(несколько верных), `text` и `number` (верный ответ в `correct_text`),\n`open` (ответ своими словами; `reference_answer` и `criteria` помогают\nпроверке). Куда положить: `lesson_id` — блоком в конец урока,\n`module_id` — итоговым тестом модуля; можно и то и другое, можно ничего.",
"inputSchema": {
"properties": {
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"lesson_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lesson Id"
},
"max_attempts": {
"default": 0,
"maximum": 100,
"minimum": 0,
"title": "Max Attempts",
"type": "integer"
},
"module_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Module Id"
},
"pass_score": {
"default": 70,
"maximum": 100,
"minimum": 0,
"title": "Pass Score",
"type": "integer"
},
"questions": {
"items": {
"properties": {
"correct_text": {
"default": "",
"title": "Correct Text",
"type": "string"
},
"criteria": {
"default": "",
"title": "Criteria",
"type": "string"
},
"kind": {
"default": "one",
"enum": [
"one",
"many",
"text",
"number",
"open"
],
"title": "Kind",
"type": "string"
},
"options": {
"default": [],
"items": {
"properties": {
"is_correct": {
"default": false,
"title": "Is Correct",
"type": "boolean"
},
"text": {
"maxLength": 300,
"minLength": 1,
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "OptionIn",
"type": "object"
},
"title": "Options",
"type": "array"
},
"reference_answer": {
"default": "",
"title": "Reference Answer",
"type": "string"
},
"text": {
"minLength": 1,
"title": "Text",
"type": "string"
},
"weight": {
"default": 1,
"maximum": 100,
"minimum": 1,
"title": "Weight",
"type": "integer"
}
},
"required": [
"text"
],
"title": "QuestionIn",
"type": "object"
},
"minItems": 1,
"title": "Questions",
"type": "array"
},
"title": {
"maxLength": 200,
"minLength": 1,
"title": "Title",
"type": "string"
}
},
"required": [
"title",
"questions"
],
"type": "object"
},
"name": "create_test",
"outputSchema": null
},
{
"description": "Один курс целиком: модули по порядку, в каждом — уроки по порядку\nс типом (`lecture`, `practice`, `webinar`, `test`, `survey`),\nдлительностью и признаком обязательности. Итоговый тест модуля,\nесли есть, назван по номеру — его вопросы отдаёт `get_test`.\nТекст уроков сюда не входит: за ним `get_lesson`.",
"inputSchema": {
"properties": {
"course_id": {
"title": "Course Id",
"type": "integer"
}
},
"required": [
"course_id"
],
"type": "object"
},
"name": "get_course",
"outputSchema": null
},
{
"description": "Одна сделка: поля, человек и последние 30 событий ленты (заметки\nменеджеров, переводы, открытие доступа, оплаты). Помогает ответить,\nчто с человеком происходит и о чём с ним договорились.",
"inputSchema": {
"properties": {
"deal_id": {
"title": "Deal Id",
"type": "integer"
}
},
"required": [
"deal_id"
],
"type": "object"
},
"name": "get_deal",
"outputSchema": null
},
{
"description": "Черновик и опубликованная версия воронки, номер версии черновика\n(нужен для правки) и сколько людей сейчас стоит на каждом блоке\nопубликованной версии. Люди считаются числом, без имён.",
"inputSchema": {
"properties": {
"funnel_id": {
"title": "Funnel Id",
"type": "integer"
}
},
"required": [
"funnel_id"
],
"type": "object"
},
"name": "get_funnel",
"outputSchema": null
},
{
"description": "Формат воронки: блоки, их настройки и стрелки. Прочитать до того,\nкак собирать или править воронку: черновик присылается целиком\nв этом формате.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "get_funnel_format",
"outputSchema": null
},
{
"description": "Документ урока в формате Editor.js: список блоков `header`,\n`paragraph`, `list`, `quote`, `callout`, `code`, `table`, `image`,\n`video`, `file`. Это тот же формат, в котором урок принимается\nна запись, поэтому ответ годится как образец для `create_lesson`.\nУ старых уроков документа может не быть — тогда `document` пуст,\nа содержимое лежит строками в `blocks`.",
"inputSchema": {
"properties": {
"lesson_id": {
"title": "Lesson Id",
"type": "integer"
}
},
"required": [
"lesson_id"
],
"type": "object"
},
"name": "get_lesson",
"outputSchema": null
},
{
"description": "Что принесла одна ссылка за период. funnel: clicks (переходы),\npeople (разные люди), to_bot (пришли в бота), leads (заявки с сайта),\ndeals (сделки), payments (оплаты), revenue (рубли, строкой), returned\n(вернулись в бота, были в нём раньше), filtered (отсеяны роботы\nи повторы). daily: переходы по дням. paths: люди по каждому пути за\n7 и 30 дней и всего, видно, идут ли ещё по старому пути. referrers:\nоткуда переходят, devices: с чего.\n\nПериод: since и until, даты ГГГГ-ММ-ДД включительно, по Москве; без\nних последние days дней (по умолчанию 30), days=0 значит всё время.\nНапример, «сколько оплат дал ролик за сентябрь»: since=2026-09-01,\nuntil=2026-09-30.",
"inputSchema": {
"properties": {
"days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Days"
},
"link_id": {
"title": "Link Id",
"type": "integer"
},
"since": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"title": "Since"
},
"until": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"title": "Until"
}
},
"required": [
"link_id"
],
"type": "object"
},
"name": "get_link_stats",
"outputSchema": null
},
{
"description": "Название школы, тариф, сколько курсов и из них опубликовано,\nсколько учеников и потоков, и что можно этому ключу.\n\nИИ вызывает это первым при подключении и представляется человеку\nпо-человечески: не списком инструментов, а тремя делами, ради\nкоторых школа его подключила, и одним примером вопроса.\nЦифры настоящие, из этого же ключа.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "get_school_summary",
"outputSchema": null
},
{
"description": "Тест целиком: порог зачёта, число попыток и вопросы по порядку.\nУ каждого вопроса тип (`one`, `many`, `text`, `number`, `open`),\nварианты с отметкой верного либо верный текст. Верные ответы\nотдаются, потому что ключ принадлежит сотруднику школы, а не ученику.",
"inputSchema": {
"properties": {
"test_id": {
"title": "Test Id",
"type": "integer"
}
},
"required": [
"test_id"
],
"type": "object"
},
"name": "get_test",
"outputSchema": null
},
{
"description": "Боты школы в Telegram: номер, название, адрес и работает ли.\nНомер бота нужен, чтобы читать его воронки и собирать новые.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_bots",
"outputSchema": null
},
{
"description": "Потоки: курс, даты старта и окончания, сколько записано. Поток —\nгруппа учеников с общим расписанием; прогресс по нему —\n`cohort_progress`. Ученики вне потоков (запись без потока) сюда\nне попадают — их ищет `stuck_students` без `cohort_id`.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_cohorts",
"outputSchema": null
},
{
"description": "Все курсы школы, включая черновики: название, опубликован ли,\nсколько модулей и уроков. Звать первым, чтобы узнать номера курсов\nдля остальных запросов. Черновик отличается от опубликованного\nполем `is_published`; ученики видят только опубликованные.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_courses",
"outputSchema": null
},
{
"description": "Справочник меток сделок школы: имя, цвет, группа «одна из» (у сделки\nодна метка группы, новая снимает прежнюю), признак источника (откуда\nпришёл человек), прежние имена и на скольких сделках метка стоит.\nНужен, чтобы поставить метку существующим именем, а не завести дубль.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_deal_tags",
"outputSchema": null
},
{
"description": "Сделки школы, новые сверху: этап, курс, сумма, метки, откуда пришёл\nчеловек. Например, «какие сделки ждут оплаты»: отбор по этапу, «кто\nмолчит»: по метке (`tag`, имя метки или её прежнее имя). Люди без\nимён, если у ключа нет области «имена» или школа не разрешила ИИ\nперсональные данные. Не больше 200 за раз.",
"inputSchema": {
"properties": {
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
},
"open_only": {
"default": true,
"title": "Open Only",
"type": "boolean"
},
"stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stage Id"
},
"tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tag"
},
"updated_since": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated Since"
}
},
"required": [],
"type": "object"
},
"name": "list_deals",
"outputSchema": null
},
{
"description": "Воронки бота: состояние (draft — черновик, active — работает,\npaused — остановлена), есть ли неопубликованные правки и чьи.",
"inputSchema": {
"properties": {
"bot_id": {
"title": "Bot Id",
"type": "integer"
}
},
"required": [
"bot_id"
],
"type": "object"
},
"name": "list_funnels",
"outputSchema": null
},
{
"description": "Шаги правил продаж: повод (event tag или stage, с номером метки или\nэтапа), через сколько минут, что сделать (action: bot запустить\nворонку бота, tag_add, tag_remove, stage, task, goal), включён ли и\nпочему может не сработать (problem).",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_sales_rules",
"outputSchema": null
},
{
"description": "Этапы воронки продаж школы по порядку: номер, название и смысл\n(open — в работе, won — успех, lost — отказ). Нужны, чтобы перевести\nсделку или отобрать сделки на одном этапе.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_sales_stages",
"outputSchema": null
},
{
"description": "Короткие ссылки школы, новые сверху: короткий адрес, куда ведёт\n(адрес или бот с кодом воронки), площадка, ролик или кампания, метки\nи цифры за последние 30 дней в stats_30d: clicks (переходы), people\n(разные люди), to_bot (пришли в бота), leads (заявки), deals (сделки),\npayments (оплаты), revenue (рубли, строкой).\n\nОтбор: q ищет в названии, адресе, кнопке, имени бота и пути;\nplatform: youtube, vk, rutube, telegram, direct, email, site, other;\nset_id: ссылки одного ролика или кампании; archived=true: архив.\nНапример, «какая ссылка под роликами YouTube принесла больше денег»:\nplatform=youtube, затем сравнить stats_30d.revenue. Не больше 200\nза раз, дальше offset; total показывает, сколько всего.",
"inputSchema": {
"properties": {
"archived": {
"default": false,
"title": "Archived",
"type": "boolean"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"title": "Offset",
"type": "integer"
},
"platform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Platform"
},
"q": {
"default": "",
"title": "Q",
"type": "string"
},
"set_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Set Id"
}
},
"required": [],
"type": "object"
},
"name": "list_short_links",
"outputSchema": null
},
{
"description": "Перевести сделку на другой этап той же воронки. Для отказа можно\nуказать причину. Перевод пишется в ленту сделки с пометкой, что его\nсделал ключ API сотрудника.",
"inputSchema": {
"properties": {
"deal_id": {
"title": "Deal Id",
"type": "integer"
},
"reason": {
"default": "",
"title": "Reason",
"type": "string"
},
"stage_id": {
"title": "Stage Id",
"type": "integer"
}
},
"required": [
"deal_id",
"stage_id"
],
"type": "object"
},
"name": "move_deal",
"outputSchema": null
},
{
"description": "Открывает курс ученикам или возвращает в черновики. Публикация\nидёт через лимит тарифа — ту же проверку, что кнопка в кабинете:\nсчитаются только опубликованные курсы, черновики нет. Если лимит\nисчерпан — 409 с текстом, что делать. Снять с публикации можно всегда.",
"inputSchema": {
"properties": {
"course_id": {
"title": "Course Id",
"type": "integer"
},
"published": {
"default": true,
"title": "Published",
"type": "boolean"
}
},
"required": [
"course_id"
],
"type": "object"
},
"name": "publish_course",
"outputSchema": null
},
{
"description": "По каждому вопросу теста: сколько ответов и какая доля верных\nпо завершённым попыткам. Считаются ВСЕ попытки, а не последняя:\nвопрос, на котором спотыкаются с первого раза, виден только так.\nНиже 50 % верных — вопрос стоит перечитать: он либо трудный, либо\nсформулирован неясно.",
"inputSchema": {
"properties": {
"test_id": {
"title": "Test Id",
"type": "integer"
}
},
"required": [
"test_id"
],
"type": "object"
},
"name": "question_stats",
"outputSchema": null
},
{
"description": "Снять со сделки метку по имени (или прежнему имени). Метка остаётся\nв справочнике и на других сделках. Если её на сделке не было, ответ\n`changed: false`.",
"inputSchema": {
"properties": {
"deal_id": {
"title": "Deal Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"deal_id",
"name"
],
"type": "object"
},
"name": "remove_deal_tag",
"outputSchema": null
},
{
"description": "Работы, которые ждут куратора: кто сдал, по какому заданию, когда\nи сколько часов ждёт. Отсортировано от самых старых. Принять или\nвернуть работу через API нельзя — только посмотреть очередь.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "review_queue",
"outputSchema": null
},
{
"description": "Ученики, которые не дошли до конца и ничего не делали дольше `days`\nдней (ни входа, ни пройденного урока). Это адрес для куратора,\nа не оценка ученика. `cohort_id` сужает до одного потока; без него —\nвся школа, включая записи без потока. Черновики курсов не считаются.",
"inputSchema": {
"properties": {
"cohort_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Cohort Id"
},
"days": {
"default": 7,
"title": "Days",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "stuck_students",
"outputSchema": null
},
{
"description": "До трёх свободных понятных путей для новой ссылки, лучшие первыми:\nлатиница, дефисы, до 40 знаков (go.школа.ru/osi-minikurs вместо\ngo.школа.ru/k7Pq2a). Строятся из того, что передали: адрес, куда\nвести (url), название ссылки (title), подпись кнопки под роликом\n(button), название ролика (video_title) или ролик и кампания школы\n(set_id), кампания (campaign), заголовок страницы (page_title), код\nворонки бота (code), площадка (platform).\n\nНичего не создаёт. Выбранный путь передайте в create_short_link\n(path); без path он выберет первый сам. Например: video_title\n«Модель OSI», button «Мини-курс» → model-osi-minikurs, minikurs,\nmodel-osi.",
"inputSchema": {
"properties": {
"button": {
"default": "",
"title": "Button",
"type": "string"
},
"campaign": {
"default": "",
"title": "Campaign",
"type": "string"
},
"code": {
"default": "",
"title": "Code",
"type": "string"
},
"page_title": {
"default": "",
"title": "Page Title",
"type": "string"
},
"platform": {
"default": "",
"title": "Platform",
"type": "string"
},
"set_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Set Id"
},
"title": {
"default": "",
"title": "Title",
"type": "string"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
},
"video_title": {
"default": "",
"title": "Video Title",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "suggest_link_path",
"outputSchema": null
},
{
"description": "Переименовать метку (прежнее имя запомнится, бот и правила по нему\nеё найдут), сменить цвет, группу (пустая строка убирает из группы)\nили признак источника. Удалить и склеить метки можно только в кабинете.",
"inputSchema": {
"properties": {
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Group"
},
"is_source": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Source"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"tag_id": {
"title": "Tag Id",
"type": "integer"
}
},
"required": [
"tag_id"
],
"type": "object"
},
"name": "update_deal_tag",
"outputSchema": null
},
{
"description": "Заменить черновик воронки целиком, в том числе у работающей:\nлюди идут по опубликованной версии, пока человек не опубликует\nправки в кабинете (там он увидит их списком). draft_version из\nget_funnel: если черновик успели поменять, ответ 409, прочитайте\nворонку заново. В ответе задетые блоки и проверка.",
"inputSchema": {
"properties": {
"draft_version": {
"title": "Draft Version",
"type": "integer"
},
"funnel_id": {
"title": "Funnel Id",
"type": "integer"
},
"graph": {
"additionalProperties": true,
"title": "Graph",
"type": "object"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
}
},
"required": [
"funnel_id",
"graph",
"draft_version"
],
"type": "object"
},
"name": "update_funnel_draft",
"outputSchema": null
},
{
"description": "Меняет название и/или документ урока. Истории правок нет и замена\nнеобратима, поэтому при замене документа ОБЯЗАТЕЛЬНО передать\n`updated_at` из `get_lesson`: если урок с тех пор менялся —\nотказ 409, а не затирание. Сначала `get_lesson`, потом правка.",
"inputSchema": {
"properties": {
"document": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Document"
},
"lesson_id": {
"title": "Lesson Id",
"type": "integer"
},
"title": {
"anyOf": [
{
"maxLength": 200,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"title": "Title"
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
}
},
"required": [
"lesson_id"
],
"type": "object"
},
"name": "update_lesson",
"outputSchema": null
},
{
"description": "Поправить шаг правила, пока он выключен: только присланные поля.\nВключённый шаг работает на людях, его меняет только владелец\nв кабинете: ответ 409.",
"inputSchema": {
"properties": {
"action": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Action"
},
"delay_minutes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Delay Minutes"
},
"event": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Event"
},
"funnel_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Funnel Id"
},
"goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Goal"
},
"lost_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Lost Reason"
},
"rule_id": {
"title": "Rule Id",
"type": "integer"
},
"skip_if_replied": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Skip If Replied"
},
"stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stage Id"
},
"tag_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Tag Id"
},
"target_stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Target Stage Id"
},
"target_tag_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Target Tag Id"
},
"task_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Task Days"
},
"task_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Task Text"
}
},
"required": [
"rule_id"
],
"type": "object"
},
"name": "update_sales_rule",
"outputSchema": null
},
{
"description": "Переименовать этап, сменить цвет или переставить: after_stage_id\nэто этап, после которого он встанет. Смысл этапа (в работе, успех,\nотказ) меняется только в кабинете.",
"inputSchema": {
"properties": {
"after_stage_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "After Stage Id"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"stage_id": {
"title": "Stage Id",
"type": "integer"
}
},
"required": [
"stage_id"
],
"type": "object"
},
"name": "update_sales_stage",
"outputSchema": null
},
{
"description": "Поменять, куда ведёт ссылка (url), её название (title) или убрать\nв архив (archived=true, вернуть: false). Короткий адрес не меняется:\nновый url сразу получат все, кто нажмёт ссылку под роликами, в письмах\nи в рекламе, поэтому сначала прочитайте ссылку (list_short_links)\nи убедитесь, что меняете ту. Ссылку в бота url переводит на адрес.\nАрхивная ссылка продолжает вести людей, она только уходит из списка.\nНапример: {\"url\": \"https://it-ontime.ru/mikrotik-2026\"}. Удаления\nнет: ссылка с переходами хранит историю.",
"inputSchema": {
"properties": {
"archived": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Archived"
},
"link_id": {
"title": "Link Id",
"type": "integer"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Title"
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url"
}
},
"required": [
"link_id"
],
"type": "object"
},
"name": "update_short_link",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:02d9f63601c8786d346f57529a41cc7be8a4afadd1b10d898c18327684f12bee | sha256sum