Crevio
официальныйДелегируйте работу ИИ-агенту, который ведёт ваш малый бизнес (товары, заказы, клиенты, электронная почта, сайты), или запускайте скрипты через API Crevio и более 3000 подключённых приложений.
Что можно делать с Crevio MCP?
- Поручайте задачи простым языком — Передайте агенту Crevio задачу вроде «верни деньги за последний заказ от jane@…» с помощью
ask_crevioи получите финальный ответ запуска. - Следите за длительными задачами — Запускайте задания без блокировки, затем проверяйте статус, продолжайте диалог и отвечайте на запросы подтверждения по мере завершения запусков.
- Запускайте скрипты против API Crevio — Используйте
run_script, чтобы выполнять JavaScript на компьютере вашего аккаунта, связывая вызовы API и подключённые интеграции и возвращая преобразованные данные. - Изучайте доступные интеграции — Просматривайте доступные пространства имён и их функции с помощью
list_integrationsиlist_integration_toolsперед написанием скрипта. - Подписывайтесь на события аккаунта — Регистрируйте подписку на вебхуки для таких событий, как
order.paid, и получайте подписанные доставки вместо опроса.
Размещённый MCP-сервер
npx add-mcp 'https://mcp.crevio.co/mcp'Устанавливается в Claude Code, Codex, Cursor и другие
Документация
MCP-сервер
Подключите Claude, Cursor или любого MCP-совместимого агента к своему аккаунту Crevio: поручайте работу агенту Crevio с помощью ask_crevio, отслеживайте и продолжайте запуски, а также выполняйте скрипты против всего API Crevio и ваших интеграций.
MCP-сервер Crevio позволяет любому MCP-совместимому агенту поручать работу Crevio — а когда он хочет управлять сам, выполнять скрипты против всего API Crevio и ваших интеграций. Один сервер, две поверхности:
- Делегирование —
ask_crevioпередаёт агенту Crevio задачу на простом языке («верни последний заказ от jane@…», «напиши и запланируй посты на эту неделю») и возвращает результат. Более длительные задачи выполняются в фоне; вы отслеживаете их как запуски, продолжаете разговор, отвечаете на запросы подтверждения и читаете расшифровку. - Скрипты —
list_integrationsиlist_integration_toolsпоказывают, что может вызвать скрипт, аrun_scriptвыполняет JavaScript на компьютере Crevio вашего аккаунта против каждой конечной точки REST и подключённой интеграции, с той же авторизацией и валидацией, что и API.
| URL | https://mcp.crevio.co/mcp |
| Транспорт | Streamable HTTP (без сохранения состояния — каждый запрос самодостаточен) |
| Аутентификация | Authorization: Bearer <API token> — тот же токен API, который вы используете для REST — или X-Api-Key: <API token> для клиентов, которые умеют задавать только пользовательский заголовок. Также поддерживается OAuth 2.1; см. Подключение. |
| Обнаружение | https://mcp.crevio.co/mcp/server-card |
[!NOTE]
Впервые знакомитесь с агентной моделью Crevio? Начните с обзора AI и агентов, чтобы увидеть, как MCP, Задачи и События сочетаются друг с другом. Под капотом делегированная задача является Задачей с одним запуском, поэтому всё здесь также видно в вашей панели управления и через
/v1/tasksи/v1/task_runs.
Настройка
1. Создайте токен API
В Crevio перейдите в Settings → Developers → API tokens и создайте токен. MCP-подключение имеет ровно те разрешения, что и токен за ним — всё, что может делать аккаунт.
2. Настройте свой клиент
Claude Code
claude mcp add --transport http crevio https://mcp.crevio.co/mcp \
--header "Authorization: Bearer $CREVIO_API_TOKEN"
Claude Desktop / Cursor / другие клиенты — добавьте в MCP-конфигурацию клиента (claude_desktop_config.json, ~/.cursor/mcp.json, …):
{
"mcpServers": {
"crevio": {
"url": "https://mcp.crevio.co/mcp",
"headers": {
"Authorization": "Bearer <CREVIO_API_TOKEN>"
}
}
}
}
Шаги для конкретных клиентов, OAuth и примеры сырого curl приведены на странице Подключение.
3. Проверьте с помощью whoami
Попросите подключённого агента вызвать whoami. Он возвращает аккаунт и пользователя за токеном, учётные данные, план, баланс кредитов, лимит запросов, лимиты ожидания и список инструментов — без аргументов, без побочных эффектов. Если whoami работает, всё остальное тоже будет работать.
{
"object": "whoami",
"account": { "id": "acct_7k2m…", "name": "Jane's Studio", "slug": "janes-studio" },
"user": { "id": "user_9qx…", "email": "jane@example.com", "name": "Jane Doe" },
"credential": { "type": "api_key", "id": "token_3fa…", "name": "Claude Desktop", "expires_at": null },
"plan": "Pro",
"credits": 1840,
"rate_limit": { "limit": 600, "window_seconds": 60 },
"limits": { "ask_timeout_default_seconds": 300, "ask_timeout_max_seconds": 300, "message_max_chars": 10000 },
"tools": ["whoami", "ask_crevio", "start_chat", "wait_for_run", "get_run", "list_chats", "get_chat", "send_message", "resolve_approvals", "cancel_run", "list_runs", "list_messages", "list_integrations", "list_integration_tools", "run_script", "wait_for_script_run", "get_script_run", "cancel_script_run"]
}
Рекомендуемые рабочие процессы
Разовые задачи: ask_crevio
Для работы, требующей суждения или написания текста. Один вызов запускает запуск, ждёт его и возвращает запуск с финальным ответом агента в result. Каждая задача — это полный запуск агента, от половины минуты до нескольких минут — чтобы читать или изменять данные напрямую, скрипт занимает секунды.
{
"name": "ask_crevio",
"arguments": {
"message": "Which three products made the most revenue this month, and how does that compare to last month?",
"idempotency_key": "monthly-top-products-2026-08"
}
}
{
"object": "task_run",
"id": "trun_8d1k…",
"task_id": "task_2nq…",
"task_name": "Which three products made the most revenue this month, and how does that…",
"chat_id": "aichat_5pz…",
"status": "completed",
"summary": "Top three by revenue this month: …",
"result": "Top three by revenue this month:\n1. Lightroom Presets Vol. 2 — $2,140 (+18% vs July)\n2. …",
"error_message": null,
"pending_approval_ids": [],
"credits_consumed": 4,
"started_at": "2026-08-20T09:14:02Z",
"completed_at": "2026-08-20T09:14:31Z",
"created_at": "2026-08-20T09:14:01Z"
}
- Ожидание по умолчанию и максимум составляет 300 секунд, когда ваш клиент принимает потоковый ответ (
Accept: text/event-stream, который MCP-клиенты отправляют по умолчанию), и 90 секунд в противном случае. Потоковый ответ отправляет уведомление о прогрессе каждые 10 секунд во время ожидания — передайтеprogressTokenв_meta, чтобы получать их. Передайтеtimeout_seconds, чтобы ждать меньше. - Если запуск всё ещё выполняется, когда ожидание заканчивается, ответ — не ошибка: это запуск с
wait_timed_out: true. Вызовитеwait_for_runс егоid, чтобы продолжить ожидание, и не вызывайтеask_crevioснова — это запустило бы задачу второй раз. Ничего не теряется; запуск продолжается на стороне Crevio. idempotency_keyделает повторные попытки безопасными: тот же ключ возвращает запуск, начатый первым вызовом, вместо запуска (и оплаты) ещё одного. Всегда передавайте его.speed: "faster"заставляет агента думать меньше, для простых задач, где быстрый ответ важнее глубины. По умолчанию —smarter.response_formatпринимает JSON Schema (или{type: "json_schema", json_schema: {schema}}от OpenAI), когда вашей программе нужен объект, а не текст. Агенту сообщается схема, и завершённый запуск несёт разобранное значение вjson, проверенное по ней, или причину сбоя вjson_error.start_chatиsend_messageтоже принимают её.- Файлы, доставленные агентом во время запуска, возвращаются в
artifacts. Обменяйтеidартефакта на ссылку для скачивания с помощьюget_file_download_url. approval_modeпо умолчанию —autonomous.supervisedзаставляет запуск приостанавливаться вneeds_inputперед каждой контролируемой записью, пока вы не ответите на егоpending_approval_ids(запуск, которому нечего одобрять, завершается со своим предложением; ответьтеsend_message, чтобы действовать по нему);read_onlyзапрещает записи.
Длительные задачи: start_chat → wait_for_run → send_message
Для всего, на чём вы не хотите блокироваться — сборка сайта, исследовательская задача, массовая миграция:
start_chatставит работу в очередь и сразу возвращает запуск.wait_for_run(с ограничением) илиget_run(мгновенно), покаstatusне станетcompleted,failedилиneeds_input.send_messageпродолжает разговор — дополнительные инструкции, исправления, ответы на вопрос, заданный агентом. Агент сохраняет свой контекст. На завершённом запуске это начинает новый запуск в том же разговоре; на запуске в состоянииneeds_inputэто возобновляет его. Передайтеtimeout_seconds, чтобы дождаться ответа в том же вызове, иidempotency_key, чтобы повторный вызов вернул запуск, начатый первым (reused: true), вместо повторной отправки сообщения.resolve_approvals, когда запуск приостановлен на действии интеграции (needs_inputсpending_approval_ids) — одобрите или отклоните все ожидающие id сразу, и запуск возобновится.cancel_run, чтобы остановить запуск, который ожидает, выполняется или ждёт.
Чат — это разговор, а запуск — один этап работы внутри него. list_runs показывает каждый запуск в аккаунте (передайте chat_id, чтобы получить запуски только одного разговора) — как делегированные задачи, так и ваши запланированные Задачи — в то время как list_chats и get_chat просматривают сами разговоры, а list_messages читает полную расшифровку чата, а не только финальный ответ.
Скрипты: run_script
Когда подключённый агент хочет управлять самим Crevio, а не делегировать — или ему нужны точные данные обратно — он пишет скрипт. run_script выполняет JavaScript на компьютере Crevio вашего аккаунта с помощью bun, без хода агента. Скрипт может вызывать API Crevio и каждую интеграцию, подключённую к вашему аккаунту, связывать сколько угодно вызовов и преобразовывать данные перед возвратом.
Обнаружение
list_integrations называет каждое пространство имён, которое может вызвать скрипт: crevioApi (весь API Crevio, одна функция на операцию), platform (собственные инструменты Crevio) и по одному на каждую подключённую интеграцию (pdGmail, mcpLinear, …). list_integration_tools перечисляет функции одного пространства имён, каждую с её параметрами в виде типа TypeScript, признаком того, только ли она читает, требует ли она подтверждения, и фрагментом, который run_script принимает после того, как вы его заполните. В crevioApi сотни операций, поэтому сузьте его с помощью search:
{ "namespace": "crevioApi", "search": "price variant create" }
Выполнение
tools.<namespace>.<function>(args) выполняет вызов. Верхнеуровневый await работает, каждый вызов возвращает свой результат и выбрасывает исключение при сбое, а последнее выражение скрипта — его результат.
const product = await tools.crevioApi.createProduct({ body: { name: "My Course", slug: "my-course" } });
await tools.crevioApi.createPriceVariant({
body: { product: product.id, name: "Standard", amount_type: "fixed", amount: 4900, currency: "usd", billing_type: "one_time" },
});
await tools.crevioApi.updateProduct({ id_or_slug: product.id, body: { status: "active" } });
product.id
Чтения принимают свои параметры напрямую (listOrders({ status: "succeeded" })); записи передают тело запроса под body, с параметрами пути рядом.
Передавайте значения с помощью args (до 16 строк); скрипт читает их из глобальной переменной args. Файлы, записанные в каталог, названный глобальной переменной outputDir, возвращаются как artifacts в запуске:
const { data } = await tools.crevioApi.listOrders({ status: "succeeded", limit: Number(args[0]) });
await Bun.write(`${outputDir}/orders.csv`, data.map((o) => o.id).join("\n"));
data.length
Запуск возвращает запуск скрипта (srun_…): его status (queued → in_progress → completed, failed, cancelled или timed_out), result, то, что скрипт напечатал в output, его error и calls — каждый сделанный им вызов инструмента с его HTTP-статусом, так что скрипт, перехвативший ошибку, всё равно показывает, какой вызов не удался. run_script ждёт столько, сколько может ask_crevio (300 секунд при потоковом ответе, иначе 90; передайте wait_seconds, чтобы ждать меньше). Запуск, который занимает больше времени, возвращается с wait_timed_out: true и своим id — это не ошибка: продолжайте ждать с помощью wait_for_script_run. Повторный вызов run_script запустил бы скрипт дважды, если только вы не передадите тот же idempotency_key.
Вызовы crevioApi проходят через те же контроллеры, что и api.crevio.co, поэтому соглашения API применяются без изменений: связи — это простые имена с id с префиксом (product: "prod_abc", а не product_id), деньги — в центах, конечные точки списков возвращают {object: "list", data: [...]}, а продукту нужен ценовой вариант, прежде чем он сможет стать active. Курсы и другой контент — это опыты (listExperiences), а не продукты.
Ограничения:
- Кто: только администраторы аккаунта. Скрипт выполняется от вашего имени — включая ваши личные интеграции — на компьютере, который использует вся ваша команда.
- Тайм-аут:
timeout_secondsот 1 до 600 (по умолчанию 300). Компьютеру может потребоваться сначала проснуться, что может добавить до примерно 20 секунд. - Параллелизм: не более 4 запусков одновременно на пользователя и 8 на аккаунт.
- Подтверждения: скрипт не может остановиться и запросить подтверждение. Вызов, который в нём нуждается (
requires_approvalв списке), завершается сapproval_required: настройте это действие на автоматическое выполнение в Settings → Integrations или делегируйте задачу с помощьюask_crevioвместо этого. - Отмена: можно отменить только запуск в состоянии
queued. Выполняющийся скрипт работает до своего конца или до тайм-аута. - Выходные файлы: не более 20 на запуск, каждый не более 50 МБ. Более крупные файлы опускаются.
Полный справочник инструментов
| Инструмент | Назначение | Аргументы |
|---|---|---|
whoami | Определить аккаунт, пользователя, учётные данные, план, кредиты, лимиты и инструменты | — |
ask_crevio | Делегировать задачу и дождаться результата | message (обязательный), timeout_seconds, approval_mode, speed, response_format, idempotency_key |
start_chat | Делегировать задачу без ожидания | message (обязательный), approval_mode, speed, response_format, idempotency_key |
wait_for_run | Ожидать (с ограничением) завершения запуска | run_id (обязательный), timeout_seconds |
get_run | Получить статус запуска, сводку, ожидающие подтверждения и финальный ответ | run_id (обязательный) |
list_chats | Перечислить чаты аккаунта, начиная с самых новых | search, limit, starting_after, ending_before |
get_chat | Получить название чата, его тип и последний запуск | chat_id (обязательный) |
send_message | Продолжить чат; при необходимости дождаться ответа | chat_id, message (обязательный), timeout_seconds, response_format, idempotency_key |
resolve_approvals | Подтвердить/отклонить действия интеграций, на которых приостановлен запуск | run_id, approvals: [{id, approved, reason}] (обязательный) |
cancel_run | Остановить ожидающий, выполняющийся или приостановленный запуск | run_id (обязательный) |
list_runs | Перечислить запуски аккаунта, начиная с самых новых | status, task_id, chat_id, limit, starting_after, ending_before |
list_messages | Прочитать сообщения чата, начиная с самых старых | chat_id (обязательный), limit, ending_before |
list_integrations | Назвать все пространства имён, которые может вызывать скрипт | — |
list_integration_tools | Перечислить функции пространства имён с параметрами и фрагментами кода | namespace (обязательный), search, limit, offset |
run_script | Запустить JavaScript на компьютере аккаунта и дождаться результата | code (обязательный), args, timeout_seconds, wait_seconds, idempotency_key |
wait_for_script_run | Ожидать (с ограничением) завершения запуска скрипта | run_id (обязательный), wait_seconds |
get_script_run | Прочитать статус и результат запуска скрипта | run_id (обязательный) |
cancel_script_run | Отменить запуск скрипта, который ещё не начался | run_id (обязательный) |
get_file_download_url | Обменять id артефакта (art_…) на ссылку для скачивания, действительную 15 минут | file_id (обязательный) |
list_audit_events | Перечислить события аудита аккаунта, начиная с самых новых. Только для плана Enterprise. Требуется область audit:read, а если учётные данные действуют от имени человека — администратор | action, actor_type, entity_type, entity_id, after, limit, starting_after, ending_before |
То, какие инструменты видит подключение, зависит от его учётных данных:
API-ключи и OAuth-токены используют одни и те же области, и подключение видит инструменты, разрешённые областями его учётных данных:
readдля инструментов, которые читают,writeдля остальных, если только инструменту не нужна одна из областей ниже.agent:runдляask_crevio,start_chat,send_messageиcancel_run, а такжеresolve_approvalsвместе сwrite. Безwriteделегированная работа выполняется только в режиме чтения.scripts:runдляrun_script,wait_for_script_run,get_script_runиcancel_script_run. Ключ команды никогда их не видит, а безwriteскрипт не может ничего изменить.files:readдляget_file_download_url, иaudit:readдляlist_audit_events.whoamiне требует ничего.
OAuth-токен, которому предоставлена read_only (по умолчанию, когда клиент не запрашивает никаких областей), имеет read; токен, которому предоставлена read_write, имеет все области и видит все инструменты. Так же и API-ключ, созданный до появления областей.
Инструмент, который токен не может использовать, не появляется в tools/list, а при его вызове возвращается «Tool not found». Помимо областей, ограничивайте возможности агента, выдавая ему токен на аккаунт, данные которого вы готовы ему доверить, и выбирая approval_mode для делегированных задач.
Объект запуска
Инструменты делегирования возвращают запуск (trun_…) — тот же объект, что и GET /v1/task_runs/:id, плюс result и chat_id:
| Поле | Значение |
|---|---|
status | pending → running → completed / failed, или needs_input, когда агент ждёт вас |
result | Финальный ответ агента, до 24 000 символов (присутствует, когда запуск завершён) |
json, json_error | При наличии response_format: разобранный и проверенный ответ, либо причина, по которой он не является допустимым JSON для схемы |
artifacts | Файлы, доставленные запуском, каждый с {id, filename, content_type, size}; скачивайте с помощью get_file_download_url |
summary | Первые 500 символов ответа — то, что показывают панель управления и вебхуки |
pending_approval_ids | Когда needs_input: подтверждения интеграций, блокирующие запуск, для resolve_approvals |
error_message | Причина сбоя запуска со статусом failed ("Cancelled by the caller" после cancel_run) |
wait_timed_out, next_step | Присутствуют, когда ожидание закончилось до завершения запуска — он всё ещё выполняется; next_step указывает, как за ним следить |
credits_consumed | Стоимость запуска в кредитах ИИ |
task_id, chat_id | Лежащие в основе Task и беседа, для REST API и панели управления |
Запуски также вызывают вебхуки task_run.completed, task_run.failed и task_run.needs_input и могут передаваться по SSE по адресу GET /v1/task_runs/:id/stream.
MCP Tasks и elicitation
Это протокольные возможности вашего MCP-клиента, отдельные от собственных Tasks Crevio. С ними клиент отслеживает длительные задачи и сам отвечает на запросы подтверждения, вместо того чтобы вызывать wait_for_run и resolve_approvals. Обе возможности требуют протокола 2026-07-28, который выбирает ваш клиент. Без них каждый инструмент ведёт себя так, как описано выше.
Асинхронные вызовы инструментов
Сервер реализует расширение MCP Tasks (io.modelcontextprotocol/tasks), объявляемое в server/discover как на /mcp, так и на /chatgpt. Когда запрос объявляет его в _meta["io.modelcontextprotocol/clientCapabilities"].extensions, эти инструменты ждут не более 5 секунд, а затем возвращают дескриптор задачи ("resultType": "task") вместо того, чтобы держать запрос открытым: ask_crevio, wait_for_run, send_message с timeout_seconds, run_script и wait_for_script_run. Запуск, завершившийся в эти 5 секунд, получает ответ на месте.
tasks/getвозвращаетstatusзадачи.workingозначает, что запуск всё ещё идёт. Когда он станетcompleted, вresultбудет ровно то, что вернул бы инструмент без задач. Опрашивайте с интерваломpollIntervalMs: 3 секунды для запусков агента, 1 секунда для скриптов.tasks/updateотвечает наinputRequestsзадачи (см. ниже).tasks/cancelостанавливает запуск, какcancel_runилиcancel_script_run.
Задача — это сам запуск, поэтому она существует столько же, сколько запуск (ttlMs равно null). Запуск, завершившийся со статусом failed, всё равно завершает задачу: читайте его status и error_message внутри result. Собственный статус задачи failed сохраняется для протокольных ошибок. ID задачи невозможно угадать, и прочитать её могут только аккаунт и пользователь, запустившие запуск. Неизвестный или чужой ID возвращает -32602, а запрос, не объявляющий расширение, возвращает -32021.
Подтверждения и вопросы
Когда клиент объявляет form elicitation (_meta["io.modelcontextprotocol/clientCapabilities"].elicitation), запуск, приостановленный в состоянии needs_input, спрашивает пользователя напрямую:
| Запуск ожидает | У клиента запрашивается | Принять | Отклонить или закрыть |
|---|---|---|---|
| Подтверждения действий интеграций | Одна форма на каждое действие, с ключом по его ID подтверждения (apr_…), описывающая, что будет отправлено | Подтверждает его | Отклоняет его |
| Ответа на вопрос агента | Одна форма с полем reply | Отправляет ответ, и запуск продолжается | Закрывает запуск как завершённый |
Закрытое подтверждение считается отклонением, поэтому ничего не выполняется без явного согласия. Вы можете отвечать на формы в любом порядке и по нескольку за раз. Запуск возобновляется, когда на каждую форму есть ответ, и агент получает все решения вместе.
- С задачами: задача переходит в
input_requiredс формами вinputRequests. Отвечайте на них с помощьюtasks/update. - Без задач: инструмент возвращает
"resultType": "input_required"с формами иrequestState. Вызовите тот же инструмент снова с теми же аргументами, плюсinputResponsesи именно этотrequestState. Состояние запечатано, привязано к инструменту и его аргументам и истекает через час. - Без form elicitation: ничего не меняется. Запуск возвращается со статусом
needs_inputиpending_approval_idsдляresolve_approvals, в том числе как завершённая задача.
События
Сервер реализует черновое расширение MCP Events (io.modelcontextprotocol/events), чтобы клиент мог подписаться на происходящее в аккаунте, например на order.paid или email_message.received, и реагировать без опроса. Оно объявляется в server/discover как на /mcp, так и на /chatgpt.
Типы событий те же, что у вебхуков, и полезная нагрузка тоже: data.object — это ресурс ровно в том виде, в каком его возвращает соответствующий эндпоинт API. events/list перечисляет все типы с их payloadSchema.
Подписка
{
"jsonrpc": "2.0", "id": 2, "method": "events/subscribe",
"params": {
"name": "order.paid",
"arguments": {},
"delivery": { "mode": "webhook", "url": "https://hooks.example.com/crevio", "secret": "whsec_<base64 of 24–64 random bytes>" },
"cursor": null,
"ttlMs": 86400000
}
}
Ответ содержит id подписки (mcpsub_…), стабильный для одних и тех же учётных данных, URL, события и аргументов, и refreshBefore. Вызовите events/subscribe снова с теми же значениями до refreshBefore, чтобы продлить её; events/unsubscribe с name, arguments и delivery.url завершает её немедленно.
- Проверка. Перед первой доставкой на URL Crevio отправляет POST с
{"type":"verification","challenge":"<nonce>"}на него. Ответьте2xxи{"challenge":"<nonce>"}в течение 5 секунд. Каждые учётные данные проверяют каждый URL один раз. - Срок действия. Без
ttlMsподписка действует один день. ПредложенныйttlMsпринимается в пределах от одной минуты до одного дня."ttlMs": nullзапрашивает бессрочную подписку, и Crevio её предоставляет. - Ротация секрета. Отправьте новый
delivery.secretпри продлении. В течение 10 минут доставки несут подписи от обоих секретов. - Ограничения. 100 активных подписок на аккаунт. Подписка только читает, поэтому токен с
read_onlyможет её оформить.
Доставки
Каждое событие — это POST с {"eventId", "name", "timestamp", "data"}, подписанный по Standard Webhooks вашим секретом (webhook-id, webhook-timestamp, webhook-signature) и несущий X-MCP-Subscription-Id. Проверяйте подпись, прежде чем доверять телу, и устраняйте дубликаты по eventId.
| Что делает ваш эндпоинт | Что происходит |
|---|---|
Отвечает 2xx | Доставлено |
Отвечает 410 или 413 | Отбрасывается без повторных попыток |
| Сбой или тайм-аут (5 секунд) | Повторяется до 4 раз в течение примерно 12 минут, затем отбрасывается |
| Продолжает сбоить в течение часа | Доставки прекращаются, пока ваше следующее продление не включит их снова |
| Продолжает сбоить 3 дня при бессрочной подписке | Crevio отправляет POST с {"type":"terminated",…} и удаляет подписку |
Если учётные данные теряют доступ к аккаунту (ключ удалён или истёк, доступ OAuth отозван, пользователь удалён из аккаунта), следующее событие завершает подписку конвертом terminated с ошибкой -32024.
Чего она не может
- Доставка только через вебхуки — пока так задумано.
events/pollиevents/streamотвечают-32026. Используйте API вебхуков илиlist_runsи REST-эндпоинты, когда вы не можете принимать POST-запросы. - Без повторной доставки.
cursorвсегдаnull: события, произошедшие, пока подписка была неактивна, позже не доставляются. После перерыва читайте текущее состояние через инструменты. - Без фильтров. Типы событий не принимают
arguments. Подписка получает каждое событие своего типа в аккаунте.
Ошибки используют коды расширения: -32602 — неверные параметры (плохой URL, секрет или аргументы), -32023 — неизвестное событие или подписка, -32024 — нет аутентифицированного субъекта или доступ утрачен, -32025 — лимит подписок, -32026 — режим доставки не предлагается, а -32027 — колбэк не прошёл проверку, при этом data.reason равен одному из connection_refused, timeout, tls_error, http_4xx, http_5xx или challenge_failed.
Ошибки
Сбои аутентификации — это HTTP 401/403 на самом запросе (WWW-Authenticate указывает на метаданные OAuth). Сбои инструментов возвращаются как результат инструмента с isError: true и телом JSON:
{ "error": "run_busy", "message": "Run trun_8d1k… is still in progress; wait for it to settle before sending more.", "http_status": 409 }
error | Значение | Что делать |
|---|---|---|
run_busy | В этом диалоге всё ещё выполняется запуск | Дождитесь его, затем send_message |
account_at_capacity | В аккаунте уже идут 5 запусков (http_status: 429) | Повторите попытку после retry_after_seconds |
idempotency_error | idempotency_key повторно использован с другим сообщением | Передайте новый ключ для нового сообщения |
run_not_active | cancel_run для уже завершённого запуска | Ничего — прочитайте его result |
run_not_resumable | У запуска нет диалога для продолжения | Начните новую задачу с ask_crevio |
approvals_pending | send_message для запуска, заблокированного согласованиями | Сначала resolve_approvals |
stale_resolution | Отправленные вами согласования не совпадают с ожидающим набором | get_run, затем повторно отправьте каждую запись pending_approval_ids |
insufficient_credits | В аккаунте не осталось AI-кредитов | Добавьте кредиты в Crevio |
resource_missing | Нет запуска/задачи с таким id в этом аккаунте | Проверьте id — запуски привязаны к аккаунту |
validation_failed | Неверный аргумент (например, неизвестный approval_mode) | Исправьте аргумент |
rate_limit_exceeded | 600 запросов в минуту на владельца, общий лимит с REST API — или слишком много выполняющихся запусков скриптов | Сделайте паузу до X-RateLimit-Reset (лимиты запросов) или дождитесь завершения запуска скрипта |
forbidden | run_script от того, кто не является администратором аккаунта | Попросите администратора или делегируйте с помощью ask_crevio |
run_not_cancellable | cancel_script_run для уже начавшегося запуска | Дождитесь его с помощью wait_for_script_run |
Скрипт, который выбрасывает исключение, всё равно возвращается как запуск скрипта с status: "failed", его error и созданным им calls — сам run_script выдаёт ошибку только тогда, когда запуск не удалось начать или ожидание завершилось.
Безопасность
Каждый инструмент работает в границах тенанта вашего аккаунта. Делегированные задачи запускают агента Crevio с теми разрешениями, которые уже есть у вашего аккаунта. run_script работает на компьютере Crevio вашего аккаунта от имени вызывающего администратора; его вызовы tools проходят через те же настройки согласования, которым подчиняется агент, и те же контроллеры API, что и api.crevio.co, поэтому авторизация, валидация и сообщения об ошибках идентичны прямым вызовам API. Токены так же могущественны, как ваш аккаунт: подключайте только доверенных агентов и отзывайте токен в Settings → Developers, чтобы мгновенно разорвать соединение.
Дальнейшие шаги
Настройка для каждого клиента, OAuth и примеры curl.
Модель Task / Task Run, на которой построена каждая делегированная задача — и как планировать повторяющуюся работу.
Как MCP, задачи и события образуют агентную модель Crevio.
Форматы, префиксы и подводные камни, которые
crevioApiразделяет с REST.
Эта документация создана и размещена на Mintlify, платформе для документации разработчиков.