Crevio
官方將工作委派給一個經營您小型業務(產品、訂單、客戶、電子郵件、網站)的 AI 代理,或對 Crevio API 及 3,000 多個已連接的應用程式執行腳本。
你可以用 Crevio MCP 做什麼?
- 用自然語言委派工作 — 用
ask_crevio把像「退款 jane@… 的最後一筆訂單」這樣的任務交給 Crevio 代理,並取回該次執行的最終回覆。 - 追蹤長時間執行的工作 — 以非阻塞方式啟動工作,接著檢查狀態、繼續對話,並在執行完成時回應核准關卡。
- 對 Crevio API 執行腳本 — 使用
run_script在你帳戶的電腦上執行 JavaScript,串接 API 呼叫與已連接的整合,並回傳轉換後的資料。 - 探索可呼叫的整合 — 在撰寫腳本前,先用
list_integrations和list_integration_tools列出可用的命名空間及其函式。 - 訂閱帳戶事件 — 為
order.paid等事件註冊 webhook 訂閱,以接收經簽章的推送,而非輪詢。
託管 MCP 伺服器
npx add-mcp 'https://mcp.crevio.co/mcp'可安裝到 Claude Code、Codex、Cursor 等客戶端
文件
MCP 伺服器
將 Claude、Cursor 或任何相容於 MCP 的代理連接到你的 Crevio 帳戶:透過 ask_crevio 將工作委派給 Crevio 代理、追蹤並繼續執行作業,以及對整個 Crevio API 與你的整合執行指令碼。
Crevio MCP 伺服器讓任何相容於 MCP 的代理將工作委派給 Crevio——而當它想自行掌控時,也能對整個 Crevio API 與你的整合執行指令碼。 一個伺服器,兩種介面:
- 委派 —
ask_crevio以自然語言將工作交給 Crevio 代理(「退款給 jane@… 的最後一筆訂單」、「撰寫並排程本週的貼文」)並回傳結果。較長的工作會在背景執行;你可以透過 runs 追蹤它們、繼續對話、回應核准關卡,並閱讀逐字稿。 - 指令碼 —
list_integrations與list_integration_tools顯示指令碼可以呼叫哪些功能,而run_script會在你帳戶的 Crevio 電腦上執行 JavaScript,對每個 REST 端點與已連接的整合進行操作,並具備與 API 相同的授權與驗證。
| URL | https://mcp.crevio.co/mcp |
| 傳輸方式 | Streamable HTTP(無狀態——每個請求皆自成一體) |
| 驗證 | Authorization: Bearer <API token> — 與你用於 REST 的相同 API 權杖 — 或 X-Api-Key: <API token>,供只能設定自訂標頭的用戶端使用。亦支援 OAuth 2.1;請參閱連線。 |
| 探索 | https://mcp.crevio.co/mcp/server-card |
[!NOTE]
初次接觸 Crevio 的代理式模型嗎?請先閱讀 AI 與代理概覽,了解 MCP、Tasks 與 Events 如何相互配合。在底層,委派的工作就是一個帶有單次執行的 Task,因此這裡的一切也會顯示在你的儀表板中,並可透過
/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"
}
- 當你的用戶端接受串流回覆時(
Accept: text/event-stream,MCP 用戶端預設會送出),等待時間預設為且上限為 300 秒,否則為 90 秒。串流回覆在等待期間每 10 秒會送出一次進度通知——在_meta中傳入progressToken即可接收。傳入timeout_seconds可縮短等待時間。 - 若等待結束時執行仍在進行,該回覆並非錯誤:它就是帶有
wait_timed_out: true的那次執行。使用其id呼叫wait_for_run以繼續等待,且不要再次呼叫ask_crevio——那會讓工作再啟動一次。不會遺失任何內容;該次執行會在 Crevio 端繼續進行。 idempotency_key讓重試變得安全:相同的鍵會回傳第一次呼叫所啟動的執行,而不是啟動(並支付)另一次執行。請務必傳入一個。speed: "faster"讓代理減少思考,適用於較快得到答案比深度更重要的簡單工作。預設值為smarter。- 當你的程式需要物件而非文字時,
response_format接受 JSON Schema(或 OpenAI 的{type: "json_schema", json_schema: {schema}})。代理會被告知該結構描述,而完成的執行會在json中帶有經過驗證的解析值,或在json_error中帶有失敗原因。start_chat與send_message也接受它。 - 代理在執行期間交付的檔案會回傳於
artifacts。使用get_file_download_url將產物的id換成下載連結。 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),而不是將訊息送出兩次。- 當執行因整合動作而暫停時(
needs_input帶有pending_approval_ids),使用resolve_approvals——一次核准或拒絕所有待處理的 id,執行便會恢復。 cancel_run用於停止處於待處理、執行中或等待中的執行。
chat 是對話,而 run 是其中一輪工作。list_runs 顯示帳戶上的每一次執行(傳入 chat_id 則只顯示單一對話的執行)——包括委派的工作與你排程的 Tasks——而 list_chats 與 get_chat 則瀏覽對話本身,list_messages 則讀取對話的完整逐字稿,而不只是最終回覆。
指令碼:run_script
當已連接的代理想自行操作 Crevio 而非委派——或需要取回精確的資料——它會撰寫指令碼。run_script 會在你帳戶的 Crevio 電腦上以 bun 執行 JavaScript,不涉及代理回合。指令碼可以呼叫 Crevio API 以及你帳戶已連接的每個整合、串接任意數量的呼叫,並在資料回傳前進行轉換。
探索
list_integrations 列出指令碼可以呼叫的每個命名空間:crevioApi(整個 Crevio API,每個操作一個函式)、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
一次執行會回傳一個 script run(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 MB。較大的檔案會被略過。
完整工具參考
| 工具 | 用途 | 參數 |
|---|---|---|
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,除非該工具需要下列其中一個範圍。 ask_crevio、start_chat、send_message與cancel_run需要agent:run,而resolve_approvals還需要write。若沒有write,委派的工作會以唯讀方式執行。run_script、wait_for_script_run、get_script_run與cancel_script_run需要scripts:run。團隊金鑰永遠看不到這些工具,且若沒有write,指令碼無法變更任何內容。get_file_download_url需要files:read,而list_audit_events需要audit:read。whoami不需要任何範圍。
獲授 read_only 的 OAuth 權杖(當用戶端未要求任何範圍時的預設值)持有 read;獲授 read_write 的權杖則持有所有範圍並能看到所有工具。在範圍機制出現之前建立的 API 金鑰也是如此。
權杖無法使用的工具不會出現在 tools/list 中,呼叫它會回應「找不到工具」。除了範圍之外,若要限制代理能做的事,可以給它一個其資料是你樂意讓它存取的帳戶上的權杖,並在委派的工作上選擇 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 個字元——儀表板與 webhook 所顯示的內容 |
pending_approval_ids | 當為 needs_input 時:阻擋執行的整合核准,供 resolve_approvals 使用 |
error_message | failed 執行失敗的原因(cancel_run 之後為 "Cancelled by the caller") |
wait_timed_out、next_step | 當等待在執行結束前就結束時出現——它仍在執行中;next_step 說明如何追蹤它 |
credits_consumed | 執行的花費,以 AI 點數計 |
task_id、chat_id | 底層的 Task 與對話,供 REST API 與儀表板使用 |
執行也會觸發 task_run.completed、task_run.failed 與 task_run.needs_input webhook,並可透過 SSE 在 GET /v1/task_runs/:id/stream 串流。
MCP Tasks 與引導詢問
這些是你 MCP 用戶端的協定功能,與 Crevio 自身的 Tasks 不同。有了它們,用戶端會自行追蹤長時間的工作並回答核准,而不必呼叫 wait_for_run 與 resolve_approvals。兩者都需要 2026-07-28 協定,由你的用戶端選擇。沒有它們時,每個工具的行為如上所述。
非同步工具呼叫
伺服器實作了 MCP Tasks 擴充(io.modelcontextprotocol/tasks),在 /mcp 與 /chatgpt 上的 server/discover 中宣告。當請求在 _meta["io.modelcontextprotocol/clientCapabilities"].extensions 中宣告它時,這些工具最多等待 5 秒,然後傳回任務控制代碼("resultType": "task"),而不是讓請求保持開啟:ask_crevio、wait_for_run、帶有 timeout_seconds 的 send_message、run_script 與 wait_for_script_run。若執行在這 5 秒內完成,則會就地回應。
tasks/get傳回任務的status。working表示執行仍在進行中。一旦它變成completed,result就會包含該工具在沒有 tasks 時原本會傳回的內容。輪詢間隔為pollIntervalMs:代理執行為 3 秒,指令碼為 1 秒。tasks/update回答任務的inputRequests(見下文)。tasks/cancel停止執行,如同cancel_run或cancel_script_run。
任務就是執行本身,因此它的存續時間與執行相同(ttlMs 為 null)。以 failed 結束的執行仍會完成任務:在 result 內讀取其 status 與 error_message。任務本身的 failed 狀態則保留給協定錯誤使用。任務 ID 無法猜測,且只有啟動執行的帳戶與使用者能讀取它。未知或外來的 ID 會回應 -32602,而未宣告該擴充的請求會回應 -32021。
核准與問題
當用戶端宣告表單引導詢問(_meta["io.modelcontextprotocol/clientCapabilities"].elicitation)時,暫停於 needs_input 的執行會直接詢問使用者:
| 執行正在等待 | 用戶端會被要求 | 接受 | 拒絕或關閉 |
|---|---|---|---|
| 整合動作的核准 | 每個動作一份表單,以其核准 ID(apr_…)為鍵,描述將要傳送的內容 | 核准它 | 拒絕它 |
| 代理問題的答案 | 一份帶有 reply 欄位的表單 | 傳送回覆,執行繼續 | 將執行關閉為已完成 |
被關閉的核准即為拒絕,因此沒有明確的同意就不會執行任何事。你可以任意順序回答表單,也可以一次回答幾份。一旦每份表單都有答案,執行就會繼續,代理會一併得知所有決定。
- 有 tasks 時: 任務會移至
input_required,表單位於inputRequests中。使用tasks/update回答它們。 - 沒有 tasks 時: 工具會傳回
"resultType": "input_required",其中包含表單與requestState。以相同的參數再次呼叫同一個工具,並加上inputResponses與該確切的requestState。該狀態經過密封、繫結至工具及其參數,並在一小時後過期。 - 沒有表單引導詢問時: 不會有任何改變。執行會以
needs_input傳回,並為resolve_approvals提供pending_approval_ids,包括作為已完成的任務。
事件
伺服器實作了草擬中的 MCP Events 擴充(io.modelcontextprotocol/events),因此用戶端可以訂閱帳戶中發生的事情,例如 order.paid 或 email_message.received,並在無需輪詢的情況下做出反應。它在 /mcp 與 /chatgpt 上的 server/discover 中宣告。
事件類型與 webhook 相同,承載內容也相同: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。在 refreshBefore 之前以相同的值再次呼叫 events/subscribe 即可保留它;以 name、arguments 與 delivery.url 呼叫 events/unsubscribe 則會立即結束它。
- 驗證。 在首次傳遞至某個 URL 之前,Crevio 會對它 POST
{"type":"verification","challenge":"<nonce>"}。請在 5 秒內以2xx與{"challenge":"<nonce>"}回應。每個憑證會對每個 URL 驗證一次。 - 存續時間。 若沒有
ttlMs,訂閱會持續一天。建議的ttlMs會保留在 1 分鐘至 1 天之間。"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 秒) | 在大約 12 分鐘內最多再重試 4 次,然後捨棄 |
| 持續失敗一小時 | 傳遞會停止,直到你下次重新整理時重新開啟 |
| 在永不過期的訂閱上持續失敗 3 天 | Crevio 會 POST {"type":"terminated",…} 並刪除該訂閱 |
若憑證失去對帳戶的存取權(金鑰被刪除或過期、OAuth 存取被撤銷、使用者被移出帳戶),下一個事件會以帶有錯誤 -32024 的 terminated 封裝結束該訂閱。
它做不到的事
- 目前依設計僅支援 Webhook 傳遞。
events/poll與events/stream會回應-32026。當你無法接收 POST 時,請使用 webhooks API 或list_runs與 REST 端點。 - 不重播。
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.crevio.co 相同的 API 控制器,因此授權、驗證與錯誤訊息都與直接呼叫 API 完全相同。權杖的權限等同於你的帳戶:只連接你信任的代理,並從 Settings → Developers 撤銷權杖以立即切斷連線。
後續步驟
各用戶端的設定方式、OAuth 與 curl 範例。
每個委派作業所依據的 Task / Task Run 模型 — 以及如何排定週期性工作。
MCP、Tasks 與 Events 如何構成 Crevio 的代理式模型。
crevioApi與 REST 共用的結構、前綴與注意事項。
本文件建置並託管於 Mintlify,一個開發者文件平台。