The auto-loading `src/tools/` folder is the actual product: a new tool is one file with a Zod schema and a handler, no registration step, no touching the server. The five bundled tools double as worked examples, and finding a todo by position or partial title rather than by id is a small design choice that makes them usable from a conversation.
A TypeScript server built around a loader: every file in `src/tools/` is discovered and registered at startup, so adding a tool means writing one file with a name, description, Zod input schema and handler. It ships with a working set already — Telegram, HTTP, a calculator, and CRUD over blocks, todos and agents. Documentation is in Russian.
- `sendTelegramMessage` sends a message through your bot; `httpRequest` performs GET, POST, PUT or DELETE with headers and a body
- `calculator` evaluates a mathematical expression
- `manageBlocks` is full CRUD over blocks — list, create, update, delete, get — across types including text, todo, media, link, container, calendar and database
- Todos as four separate tools: `createTodo` with priority, due date, tags and project; `readTodos`, `updateTodo` and `deleteTodo`, each able to find a task by exact id, by its position in the list, or by a partial title search
- `manageUnits` is the same CRUD shape over AI agents — name, description, model, system prompt, tools and agent type
- Deleting a todo is a soft delete
You host it yourself. `npm install`, then run it with Docker Compose — `docker-compose.local.yml` exposes port 8080 for development, `docker-compose.yml` is the production variant. Configure a `.env` from `.env.example` with `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` for the Telegram tool, `DATABASE_URL` pointing at PostgreSQL for the blocks, todos and agents tools, and `PORT`. Clients connect over Server-Sent Events at `/sse` — in Claude Desktop that is a `url` entry pointing at `http://localhost:8080/sse`.
