Project memory, tasks and Telegram notifications for your coding agent. Chip account required.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Заметка в память проекта (до ~300 символов; грабли и правки — 600). Пиши по ходу: одно наблюдение — одна заметка. kind: decision — сделанный выбор (полочка «Решения»), fact — как устроено, preference — как любит пользователь, progress — что сделано, pitfall — грабли «симптом → причина → лечение» (полочка «Грабли»), correction — «раньше X, теперь Y». Решение пиши формулой «что решали → выбрали X вместо Y, потому что Z»: ✓ «Очередь задач: Redis вместо Kafka — один инстанс, 200 rps». ✗ «Используем Redis» — следующая сессия переспорит то же самое.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Заметка в память проекта (до ~300 символов; грабли и правки — 600). Пиши по ходу: одно наблюдение — одна заметка. kind: decision — сделанный выбор (полочка «Решения»), fact — как устроено, preference — как любит пользователь, progress — что сделано, pitfall — грабли «симптом → причина → лечение» (полочка «Грабли»), correction — «раньше X, теперь Y». Решение пиши формулой «что решали → выбрали X вместо Y, потому что Z»: ✓ «Очередь задач: Redis вместо Kafka — один инстанс, 200 rps». ✗ «Используем Redis» — следующая сессия переспорит то же самое.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| text* | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id",
"text"
],
"properties": {
"kind": {
"type": "string",
"default": "fact"
},
"text": {
"type": "string"
},
"project_id": {
"type": "integer"
}
}
}Поручение следующей сессии агента: хвост из «Осталось», который не успел сделать. Пользователь видит его в мини-аппе, следующая сессия — в list_tasks.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id",
"text"
],
"properties": {
"text": {
"type": "string"
},
"project_id": {
"type": "integer"
}
}
}Архивировать проект: уходит из списка, слот освобождается, данные целы. Зови, когда пользователю нужен слот под новый. Вернуть из архива и удалить проект может только он сам, в мини-аппе.
| Argument | Type | Description |
|---|---|---|
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "integer"
}
}
}Спросить пользователя кнопками в Telegram, когда упёрся в развилку, которую решает он сам («какую БД берём?»). НЕ для мелочей, решаемых здравым смыслом. options — 2–4 коротких варианта (по умолчанию Да/Нет). Молчит — вернётся id для check_confirmation.
| Argument | Type | Description |
|---|---|---|
| options | any | |
| question* | string |
{
"type": "object",
"required": [
"question"
],
"properties": {
"options": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"default": null
},
"question": {
"type": "string"
}
}
}Вложение для notify_me: скриншот после правки интерфейса, PDF, лог. В проект не сохраняется, живёт до отправки.
| Argument | Type | Description |
|---|---|---|
| filename* | string | |
| size_bytes* | integer |
{
"type": "object",
"required": [
"filename",
"size_bytes"
],
"properties": {
"filename": {
"type": "string"
},
"size_bytes": {
"type": "integer"
}
}
}Забрать ответ пользователя на вопрос ask_user (если тот вернул id). Зови не чаще раза в минуту-другую.
| Argument | Type | Description |
|---|---|---|
| ask_id* | string |
{
"type": "object",
"required": [
"ask_id"
],
"properties": {
"ask_id": {
"type": "string"
}
}
}Закрыть поручение из list_tasks: result — что сделано (1–2 фразы, до 500 символов, пользователь прочитает это в Telegram). Зови СРАЗУ по факту, не пачкой в конце. Не закрывай то, за что не брался.
| Argument | Type | Description |
|---|---|---|
| result* | string | |
| task_id* | string |
{
"type": "object",
"required": [
"task_id",
"result"
],
"properties": {
"result": {
"type": "string"
},
"task_id": {
"type": "string"
}
}
}Завести проект в Чипе. Зови по просьбе пользователя — или предложи сам, если работаете над задачей без проекта. Название — по сути задачи, до 60 символов.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}Завершить двухфазную загрузку файла: зови ПОСЛЕ того, как curl из ответа upload_project_file отработал успешно.
| Argument | Type | Description |
|---|---|---|
| upload_id* | string |
{
"type": "object",
"required": [
"upload_id"
],
"properties": {
"upload_id": {
"type": "string"
}
}
}Сгенерировать картинку 1024×1024. ПЛАТНО: списывает с баланса пользователя ~3 кредита — зови по его запросу, не «на пробу». С project_id PNG ляжет в файлы проекта, без него — временная ссылка, скачай сразу.
| Argument | Type | Description |
|---|---|---|
| prompt* | string | |
| project_id | any |
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string"
},
"project_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
}
}
}Контекст проекта: инструкции, поручения, оглавление карты, память, файлы, диалоги. Зови ОДИН раз, когда берёшься за проект впервые; вернулся в знакомый — whats_new, он дешевле. depth: "brief" (сводки аннотациями, по умолчанию) или "full" (дословно).
| Argument | Type | Description |
|---|---|---|
| depth | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"depth": {
"type": "string",
"default": ""
},
"project_id": {
"type": "integer"
}
}
}Оглавление карты проекта: полочки-статьи с актуальным знанием, которые Чип ведёт по журналу (не лента). Сама статья — read_map_section.
| Argument | Type | Description |
|---|---|---|
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "integer"
}
}
}Файлы базы знаний проекта: имя, размер, читаемость. Зови перед read_project_file, если точное имя неизвестно.
| Argument | Type | Description |
|---|---|---|
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "integer"
}
}
}Проекты пользователя: id, название, последняя активность, открытые поручения. Нужен project_id — сюда; список меняется редко, не перечитывай.
No arguments.
{
"type": "object",
"properties": {}
}Поручения тебе в этом проекте: их ставит пользователь и прошлая сессия (add_task, хвосты «Осталось»). Зови в начале работы и когда ищешь, чем заняться дальше. Сделанное закрывай complete_task — незакрытое всплывёт снова.
| Argument | Type | Description |
|---|---|---|
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "integer"
}
}
}Сообщение пользователю в Telegram: итог долгой задачи («тесты зелёные», «сборка упала»), важное событие. НЕ для болтовни и не для вопросов — вопрос задавай в сессии. До 1000 символов. Показать скриншот, PDF или лог — сначала attach_file, потом сюда upload_id.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| upload_id | string |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
},
"upload_id": {
"type": "string",
"default": ""
}
}
}Журнал проекта дословно, новые сверху: сводки сессий и заметки-вехи. Зови за «что было N сессий назад»; поиск по теме — search_project. offset 0 — свежие, дальше листай по подсказке в конце ответа.
| Argument | Type | Description |
|---|---|---|
| offset | integer | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"offset": {
"type": "integer",
"default": 0
},
"project_id": {
"type": "integer"
}
}
}Статья одной полочки карты — актуальное знание по теме («Решения», «Грабли»…). Зови по оглавлению из get_project_context или get_project_map.
| Argument | Type | Description |
|---|---|---|
| section* | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id",
"section"
],
"properties": {
"section": {
"type": "string"
},
"project_id": {
"type": "integer"
}
}
}Диалог пользователя с Чипом внутри проекта: сводка и последние реплики. Сценарий: надиктовал план с телефона — забери целиком, а не пересказ. Без session_id — самый свежий; id диалогов в get_project_context.
| Argument | Type | Description |
|---|---|---|
| project_id* | integer | |
| session_id | any |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "integer"
},
"session_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
}
}
}Текст файла из базы знаний проекта, страницами. Без page у длинного документа придёт оглавление — выбери раздел и позови с page=N; дальше листай по подсказке в конце ответа.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| filename* | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id",
"filename"
],
"properties": {
"page": {
"type": "integer",
"default": 0
},
"filename": {
"type": "string"
},
"project_id": {
"type": "integer"
}
}
}Переименовать проект (до 60 символов). Только по явной просьбе пользователя.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id",
"name"
],
"properties": {
"name": {
"type": "string"
},
"project_id": {
"type": "integer"
}
}
}Сводка рабочей сессии — в журнал проекта. Зови В КОНЦЕ сессии или перед долгой паузой, один раз — не дроби. Структура: Сделано → Решения и почему (включая отвергнутые) → Грабли → Осталось. До 6000 символов, на языке пользователя.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id",
"text"
],
"properties": {
"text": {
"type": "string"
},
"project_id": {
"type": "integer"
}
}
}Поиск по знанию проекта: полочки карты, журнал, память, диалоги. Зови за конкретным фактом или старым решением, которого нет в контексте. Без project_id — по всем проектам сразу. Запрос — 1–3 ключевых слова, не предложение. kind сужает память до вида (decision, pitfall, fact, preference, progress, correction); since (ISO, как курсор) режет старое.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| query* | string | |
| since | string | |
| project_id | any |
{
"type": "object",
"required": [
"query"
],
"properties": {
"kind": {
"type": "string",
"default": ""
},
"query": {
"type": "string"
},
"since": {
"type": "string",
"default": ""
},
"project_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
}
}
}Напоминание пользователю в Telegram — для отложенных проверок и дедлайнов. when — ISO-время («2026-07-25T10:00»), без пояса = локальное время пользователя. Текст до 200 символов.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| when* | string |
{
"type": "object",
"required": [
"text",
"when"
],
"properties": {
"text": {
"type": "string"
},
"when": {
"type": "string"
}
}
}Выгрузить файл в проект (md, txt, csv, json, pdf, docx, xlsx и др.) — пользователь откроет его с телефона. Зови, когда результат нужен ему в Чипе; код оставляй в репозитории. До ~20k символов — сразу в content, крупнее — укажи size_bytes и загрузи по инструкции из ответа. Картинки — generate_image. ПЛАТНО для многостраничного PDF: оглавление к нему списывает кредиты пользователя.
| Argument | Type | Description |
|---|---|---|
| content | string | |
| filename* | string | |
| project_id* | integer | |
| size_bytes | integer |
{
"type": "object",
"required": [
"project_id",
"filename"
],
"properties": {
"content": {
"type": "string",
"default": ""
},
"filename": {
"type": "string"
},
"project_id": {
"type": "integer"
},
"size_bytes": {
"type": "integer",
"default": 0
}
}
}Изменения в проекте с твоего прошлого захода: журнал, поручения, файлы, полочки карты, диалоги. Зови ПЕРВЫМ, как взялся за проект: в знакомом — только дельта, впервые — сразу полный контекст. Скажет «изменений много» — добери get_project_context. since — из «Курсора» прошлого ответа, session — метка твоей ветки: покажу соседние сессии этого токена.
| Argument | Type | Description |
|---|---|---|
| since | string | |
| session | string | |
| project_id* | integer |
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"since": {
"type": "string",
"default": ""
},
"session": {
"type": "string",
"default": ""
},
"project_id": {
"type": "integer"
}
}
}Тариф, занятость слотов проектов и (на платном тарифе) остатки дневных лимитов. Зови в начале сессии и когда другой тул отказал по лимиту.
No arguments.
{
"type": "object",
"properties": {}
}