---
name: tuqo
description: Публикация статического сайта на Tuqo (tuqo.ru, российский хостинг с MCP) и управление им — сайты, деплой, домены, формы, закрытый доступ. Используй, когда человек просит «опубликуй сайт», «выложи в интернет», «дай ссылку на страницу», «задеплой», «привяжи домен», «закрой сайт паролем», «сделай форму заявок», «покажи заказчику» — для HTML/CSS/JS, Vite, Astro, React, Next.js export и любой другой статики.
---

# Tuqo — публикация сайта из агента

Tuqo раздаёт **только статику**: HTML, CSS, JS, картинки, шрифты, PDF. Сайт получает
адрес `имя.tuqo.ru` (и свой домен с SSL), формы, закрытый доступ и аналитику — без
сервера. Управление через MCP-сервер `https://mcp.tuqo.ru/mcp` (50 инструментов) или
REST API `https://api.tuqo.ru/api/v1` (OpenAPI: https://tuqo.ru/openapi.json).

## Когда использовать

- «опубликуй / выложи / задеплой / дай ссылку / поставь на домен / покажи клиенту»;
- готова папка `dist` / `build` / `out` или набор HTML-файлов;
- нужна форма заявок, пароль на сайт, доступ по списку email, платный доступ.

## Когда НЕ использовать

- нужен серверный код: SSR, API-роуты, база данных, cron — Tuqo это не выполняет;
- один файл больше 50 МБ или сайт с гигабайтами медиа в чате без файловой системы —
  публикует CLI на машине человека (см. ниже);
- человек просит создать проект, ключ, изменить тариф, передать сайт другому
  пользователю — это только в панели https://app.tuqo.ru, дай ссылку.

## Подключение (один раз)

- Claude Code: `claude mcp add --transport http tuqo https://mcp.tuqo.ru/mcp` — OAuth
  сам откроет браузер; переавторизация — команда `/mcp`.
- Cursor: `.cursor/mcp.json` → `{"mcpServers": {"tuqo": {"url": "https://mcp.tuqo.ru/mcp"}}}`.
- Codex CLI: `codex mcp add tuqo --url https://mcp.tuqo.ru/mcp` → `codex mcp login tuqo`.
- Без браузера: ключ `tqk_…` из панели (проект → «API-ключи») заголовком
  `Authorization: Bearer tqk_…`. Windsurf, Cline, Kimi, OpenCode, claude.ai, ChatGPT —
  https://tuqo.ru/ai.md; Gemini CLI, Continue, Zed, Qwen Code, GigaChat — https://tuqo.ru/connect/
- У человека нет аккаунта Tuqo: черновик без регистрации —
  `POST https://api.tuqo.ru/instant/deploy` с `{"files":[…],"accept_terms":true}`;
  первый вызов без `accept_terms` вернёт правила — покажи их человеку. Ответ: `draft_url`
  (24 часа) и `claim_url` (человек заберёт сайт в бесплатный аккаунт).

## Порядок действий

1. `whoami` — проект и права (`readonly` / `editor` / `full`). Нет `editor` — деплой
   невозможен, скажи человеку.
2. `list_sites` — **никогда не создавай новый сайт, чтобы обновить существующий**:
   найди его по названию или поддомену.
3. Новый сайт: `create_site(name, subdomain)`. В ответе `url` и `form_endpoint`.
4. Публикация: `deploy_files(site_id, files)` — **полный** набор файлов (не патч),
   `index.html` в корне, ссылки относительные, бинарные файлы с `encoding: "base64"`.
   `package.json` не принимается: сборочный проект → `deploy_site(site_id, source_base64)`
   с архивом (Tuqo соберёт на Node 20) или Git CD из панели.
5. Правка живого сайта: `get_manifest(site_id)` → неизменные файлы передай как
   `{path, sha256}` без содержимого, изменённые — с `content`. Медиа не перезаливаются.
6. Дождись публикации: `get_deploy_status(deploy_id)` с паузой `recommended_poll_ms`;
   при `failed` — `get_logs(deploy_id)` и текст ошибки человеку как есть.
7. **Покажи `url`** — это главный результат. Затем `recommendations` («Что улучшить»):
   перечисли коротко и предложи исправить, не переделывай без спроса.
8. Следующий шаг — один, по ситуации: свой домен (`set_custom_domain` → TXT-запись →
   `verify_domain`, поле `a_record` скажет, куда указывает домен), форма (`form_endpoint`
   + `get_forms_overview` даст готовый сниппет), закрытый доступ (`set_site_password`
   вернёт пароль один раз — отдай сразу), предпросмотр (`activate: false` →
   `get_preview_url` → `activate_deploy`).

## Правила

- Секреты (`tqk_…`, токены, ключи API) **никогда** не кладутся в файлы сайта — раздача
  публичная. Проверка «Что улучшить» это поймает, но лучше не доводить.
- Путь `/__tuqo/` зарезервирован платформой — не используй.
- Удаление (`delete_site`, `delete_domain`) — только с `confirm: true` и после явного
  подтверждения человека; сайт попадает в корзину на 24 часа (`restore_site`).
- Ретрай после таймаута — с тем же `idempotency_key`, иначе появится второй деплой.
- Говори с человеком о его сайте, а не о JSON, `site_id` и слагах.
- Лимиты и цены не выдумывай: тариф называет сама ошибка `402`, сетка — https://tuqo.ru/pricing.md

## Тяжёлые сайты — CLI

Если файлов много или они большие, байты не должны идти через контекст:
`npx @tuqo/cli deploy ./dist --site <site_id> --wait` с ключом в `TUQO_API_KEY`.
CLI загружает по манифесту с дедупом: повторный деплой не гоняет совпадающие файлы.
Предпросмотр из CLI: `--no-activate`, затем `tuqo preview` / `tuqo promote`.

## Ошибки

- `401` — подключение не авторизовано: в Claude Code `/mcp` → переавторизация; для
  ключа — проверить заголовок, ключ мог быть отозван в панели.
- `402` — лимит тарифа (сайты, память, заявки, функция недоступна на тарифе): текст
  ошибки называет тариф и цену; передай человеку и ссылку https://tuqo.ru/pricing/
- `403` — не хватает прав (`readonly` не деплоит, `editor` не меняет домены) — нужен
  ключ или OAuth-грант с бо́льшими правами.
- `409` у `activate_deploy` — копия уже вычищена по лимиту хранимых версий; выбери
  другой деплой из `list_deploys`.
- `429` — слишком часто; подожди `recommended_poll_ms` или минуту.
- Сборка `failed` — `get_logs(deploy_id)`; типичные причины: нет `index.html` в корне,
  вложенная папка в архиве, `npm run build` без скрипта `build`, нет каталога вывода.
- Домен не открывается после `verify_domain` — смотри `a_record.expected` и передай
  человеку, какую A-запись прописать; HTTPS выпускается автоматически после этого.

## Ссылки

- Инструкция подключения: https://tuqo.ru/ai.md · одной строкой: https://tuqo.ru/prompt.md
- Карточка сервера: https://mcp.tuqo.ru/.well-known/mcp.json
- REST API: https://tuqo.ru/api/ · OpenAPI: https://tuqo.ru/openapi.json
- Формы: https://tuqo.ru/forms/ · Доступ: https://tuqo.ru/zakrytyy-dostup/ · Домены: https://tuqo.ru/guides/privyazat-svoy-domen-k-statike/
- Черновики без регистрации: https://tuqo.ru/drop/
