Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted just now
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:02d9f63601c8786d346f57529a41cc7be8a4afadd1b10d898c18327684f12bee | sha256sum