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.
URLhttps://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

Для всего, на чём вы не хотите блокироваться — сборка сайта, исследовательская задача, массовая миграция:

  1. start_chat ставит работу в очередь и сразу возвращает запуск.
  2. wait_for_run (с ограничением) или get_run (мгновенно), пока status не станет completed, failed или needs_input.
  3. send_message продолжает разговор — дополнительные инструкции, исправления, ответы на вопрос, заданный агентом. Агент сохраняет свой контекст. На завершённом запуске это начинает новый запуск в том же разговоре; на запуске в состоянии needs_input это возобновляет его. Передайте timeout_seconds, чтобы дождаться ответа в том же вызове, и idempotency_key, чтобы повторный вызов вернул запуск, начатый первым (reused: true), вместо повторной отправки сообщения.
  4. resolve_approvals, когда запуск приостановлен на действии интеграции (needs_input с pending_approval_ids) — одобрите или отклоните все ожидающие id сразу, и запуск возобновится.
  5. 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:

ПолеЗначение
statuspending → 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_erroridempotency_key повторно использован с другим сообщениемПередайте новый ключ для нового сообщения
run_not_activecancel_run для уже завершённого запускаНичего — прочитайте его result
run_not_resumableУ запуска нет диалога для продолженияНачните новую задачу с ask_crevio
approvals_pendingsend_message для запуска, заблокированного согласованиямиСначала resolve_approvals
stale_resolutionОтправленные вами согласования не совпадают с ожидающим наборомget_run, затем повторно отправьте каждую запись pending_approval_ids
insufficient_creditsВ аккаунте не осталось AI-кредитовДобавьте кредиты в Crevio
resource_missingНет запуска/задачи с таким id в этом аккаунтеПроверьте id — запуски привязаны к аккаунту
validation_failedНеверный аргумент (например, неизвестный approval_mode)Исправьте аргумент
rate_limit_exceeded600 запросов в минуту на владельца, общий лимит с REST API — или слишком много выполняющихся запусков скриптовСделайте паузу до X-RateLimit-Reset (лимиты запросов) или дождитесь завершения запуска скрипта
forbiddenrun_script от того, кто не является администратором аккаунтаПопросите администратора или делегируйте с помощью ask_crevio
run_not_cancellablecancel_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.

Задачи (ваша AI-команда)

Модель Task / Task Run, на которой построена каждая делегированная задача — и как планировать повторяющуюся работу.

Обзор AI и агентов

Как MCP, задачи и события образуют агентную модель Crevio.

Соглашения API

Форматы, префиксы и подводные камни, которые crevioApi разделяет с REST.

Эта документация создана и размещена на Mintlify, платформе для документации разработчиков.