Content
# oTask MCP
`otask-mcp` — локальный [MCP](https://modelcontextprotocol.io/) stdio-сервер для oTask.
Он подключается к агентным средам (Hermes, Cursor, Claude, OpenClaw и другим MCP-клиентам) и даёт инструменты для работы с проектами, задачами, комментариями и поиском.
## Статус
**v1.0.0 — production-ready.** 169 инструментов, 0 открытых issues, CI green.
---
## Что умеет
- **169 типизированных инструментов** для работы со всем функционалом oTask API (full profile). **115 инструментов** в consolidated profile (action-based CRUD).
- **Agent-first дизайн**: compact tools с предсказуемым payload, structured error hints (403/404/422), centralized member resolution, workspace resolve by name.
- **Domain tags** `[domain/read|write]` в descriptions — агент видит, к какой области относится инструмент и нужна ли запись.
- **Tool profiles**: `full`, `consolidated`, `core`, `tasks-only`, `crm-only`, `projects-only`, `ops` — снижение tool-noise для конкретных сценариев.
- **Consolidated CRUD**: 9 action-based tools (`otask_article`, `otask_storage`, `otask_tag`, `otask_payment`, `otask_member`, `otask_crm_company`, `otask_crm_contact`, `otask_crm_deal`, `otask_crm_funnel`) — up to 60% token savings.
- **Domain loading** (`OTASK_TOOL_DOMAINS=tasks,crm,...`) — загружать только нужные домены инструментов.
- **Short descriptions** (`OTASK_SHORT_DESCRIPTIONS=1`) — обрезать docstrings до первого предложения.
- **`otask_help(topic)`** — встроенные workflow guides для агентов (`"all"`, `"tasks-overview"`, `"crm-overview"`, `"finance-overview"`, `"agent-routing"`).
- **Agent-first compact tools**: `otask_tasks_compact_list`, `otask_tasks_for_member`, `otask_tasks_digest`, `otask_task_tree`, `otask_board_snapshot` — scenario-first routing.
- **Centralized member resolution**: `otask_member_resolve(query="John")` → `user_id`.
- **Workspace resolve by name**: `otask_workspace_resolve(query="My Workspace")`.
- **One-shot subtask creation**: `otask_task_create_subtask(name="...", parent_slug="...")`.
- **Financial summary + burn rate**: `otask_payments_summary(date_from=..., date_to=...)`.
- **Reference data в workspace overview**: `otask_workspace_overview()` включает `reference_data` с priority IDs, payment types и т.д.
- Модульная декомпозиция: `server.py` — оркестрационный слой, доменные инструменты вынесены в `src/otask_mcp/tools/*.py`.
- Auth, Teams, Members & Roles, Projects CRUD, Boards CRUD, Tasks, Task Timers/Intervals/Files, Task Meta (duplicate, move, archive, reminders, calendar, parent), Comments, CRM (contacts, companies, deals), CRM Funnels & Statuses CRUD, Payments & Finance, Storage, Knowledge Base, Reports, Tags CRUD, Custom Fields, Clients, Search.
- Локальный поиск по каталогу endpoint'ов (без сети).
- Guarded `raw_request` для нестандартных endpoint'ов.
- Единая taxonomy ошибок: `error_code` (`feature_unavailable`, `not_found`, `validation_failed`, `rate_limited`, ...).
- **Production retry logic**: automatic 5xx retry with exponential backoff + jitter (GET/HEAD, up to `OTASK_MAX_RETRIES`), network error retry (ConnectError/ReadTimeout/ConnectTimeout) for all methods.
- **Pagination helpers**: `auto_paginate` parameter on `otask_tasks_compact_list`, `otask_crm_deals_compact_list`, `otask_payments_list` — opt-in auto-pagination с `max_pages=20` safety limit.
- Runtime reuses one in-process oTask client/token per config to avoid repeated `POST /auth/login` calls and reduce login rate-limit risk.
## Безопасность по умолчанию
- Секреты только через переменные окружения.
- `OTASK_ENABLE_RAW_REQUEST=0` по умолчанию. Для нестандартных endpoint'ов можно осознанно включить guarded escape hatch через `OTASK_ENABLE_RAW_REQUEST=1`; предпочтительнее добавлять typed wrappers под частые сценарии.
- Smoke-скрипт не печатает секреты.
- Редакция чувствительных полей в ошибках (token/password/secret и т.д.).
---
## Требования
- Python 3.11+
- Доступ к oTask API (по умолчанию `https://api.otask.ru`)
- Учётные данные oTask:
- `OTASK_USER`
- `OTASK_PASSWORD`
---
## Быстрая установка
```bash
git clone https://github.com/pafozz/otask-mcp.git otask-mcp
cd otask-mcp
python -m venv .venv
. .venv/bin/activate
python -m pip install -U pip
python -m pip install -e .
```
---
## Настройка переменных окружения
1. Создай локальный env-файл:
```bash
cp .env.example .env
```
2. Заполни `.env`:
- Обязательные:
- `OTASK_USER`
- `OTASK_PASSWORD`
- Опциональные:
- `OTASK_BASE_URL` (дефолт `https://api.otask.ru`)
- `OTASK_DEFAULT_WS_SLUG` (рекомендуется — дефолтный workspace для вызовов без `ws_slug`)
- `OTASK_TIMEOUT` (дефолт `30`)
- `OTASK_MAX_RETRIES` (дефолт `3` — число retry-попыток при 5xx и network errors)
### Дефолтный workspace (`OTASK_DEFAULT_WS_SLUG`)
Если прописать `OTASK_DEFAULT_WS_SLUG`, инструменты workspace-уровня можно вызывать без явного `ws_slug` в каждом запросе.
Пример в `.env`:
```bash
OTASK_DEFAULT_WS_SLUG=your-workspace-slug
```
Поведение:
- Если `ws_slug` передан в аргументах инструмента — используется он.
- Если `ws_slug` не передан — используется `OTASK_DEFAULT_WS_SLUG`.
- Если не задано ни то, ни другое — вернётся безопасная ошибка:
`ws_slug is required when OTASK_DEFAULT_WS_SLUG is not configured`.
- `OTASK_ENABLE_RAW_REQUEST` (дефолт `0`)
- `OTASK_TOOL_PROFILE` (дефолт `full`; варианты: `full`, `consolidated`, `core`, `tasks-only`, `crm-only`, `projects-only`, `ops`)
- `OTASK_TOOL_INCLUDE` (опционально, CSV-список имён tools для принудительного добавления)
- `OTASK_TOOL_EXCLUDE` (опционально, CSV-список имён tools для удаления)
- `OTASK_TOOL_DOMAINS` (опционально, CSV доменов: `tasks`, `crm`, `finance`, `projects`, `members`, `storage`, `articles`, `clients`)
- `OTASK_SHORT_DESCRIPTIONS` (опционально, `1` — обрезать описания инструментов до первого предложения)
### Профили инструментов (снижение tool-noise)
По умолчанию сервер остаётся **non-breaking**: профиль `full` публикует весь набор `otask_*` (текущее поведение без изменений).
Профили нужны для агентных сред, где слишком большой список tools ухудшает выбор инструмента: меньше нерелевантных инструментов => меньше «шума» и более предсказуемые вызовы.
Профили собираются по префиксам имён инструментов:
- `full`: `otask_` — все 169 инструментов (backward compatible)
- `consolidated`: 115 инструментов — legacy tools заменены на 9 action-based consolidated tools + scenario-first tools
- `core`: ~30 повседневных инструментов для agent workflows — `otask_board_snapshot`, `otask_comment_add`, `otask_comments_list`, `otask_global_search`, `otask_member_resolve`, `otask_members_list`, `otask_project_get`, `otask_project_tasks`, `otask_projects_list`, `otask_tag_create`, `otask_tag_update`, `otask_task_calendar`, `otask_task_create`, `otask_task_create_subtask`, `otask_task_delete`, `otask_task_get`, `otask_task_month_calendar`, `otask_task_move`, `otask_task_patch`, `otask_task_set_parent`, `otask_task_timer_start`, `otask_task_timer_stop`, `otask_task_tree`, `otask_task_update`, `otask_tasks_compact_list`, `otask_tasks_digest`, `otask_tasks_for_member`, `otask_tasks_list`, `otask_workspace_overview`, `otask_workspace_resolve`
- `tasks-only`: `otask_task_`, `otask_tasks_`, `otask_kanban_`, `otask_comment_`, `otask_comments_`, `otask_custom_field_`, `otask_custom_fields_`, `otask_tag_`, `otask_task_column_`, `otask_task_columns`
- `crm-only`: `otask_crm_`
- `projects-only`: `otask_project_`, `otask_projects_`, `otask_board_`, `otask_report_`
- `ops`: task+project+member сценарии (R1-R3/W1-W3 baseline): `otask_task_`, `otask_tasks_`, `otask_kanban_`, `otask_comment_`, `otask_comments_`, `otask_custom_field_`, `otask_custom_fields_`, `otask_tag_`, `otask_task_column_`, `otask_task_columns`, `otask_project_`, `otask_projects_`, `otask_board_`, `otask_member_`, `otask_members_`, `otask_report_`
Override-логика:
- сначала выбирается профиль (`OTASK_TOOL_PROFILE`),
- затем добавляются инструменты из `OTASK_TOOL_INCLUDE`,
- затем удаляются инструменты из `OTASK_TOOL_EXCLUDE`.
Примеры:
```bash
# 1) Без миграции: полная обратная совместимость
OTASK_TOOL_PROFILE=full
# 2) Consolidated profile — 9 action-based tools + scenario-first tools (115 tools)
OTASK_TOOL_PROFILE=consolidated
# 3) Повседневный агент — core (~30 ключевых инструментов)
OTASK_TOOL_PROFILE=core
# 4) Агент только для задач
OTASK_TOOL_PROFILE=tasks-only
# 5) CRM-агент + точечно добавить один tool
OTASK_TOOL_PROFILE=crm-only
OTASK_TOOL_INCLUDE=otask_global_search
# 6) Проектный агент, но убрать report-tools
OTASK_TOOL_PROFILE=projects-only
OTASK_TOOL_EXCLUDE=otask_report_members,otask_report_projects,otask_report_tasks
# 7) Ops-агент (scenario-first) и точечно убрать write-tool
OTASK_TOOL_PROFILE=ops
OTASK_TOOL_EXCLUDE=otask_task_delete
```
Рекомендации для операторов агентов:
- повседневные agent workflows: `core`
- максимальная экономия токенов: `consolidated` + `OTASK_TOOL_DOMAINS` + `OTASK_SHORT_DESCRIPTIONS=1`
- task-триаж / исполнение: `tasks-only`
- CRM-пайплайн: `crm-only`
- PM/координация проектов: `projects-only`
- операционный scenario-first агент: `ops`
- универсальный ассистент или миграция с legacy-конфига: `full`
Короткий troubleshooting:
- Ошибка вида `Unknown OTASK_TOOL_PROFILE '...'` означает опечатку в профиле.
- Допустимые значения: `full`, `consolidated`, `core`, `tasks-only`, `crm-only`, `projects-only`, `ops`.
3. Подгрузи переменные в текущую сессию:
```bash
set -a
source .env
set +a
```
---
## Оптимизация контекста
oTask MCP публикует 169 инструментов (~22K токенов). Для LLM-агентов с ограниченным контекстом доступны три механизма снижения расхода:
### Consolidated Profile
```bash
# 9 action-based инструментов заменяют 52 отдельных CRUD-инструмента
export OTASK_TOOL_PROFILE=consolidated
```
### Загрузка по доменам
```bash
# Загрузить только инструменты для задач и CRM
export OTASK_TOOL_DOMAINS=tasks,crm
```
Доступные домены: `tasks`, `projects`, `crm`, `members`, `finance`, `storage`, `articles`, `clients`
### Короткие описания
```bash
# Обрезать описания инструментов до первого предложения
export OTASK_SHORT_DESCRIPTIONS=1
```
### Экономия токенов
- Только `OTASK_TOOL_PROFILE=consolidated`: ~32% сокращение (169 → 115 инструментов)
- Только `OTASK_SHORT_DESCRIPTIONS=1`: ~20% сокращение
- Только `OTASK_TOOL_DOMAINS=tasks,crm`: ~40% сокращение
- Комбинация `consolidated` + `OTASK_SHORT_DESCRIPTIONS=1` + `OTASK_TOOL_DOMAINS`: до ~60% суммарной экономии
---
## Проверка подключения
```bash
python -c "from otask_mcp.server import main; print('OK')"
```
Ожидаемое поведение:
- если нет обязательных env — быстрый безопасный fail;
- секреты не выводятся;
- при валидных env выполняется низкорисковый `GET /api/v1/teams`.
---
## Запуск MCP-сервера
```bash
python -m otask_mcp
```
или
```bash
otask-mcp
```
---
## Подключение в разные среды
Ниже минимальные шаблоны. Полные примеры: `docs/client-config-examples.md`.
### 1) Hermes
`~/.hermes/config.yaml`
```yaml
mcpServers:
otask:
command: bash
args:
- -lc
- source ~/.config/secrets.env && exec python -m otask_mcp
env:
OTASK_BASE_URL: https://api.otask.ru
OTASK_ENABLE_RAW_REQUEST: "0"
```
Проверка:
```bash
hermes mcp test otask
```
### 2) Cursor
Открой MCP config Cursor и добавь сервер:
```json
{
"mcpServers": {
"otask": {
"command": "bash",
"args": ["-lc", "source ~/.config/secrets.env && exec python -m otask_mcp"],
"env": {
"OTASK_BASE_URL": "https://api.otask.ru",
"OTASK_ENABLE_RAW_REQUEST": "0"
}
}
}
}
```
### 3) Claude Desktop / Claude Code
В MCP-конфиг Claude:
```json
{
"mcpServers": {
"otask": {
"command": "bash",
"args": ["-lc", "source ~/.config/secrets.env && exec python -m otask_mcp"],
"env": {
"OTASK_BASE_URL": "https://api.otask.ru",
"OTASK_ENABLE_RAW_REQUEST": "0"
}
}
}
}
```
### 4) OpenClaw
Для OpenClaw (stdio MCP):
```json
{
"servers": {
"otask": {
"command": "bash",
"args": ["-lc", "source ~/.config/secrets.env && exec python -m otask_mcp"],
"env": {
"OTASK_BASE_URL": "https://api.otask.ru",
"OTASK_ENABLE_RAW_REQUEST": "0"
}
}
}
}
```
> В некоторых клиентах ключ называется `mcpServers`, в некоторых `servers`.
### 5) Codex CLI (OpenAI Codex)
Если используешь Codex как агентную среду с MCP, добавь `otask-mcp` как stdio MCP server в конфиг Codex.
Пример (JSON):
```json
{
"mcpServers": {
"otask": {
"command": "bash",
"args": ["-lc", "source ~/.config/secrets.env && exec python -m otask_mcp"],
"env": {
"OTASK_BASE_URL": "https://api.otask.ru",
"OTASK_ENABLE_RAW_REQUEST": "0"
}
}
}
}
```
Проверка:
- запусти Codex с включённым MCP-конфигом;
- убедись, что инструменты `otask_*` видны в списке доступных tools.
> Если у тебя в Codex другая схема ключей (`servers` вместо `mcpServers`) — используй тот же блок сервера с нужным верхним ключом.
### 6) Универсальный stdio MCP-клиент
```json
{
"command": "bash",
"args": ["-lc", "source ~/.config/secrets.env && exec python -m otask_mcp"],
"env": {
"OTASK_BASE_URL": "https://api.otask.ru",
"OTASK_ENABLE_RAW_REQUEST": "0"
}
}
```
---
## Устранение неисправностей
Смотри:
- `docs/quickstart.md`
- `docs/troubleshooting.md`
- `docs/release-checklist.md`
- `docs/release-governance.md`
## Governance и процессы
- `LICENSE`
- `CHANGELOG.md`
- `SECURITY.md`
- `CONTRIBUTING.md`
- `.github/ISSUE_TEMPLATE/*`
- `.github/pull_request_template.md`
## CI / Качество
- GitHub Actions:
- `.github/workflows/ci.yml` (pytest + wheel build)
- `.github/workflows/quality.yml` (ruff → mypy → build wheel → verify imports)
- `.github/workflows/nightly-drift.yml` (nightly drift checks)
- SLO policy gate:
- Policy file: `config/slo-policy.json`
- Локальные проверки:
```bash
pytest -q
ruff check .
mypy src/otask_mcp
python -m pip wheel . --no-deps
pytest --cov=otask_mcp --cov-report=term-missing
```
## Доп. документация
- `docs/cookbook.md`
- `docs/setup-linux-macos-windows.md`
- `docs/enterprise-roadmap.md`
---
## Тесты
```bash
python -m pytest -q
```
---
## Работа с задачами без больших JSON
`otask_tasks_list` оставляет raw-ответ oTask, но теперь принимает дополнительные фильтры, которые прокидываются в `/api/v1/ws/{ws_slug}/tasks`:
- пагинация: `page`, `per_page`
- участник/исполнитель: `performer`
- статус: `status_id`
- дедлайн: `end_at_from`, `end_at_to`
- старт: `start_at_from`, `start_at_to`
- создание: `created_at_from`, `created_at_to`
Для агентных сценариев предпочтительнее `otask_tasks_compact_list`: он использует deadline-фильтры `date_from/date_to` → `end_at_from/end_at_to`, поддерживает тот же основной набор фильтров (`project`, `performer`, `tag`, `priority`, `column_value`, `status_id`, даты) и возвращает компактный ответ: `count`, `meta`, `items[]` с полями вроде `id`, `slug`, `title`, `end_at`, `localtz_end_at`, `status`, `column`, `performers`, `project`, `priority`, `url`. Если всё же нужен исходный ответ, передай `include_raw=true`.
Для scenario-first routing:
- **Триаж по исполнителю**: `otask_tasks_for_member(performer=user_id)` — все задачи исполнителя с опциональной фильтрацией по проекту/борду.
- **Просроченные/неназначенные/на ревью/устаревшие**: `otask_tasks_digest()` — bounded digest slices по категориям.
- **Иерархия подзадач**: `otask_task_tree(task_slug="...")` — дерево подзадач с компактным output.
---
## For AI agents
Use a scenario-first routing path for task discovery:
```
1. Call `otask_help(topic="tasks-overview")` or `otask_help(topic="all")` to discover relevant tools.
2. Resolve workspace: `otask_workspace_resolve(query="My Workspace")` if you don't know the UUID slug.
3. Get overview: `otask_workspace_overview()` — includes reference_data with priority IDs, payment types.
4. Resolve member: `otask_member_resolve(query="John")` → get user_id.
5. Scenario-first routing:
- Assignee triage → `otask_tasks_for_member(performer=user_id)`
- Board state → `otask_board_snapshot(project="...", board="...")`
- Subtask hierarchy → `otask_task_tree(task_slug="...")`
- Overdue/unassigned → `otask_tasks_digest()`
- Financial overview → `otask_payments_summary(date_from=..., date_to=...)`
6. Create subtask in one call: `otask_task_create_subtask(name="...", parent_slug="...")`
7. Update task safely: `otask_task_patch(task_slug="...", priority_id=3, merge=True)`
```
Recommended profile for this flow: `OTASK_TOOL_PROFILE=core` (or `consolidated` for maximum token savings).
Avoid workspace-wide raw scans as a default strategy:
- `otask_tasks_list` and `otask_task_list_get*` are advanced/debug raw endpoints.
- Use raw payload tools only when compact/scenario endpoints are insufficient.
---
## Работа с project boards для создания задач
Используй catalog-backed read-only board endpoint'ы перед `otask_task_create`, чтобы агенты могли обнаружить допустимые значения `board_id` / `board_column_id` без включения `otask_raw_request`:
- `otask_project_boards_list(project_slug, ws_slug?)` — возвращает raw-ответ бордов из `GET /api/v1/ws/{ws_slug}/projects/{project_slug}/boards`.
- `otask_project_boards_compact_list(project_slug, ws_slug?, include_raw=false)` — возвращает `count`, `meta` и компактные `items[]` с `id`, `slug`, `name`, `position` и встроенными `columns[]`/statuses. Если API не встраивает колонки для данного workspace/project, `columns` — пустой список.
- `otask_project_board_tasks_list(project_slug, board_slug, ws_slug?)` — возвращает raw read-only payload задач борда из `GET /api/v1/ws/{ws_slug}/projects/{project_slug}/boards/{board_slug}` для дополнительной инспекции.
---
## Работа с CRM без больших JSON
CRM-инструменты используют read-only endpoint'ы oTask и не требуют включать `otask_raw_request`:
- `otask_crm_funnels_list` — список воронок: `GET /api/v1/ws/{ws_slug}/crm/funnels`.
- `otask_crm_funnel_statuses_list` — статусы воронок: `POST /api/v1/ws/{ws_slug}/crm/funnels/statuses`, тело собирается из `funnel_id`, `funnel`, `include_archive` без `None`-полей.
- `otask_crm_deals_list` — raw-ответ сделок по воронке: `POST /api/v1/ws/{ws_slug}/crm/funnels/{funnel}/deals/list` с фильтрами `page`, `per_page`, `query`, `status_id`.
- `otask_crm_deals_compact_list` — компактные сделки (`count`, `meta`, `items[]`) с полями `id`, `slug`, `title`, `amount`, `status`, `funnel`, `contact`, `company`, `responsible`, `performers`, даты и `url`; `include_raw=true` добавляет исходный ответ.
- `otask_crm_contacts_list` и `otask_crm_companies_list` — компактные контакты/компании через POST-пагинацию (`page`, `per_page`, `query`), с `include_raw=true` при необходимости.
---
## Инструменты (169 total, full profile)
> Consolidated profile (`OTASK_TOOL_PROFILE=consolidated`): 115 инструментов — 9 action-based consolidated tools заменяют 52 individual CRUD tools.
### Consolidated Tools (9, только в consolidated/full профилях)
- `otask_article` — 5 actions (list, get, create, update, delete) — заменяет `otask_articles_list`, `otask_article_get`, `otask_article_create`, `otask_article_update`, `otask_article_delete`
- `otask_storage` — 6 actions (browse, create_folder, upload, download, rename, delete) — заменяет 6 individual storage tools
- `otask_tag` — 4 actions (create, update, delete, change_position) — заменяет 4 individual tag tools
- `otask_payment` — 9 actions (list, create, update, delete, analytics, export, summary, categories_list, category_create) — заменяет 9 individual finance tools
- `otask_member` — 12 actions (list, get, info, resolve, invite, cancel_invite, accept, change_role, update, remove, destroy, export) — заменяет 12 individual member tools
- `otask_crm_company` — 2 actions (list, create) — заменяет `otask_crm_companies_list`, `otask_crm_company_create`
- `otask_crm_contact` — 3 actions (list, create, update) — заменяет `otask_crm_contacts_list`, `otask_crm_contact_create`, `otask_crm_contact_update`
- `otask_crm_deal` — 5 actions (list, list_compact, get, create, update) — заменяет 5 individual deal tools
- `otask_crm_funnel` — 8 actions (list, create, update, delete, status_list, status_create, status_update, status_delete) — заменяет 8 individual funnel tools
### Auth (1)
- `otask_auth_status` — статус авторизации
### System (2)
- `otask_health` — health check
- `otask_help` — workflow guides для агентов (`topic`: `"all"`, `"tasks-overview"`, `"crm-overview"`, `"finance-overview"`, `"agent-routing"`)
### Workspace (4)
- `otask_teams_list` — список команд
- `otask_workspace_overview` — bounded workspace summary с reference_data
- `otask_workspace_resolve` — resolve workspace по имени
- `otask_workspace_statistics` — статистика workspace
### Users (3)
- `otask_user_get` / `otask_user_update` / `otask_user_update_settings`
### Members (12)
- `otask_members_list` / `otask_members_export`
- `otask_member_get` / `otask_member_info` / `otask_member_resolve`
- `otask_member_invite` / `otask_member_accept` / `otask_member_cancel_invite`
- `otask_member_remove` / `otask_member_destroy` / `otask_member_update` / `otask_member_change_role`
### Roles (2)
- `otask_roles_list` / `otask_role_create`
### Projects (32)
- `otask_projects_list` / `otask_project_get` / `otask_projects_export` / `otask_projects_import_example`
- `otask_project_create` / `otask_project_update` / `otask_project_update_description` / `otask_project_close` / `otask_project_delete`
- `otask_project_update_tags` / `otask_project_update_pinned`
- `otask_project_statistics` / `otask_project_summary` / `otask_project_tasks`
- `otask_project_notes` / `otask_project_note_create` / `otask_project_note_update` / `otask_project_note_delete`
- `otask_project_media` / `otask_project_media_create_folder` / `otask_project_media_destroy`
- `otask_project_payments` / `otask_project_payment_create`
- `otask_project_applications`
- `otask_project_boards_list` / `otask_project_boards_compact_list` / `otask_project_board_tasks_list`
- `otask_board_create` / `otask_board_update` / `otask_board_delete` / `otask_board_tasks`
- `otask_board_snapshot` — compact board state, grouped by column
### Tasks (44)
- CRUD: `otask_task_create` / `otask_task_get` / `otask_task_update` / `otask_task_patch` / `otask_task_delete`
- Subtasks: `otask_task_create_subtask` / `otask_task_set_parent` / `otask_task_tree`
- Lists: `otask_tasks_list` / `otask_tasks_compact_list` / `otask_tasks_for_member` / `otask_tasks_digest` / `otask_tasks_export` / `otask_tasks_import_example`
- Raw lists: `otask_task_list_get` / `otask_task_list_get_more` / `otask_task_list_get_children`
- Task Meta: `otask_task_duplicate` / `otask_task_move` / `otask_task_move_calendar` / `otask_task_archive`
- Reminders: `otask_task_set_reminder` / `otask_task_remove_reminder`
- Recurring: `otask_task_update_recurring` / `otask_task_disable_recurring`
- Timers: `otask_task_timer_start` / `otask_task_timer_stop`
- Intervals: `otask_task_intervals` / `otask_task_interval_add`
- Files: `otask_task_files_list` / `otask_task_file_upload` / `otask_task_media_download`
- Checklist: `otask_task_checklist_change_status`
- Other: `otask_task_update_picture` / `otask_task_search_within`
- Calendar: `otask_task_calendar` / `otask_task_month_calendar`
- Kanban: `otask_kanban_list` / `otask_kanban_tasks` / `otask_kanban_tags`
- Columns: `otask_task_columns` / `otask_task_column_create` / `otask_task_column_update` / `otask_task_column_delete`
### Comments (2)
- `otask_comments_list` / `otask_comment_add`
### CRM (18)
- Contacts: `otask_crm_contacts_list` / `otask_crm_contact_create` / `otask_crm_contact_update`
- Companies: `otask_crm_companies_list` / `otask_crm_company_create`
- Deals: `otask_crm_deals_list` / `otask_crm_deals_compact_list` / `otask_crm_deal_create` / `otask_crm_deal_get` / `otask_crm_deal_update`
- Funnels: `otask_crm_funnels_list` / `otask_crm_funnel_create` / `otask_crm_funnel_update` / `otask_crm_funnel_delete`
- Funnel Statuses: `otask_crm_funnel_statuses_list` / `otask_crm_funnel_status_create` / `otask_crm_funnel_status_update` / `otask_crm_funnel_status_delete`
### Finance (9)
- `otask_payments_list` / `otask_payment_create` / `otask_payment_update` / `otask_payments_delete`
- `otask_payments_export` / `otask_payments_summary`
- `otask_payment_categories_list` / `otask_payment_category_create`
- `otask_payment_analytics`
### Storage (6)
- `otask_storage_browse` / `otask_storage_upload` / `otask_storage_download`
- `otask_storage_create_folder` / `otask_storage_rename` / `otask_storage_delete`
### Knowledge Base (5)
- `otask_articles_list` / `otask_article_get` / `otask_article_create` / `otask_article_update` / `otask_article_delete`
### Reporting (4)
- `otask_report_tasks` / `otask_report_projects` / `otask_report_members` / `otask_report_subtasks`
### Tags (4)
- `otask_tag_create` / `otask_tag_update` / `otask_tag_delete` / `otask_tag_change_position`
### Custom Fields (5)
- `otask_custom_fields_create` / `otask_custom_field_update` / `otask_custom_field_delete`
- `otask_custom_field_option_create` / `otask_custom_field_option_delete`
### Clients (4)
- `otask_clients_list` / `otask_client_create` / `otask_client_update` / `otask_clients_export`
### Search & Utility (2)
- `otask_global_search` — глобальный поиск по workspace
- `otask_endpoint_search` — локальный поиск по каталогу endpoint'ов (без сети)
### Escape Hatch (1)
- `otask_raw_request` — guarded generic API-запрос (disabled by default, `OTASK_ENABLE_RAW_REQUEST=1`)
Connection Info
You Might Also Like
ai-native-pm-os
The exhaustive guide to mastering Claude for Product Managers. Build your...
Train-in-Silence
The first Task-Aware MCP server and automated VRAM calculator for LLM...
stacklit
108,000 lines of code. 4,000 tokens of index. One command makes any repo...
AppClaw
AI-powered mobile automation agent — describe what you want in plain...
pdf-mcp
Production-ready MCP server for PDF processing with intelligent caching....
kotadb
Local-only code intelligence API for AI developer workflows (Bun +...