Server definition
- Hash
- sha256:cda4f52c5bd2e17ed6af10a0831f8587fe6fe67e2f86e0151ff960d23a99f709
- What it is
- What a remote MCP server returned when asked what it offers: 27 tools
The blob, as servednamed by its sha256
{
"instructions": "Чип — ассистент пользователя в Telegram (бот @ChipAI_robot). Этот сервер — мост к его аккаунту: память проектов, уведомления в Telegram, генерация картинок. В начале сессии вызови whoami, чтобы узнать тариф и лимиты пользователя. Взялся за проект — начинай с whats_new: вернулся в знакомый, получишь только изменения (дешевле полного контекста), впервые — он сам отдаст полный контекст; открытые поручения пользователя смотри в list_tasks и закрывай сделанное через complete_task. Удаление проектов из IDE недоступно: если пользователь просит удалить проект — направь его в мини-приложение бота, вкладка «Рабочее пространство».",
"tools": [
{
"description": "Заметка в память проекта (до ~300 символов; грабли и правки — 600).\n Пиши по ходу: одно наблюдение — одна заметка. kind: decision — сделанный\n выбор (полочка «Решения»), fact — как устроено, preference — как любит\n пользователь, progress — что сделано, pitfall — грабли «симптом → причина →\n лечение» (полочка «Грабли»), correction — «раньше X, теперь Y». Решение\n пиши формулой «что решали → выбрали X вместо Y, потому что Z»:\n ✓ «Очередь задач: Redis вместо Kafka — один инстанс, 200 rps».\n ✗ «Используем Redis» — следующая сессия переспорит то же самое.",
"inputSchema": {
"properties": {
"kind": {
"default": "fact",
"type": "string"
},
"project_id": {
"type": "integer"
},
"text": {
"type": "string"
}
},
"required": [
"project_id",
"text"
],
"type": "object"
},
"name": "add_note",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Поручение следующей сессии агента: хвост из «Осталось», который не успел\n сделать. Пользователь видит его в мини-аппе, следующая сессия — в\n list_tasks.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
},
"text": {
"type": "string"
}
},
"required": [
"project_id",
"text"
],
"type": "object"
},
"name": "add_task",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Архивировать проект: уходит из списка, слот освобождается, данные целы.\n Зови, когда пользователю нужен слот под новый. Вернуть из архива и удалить\n проект может только он сам, в мини-аппе.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "archive_project",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Спросить пользователя кнопками в Telegram, когда упёрся в развилку,\n которую решает он сам («какую БД берём?»). НЕ для мелочей, решаемых\n здравым смыслом. options — 2–4 коротких варианта (по умолчанию Да/Нет).\n Молчит — вернётся id для check_confirmation.",
"inputSchema": {
"properties": {
"options": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"question": {
"type": "string"
}
},
"required": [
"question"
],
"type": "object"
},
"name": "ask_user",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Вложение для notify_me: скриншот после правки интерфейса, PDF, лог.\n В проект не сохраняется, живёт до отправки.",
"inputSchema": {
"properties": {
"filename": {
"type": "string"
},
"size_bytes": {
"type": "integer"
}
},
"required": [
"filename",
"size_bytes"
],
"type": "object"
},
"name": "attach_file",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Забрать ответ пользователя на вопрос ask_user (если тот вернул id). Зови\n не чаще раза в минуту-другую.",
"inputSchema": {
"properties": {
"ask_id": {
"type": "string"
}
},
"required": [
"ask_id"
],
"type": "object"
},
"name": "check_confirmation",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Закрыть поручение из list_tasks: result — что сделано (1–2 фразы, до 500\n символов, пользователь прочитает это в Telegram). Зови СРАЗУ по факту, не\n пачкой в конце. Не закрывай то, за что не брался.",
"inputSchema": {
"properties": {
"result": {
"type": "string"
},
"task_id": {
"type": "string"
}
},
"required": [
"task_id",
"result"
],
"type": "object"
},
"name": "complete_task",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Завести проект в Чипе. Зови по просьбе пользователя — или предложи сам,\n если работаете над задачей без проекта. Название — по сути задачи, до 60\n символов.",
"inputSchema": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_project",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Завершить двухфазную загрузку файла: зови ПОСЛЕ того, как curl из ответа\n upload_project_file отработал успешно.",
"inputSchema": {
"properties": {
"upload_id": {
"type": "string"
}
},
"required": [
"upload_id"
],
"type": "object"
},
"name": "finalize_upload",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Сгенерировать картинку 1024×1024. ПЛАТНО: списывает с баланса\n пользователя ~3 кредита — зови по его запросу, не «на пробу». С project_id\n PNG ляжет в файлы проекта, без него — временная ссылка, скачай сразу.",
"inputSchema": {
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
},
"prompt": {
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "generate_image",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Контекст проекта: инструкции, поручения, оглавление карты, память, файлы,\n диалоги. Зови ОДИН раз, когда берёшься за проект впервые; вернулся в\n знакомый — whats_new, он дешевле. depth: \"brief\" (сводки аннотациями, по\n умолчанию) или \"full\" (дословно).",
"inputSchema": {
"properties": {
"depth": {
"default": "",
"type": "string"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "get_project_context",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Оглавление карты проекта: полочки-статьи с актуальным знанием, которые\n Чип ведёт по журналу (не лента). Сама статья — read_map_section.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "get_project_map",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Файлы базы знаний проекта: имя, размер, читаемость. Зови перед\n read_project_file, если точное имя неизвестно.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "list_files",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Проекты пользователя: id, название, последняя активность, открытые\n поручения. Нужен project_id — сюда; список меняется редко, не перечитывай.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_projects",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Поручения тебе в этом проекте: их ставит пользователь и прошлая сессия\n (add_task, хвосты «Осталось»). Зови в начале работы и когда ищешь, чем\n заняться дальше. Сделанное закрывай complete_task — незакрытое всплывёт\n снова.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "list_tasks",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Сообщение пользователю в Telegram: итог долгой задачи («тесты зелёные»,\n «сборка упала»), важное событие. НЕ для болтовни и не для вопросов —\n вопрос задавай в сессии. До 1000 символов. Показать скриншот, PDF или\n лог — сначала attach_file, потом сюда upload_id.",
"inputSchema": {
"properties": {
"text": {
"type": "string"
},
"upload_id": {
"default": "",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "notify_me",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Журнал проекта дословно, новые сверху: сводки сессий и заметки-вехи.\n Зови за «что было N сессий назад»; поиск по теме — search_project.\n offset 0 — свежие, дальше листай по подсказке в конце ответа.",
"inputSchema": {
"properties": {
"offset": {
"default": 0,
"type": "integer"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "read_journal",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Статья одной полочки карты — актуальное знание по теме («Решения»,\n «Грабли»…). Зови по оглавлению из get_project_context или get_project_map.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
},
"section": {
"type": "string"
}
},
"required": [
"project_id",
"section"
],
"type": "object"
},
"name": "read_map_section",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Диалог пользователя с Чипом внутри проекта: сводка и последние реплики.\n Сценарий: надиктовал план с телефона — забери целиком, а не пересказ. Без\n session_id — самый свежий; id диалогов в get_project_context.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
},
"session_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "read_project_dialog",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Текст файла из базы знаний проекта, страницами. Без page у длинного\n документа придёт оглавление — выбери раздел и позови с page=N; дальше\n листай по подсказке в конце ответа.",
"inputSchema": {
"properties": {
"filename": {
"type": "string"
},
"page": {
"default": 0,
"type": "integer"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id",
"filename"
],
"type": "object"
},
"name": "read_project_file",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Переименовать проект (до 60 символов). Только по явной просьбе\n пользователя.",
"inputSchema": {
"properties": {
"name": {
"type": "string"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id",
"name"
],
"type": "object"
},
"name": "rename_project",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Сводка рабочей сессии — в журнал проекта. Зови В КОНЦЕ сессии или перед\n долгой паузой, один раз — не дроби. Структура: Сделано → Решения и почему\n (включая отвергнутые) → Грабли → Осталось. До 6000 символов, на языке\n пользователя.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
},
"text": {
"type": "string"
}
},
"required": [
"project_id",
"text"
],
"type": "object"
},
"name": "save_session_summary",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Поиск по знанию проекта: полочки карты, журнал, память, диалоги. Зови за\n конкретным фактом или старым решением, которого нет в контексте. Без\n project_id — по всем проектам сразу. Запрос — 1–3 ключевых слова, не\n предложение. kind сужает память до вида (decision, pitfall, fact,\n preference, progress, correction); since (ISO, как курсор) режет старое.",
"inputSchema": {
"properties": {
"kind": {
"default": "",
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
},
"query": {
"type": "string"
},
"since": {
"default": "",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_project",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Напоминание пользователю в Telegram — для отложенных проверок и\n дедлайнов. when — ISO-время («2026-07-25T10:00»), без пояса = локальное\n время пользователя. Текст до 200 символов.",
"inputSchema": {
"properties": {
"text": {
"type": "string"
},
"when": {
"type": "string"
}
},
"required": [
"text",
"when"
],
"type": "object"
},
"name": "set_reminder",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Выгрузить файл в проект (md, txt, csv, json, pdf, docx, xlsx и др.) —\n пользователь откроет его с телефона. Зови, когда результат нужен ему в\n Чипе; код оставляй в репозитории. До ~20k символов — сразу в content,\n крупнее — укажи size_bytes и загрузи по инструкции из ответа. Картинки —\n generate_image. ПЛАТНО для многостраничного PDF: оглавление к нему\n списывает кредиты пользователя.",
"inputSchema": {
"properties": {
"content": {
"default": "",
"type": "string"
},
"filename": {
"type": "string"
},
"project_id": {
"type": "integer"
},
"size_bytes": {
"default": 0,
"type": "integer"
}
},
"required": [
"project_id",
"filename"
],
"type": "object"
},
"name": "upload_project_file",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Изменения в проекте с твоего прошлого захода: журнал, поручения, файлы,\n полочки карты, диалоги. Зови ПЕРВЫМ, как взялся за проект: в знакомом —\n только дельта, впервые — сразу полный контекст. Скажет «изменений много» —\n добери get_project_context. since — из «Курсора» прошлого ответа, session —\n метка твоей ветки: покажу соседние сессии этого токена.",
"inputSchema": {
"properties": {
"project_id": {
"type": "integer"
},
"session": {
"default": "",
"type": "string"
},
"since": {
"default": "",
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "whats_new",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Тариф, занятость слотов проектов и (на платном тарифе) остатки дневных\n лимитов. Зови в начале сессии и когда другой тул отказал по лимиту.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "whoami",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:cda4f52c5bd2e17ed6af10a0831f8587fe6fe67e2f86e0151ff960d23a99f709 | sha256sum