Crevio
आधिकारिककाम को एक AI एजेंट को सौंपें जो आपके छोटे व्यवसाय (उत्पाद, ऑर्डर, ग्राहक, ईमेल, साइटें) को चलाता है, या Crevio API और 3,000+ कनेक्टेड ऐप्स के विरुद्ध स्क्रिप्ट चलाएँ।
Crevio MCP के साथ आप क्या कर सकते हैं?
- सादे अंग्रेज़ी में काम सौंपें — Crevio एजेंट को "jane@… से आखिरी ऑर्डर रिफंड करें" जैसा कोई काम
ask_crevioके साथ दें और रन का अंतिम उत्तर वापस पाएं। - लंबे समय तक चलने वाले काम पर नज़र रखें — काम को ब्लॉक किए बिना शुरू करें, फिर स्थिति जांचें, बातचीत जारी रखें, और रन पूरा होने पर अनुमोदन गेट्स का उत्तर दें।
- Crevio API के विरुद्ध स्क्रिप्ट चलाएं — अपने खाते के कंप्यूटर पर JavaScript निष्पादित करने के लिए
run_scriptका उपयोग करें, 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 खाते से जोड़ें: ask_crevio के साथ काम Crevio एजेंट को सौंपें, रन को फ़ॉलो करें और जारी रखें, और पूरे Crevio API तथा अपने इंटीग्रेशन के विरुद्ध स्क्रिप्ट चलाएँ।
Crevio MCP सर्वर किसी भी MCP-संगत एजेंट को Crevio को काम सौंपने देता है — और, जब वह नियंत्रण स्वयं चाहता है, तो पूरे Crevio API तथा आपके इंटीग्रेशन के विरुद्ध स्क्रिप्ट चलाने देता है। एक सर्वर, दो सतहें:
- डेलिगेशन —
ask_crevioCrevio एजेंट को सरल भाषा में काम सौंपता है ("jane@… के अंतिम ऑर्डर को रिफ़ंड करें", "इस सप्ताह की पोस्ट लिखें और शेड्यूल करें") और परिणाम लौटाता है। लंबे काम पृष्ठभूमि में चलते हैं; आप उन्हें runs के रूप में फ़ॉलो करते हैं, बातचीत जारी रखते हैं, अनुमोदन गेट का उत्तर देते हैं, और ट्रांसक्रिप्ट पढ़ते हैं। - स्क्रिप्ट —
list_integrationsऔरlist_integration_toolsदिखाते हैं कि एक स्क्रिप्ट क्या कॉल कर सकती है, औरrun_scriptआपके खाते के Crevio कंप्यूटर पर हर REST एंडपॉइंट और जुड़े इंटीग्रेशन के विरुद्ध JavaScript चलाता है, API जैसे ही प्राधिकरण और सत्यापन के साथ।
| URL | https://mcp.crevio.co/mcp |
| ट्रांसपोर्ट | Streamable HTTP (स्टेटलेस — हर अनुरोध स्वयंपूर्ण है) |
| प्रमाणीकरण | Authorization: Bearer <API token> — वही API टोकन जो आप REST के लिए उपयोग करते हैं — या उन क्लाइंट के लिए X-Api-Key: <API token> जो केवल कस्टम हेडर सेट कर सकते हैं। OAuth 2.1 भी समर्थित है; देखें Connecting। |
| डिस्कवरी | https://mcp.crevio.co/mcp/server-card |
[!NOTE]
Crevio के एजेंटिक मॉडल में नए हैं? AI & Agents अवलोकन से शुरू करें ताकि आप देख सकें कि 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 उदाहरण Connecting पृष्ठ पर हैं।
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में वापस आती हैं। किसी आर्टिफ़ैक्ट के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(तत्काल) तब तक जब तकstatuscompleted,failed, याneeds_inputन हो जाए।send_messageबातचीत जारी रखता है — अनुवर्ती निर्देश, सुधार, एजेंट द्वारा पूछे गए प्रश्न के उत्तर। एजेंट अपना संदर्भ बनाए रखता है। समाप्त रन पर यह उसी बातचीत में एक नया रन शुरू करता है;needs_inputरन पर यह उसे फिर से शुरू करता है। उसी कॉल में उत्तर की प्रतीक्षा करने के लिएtimeout_secondsपास करें, और एकidempotency_keyताकि पुनःप्रयास किया गया कॉल संदेश दो बार भेजने के बजाय पहली बार शुरू किया गया रन (reused: true) लौटाए।resolve_approvalsतब जब कोई रन किसी इंटीग्रेशन क्रिया पर रुका हो (pending_approval_idsके साथneeds_input) — हर लंबित 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_seconds1 से 600 (डिफ़ॉल्ट 300)। कंप्यूटर को पहले जागना पड़ सकता है, जिससे लगभग 20 सेकंड तक जुड़ सकते हैं। - समवर्तीता: प्रति उपयोगकर्ता अधिकतम 4 रन प्रगति पर और प्रति खाता 8।
- अनुमोदन: एक स्क्रिप्ट रुककर अनुमोदन नहीं माँग सकती। जिस कॉल को इसकी आवश्यकता है (सूची में
requires_approval) वहapproval_requiredके साथ विफल होती है: उस क्रिया को Settings → Integrations में स्वचालित रूप से चलने के लिए सेट करें, या काम कोask_crevioके साथ सौंपें। - रद्दीकरण: केवल
queuedरन रद्द किया जा सकता है। चल रही स्क्रिप्ट अपने अंत या अपने टाइमआउट तक चलती है। - आउटपुट फ़ाइलें: प्रति रन अधिकतम 20, प्रत्येक अधिकतम 50 MB। बड़ी फ़ाइलें छोड़ दी जाती हैं।
पूर्ण टूल संदर्भ
| Tool | Purpose | Arguments |
|---|---|---|
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 | किसी आर्टिफ़ैक्ट आईडी (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, औरwriteके साथresolve_approvalsभी।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 में नहीं दिखता, और उसे कॉल करने पर "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 रन क्यों विफल हुआ (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 वेबहुक भी ट्रिगर करते हैं, और GET /v1/task_runs/:id/stream पर SSE के माध्यम से स्ट्रीम किए जा सकते हैं।
MCP Tasks और elicitation
ये आपके MCP क्लाइंट की प्रोटोकॉल सुविधाएँ हैं, जो Crevio के अपने Tasks से अलग हैं। इनके साथ, क्लाइंट लंबे कार्यों को ट्रैक करता है और wait_for_run और resolve_approvals को कॉल करने के बजाय स्वयं अनुमोदनों का उत्तर देता है। दोनों के लिए 2026-07-28 प्रोटोकॉल आवश्यक है, जिसे आपका क्लाइंट चुनता है। इनके बिना, हर टूल ऊपर वर्णित अनुसार व्यवहार करता है।
Async टूल कॉल
सर्वर 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में ठीक वही होता है जो टूल ने टास्क के बिना लौटाया होता।pollIntervalMsपर पोल करें: एजेंट रन के लिए 3 सेकंड, स्क्रिप्ट के लिए 1 सेकंड।tasks/updateटास्क केinputRequestsका उत्तर देता है (नीचे देखें)।tasks/cancelरन को रोकता है, जैसेcancel_runयाcancel_script_run।
एक टास्क स्वयं रन है, इसलिए यह उतने समय तक रहता है जितना रन (ttlMs null है)। जो रन failed पर समाप्त होता है, वह भी टास्क पूरा करता है: result के भीतर उसका status और error_message पढ़ें। टास्क का अपना failed स्टेटस प्रोटोकॉल त्रुटियों के लिए रखा जाता है। टास्क आईडी अनुमानित नहीं की जा सकती, और केवल वही खाता और उपयोगकर्ता जिसने रन शुरू किया, उसे पढ़ सकते हैं। अज्ञात या बाहरी आईडी -32602 उत्तर देती है, और जो अनुरोध एक्सटेंशन घोषित नहीं करता वह -32021 उत्तर देता है।
अनुमोदन और प्रश्न
जब कोई क्लाइंट फ़ॉर्म elicitation (_meta["io.modelcontextprotocol/clientCapabilities"].elicitation) घोषित करता है, तो needs_input में रुका रन सीधे उपयोगकर्ता से पूछता है:
| रन किसकी प्रतीक्षा कर रहा है | क्लाइंट से क्या पूछा जाता है | स्वीकार करें | अस्वीकार करें या बंद करें |
|---|---|---|---|
| इंटीग्रेशन क्रियाओं का अनुमोदन | प्रत्येक क्रिया के लिए एक फ़ॉर्म, उसकी अनुमोदन आईडी (apr_…) द्वारा कुंजीबद्ध, यह बताते हुए कि क्या भेजा जाएगा | इसे स्वीकृत करता है | इसे अस्वीकार करता है |
| एजेंट के प्रश्न का उत्तर | reply फ़ील्ड वाला एक फ़ॉर्म | उत्तर भेजता है और रन जारी रहता है | रन को पूर्ण के रूप में बंद करता है |
बंद किया गया अनुमोदन अस्वीकृति है, इसलिए स्पष्ट हाँ के बिना कुछ नहीं चलता। आप फ़ॉर्म का उत्तर किसी भी क्रम में और एक साथ कुछ दे सकते हैं। हर एक का उत्तर मिलने पर रन फिर से शुरू होता है, और एजेंट सभी निर्णय एक साथ सुनता है।
- टास्क के साथ: टास्क
inputRequestsमें फ़ॉर्म के साथinput_requiredपर चला जाता है। उनका उत्तरtasks/updateसे दें। - टास्क के बिना: टूल फ़ॉर्म और एक
requestStateके साथ"resultType": "input_required"लौटाता है। उसी टूल को उन्हीं आर्ग्युमेंट के साथ फिर से कॉल करें, साथ मेंinputResponsesऔर वही सटीकrequestState। स्टेट सीलबंद है, टूल और उसके आर्ग्युमेंट से बंधा है, और एक घंटे बाद समाप्त हो जाता है। - फ़ॉर्म elicitation के बिना: कुछ नहीं बदलता। रन
resolve_approvalsके लिएpending_approval_idsके साथneeds_inputके रूप में लौटता है, जिसमें पूर्ण टास्क के रूप में भी शामिल है।
इवेंट
सर्वर ड्राफ़्ट MCP Events एक्सटेंशन (io.modelcontextprotocol/events) लागू करता है, ताकि कोई क्लाइंट खाते में होने वाली चीज़ों, जैसे order.paid या email_message.received, की सदस्यता ले सके और बिना पोलिंग के प्रतिक्रिया दे सके। इसकी घोषणा /mcp और /chatgpt दोनों पर server/discover में की गई है।
इवेंट प्रकार वही हैं जो वेबहुक के हैं, और पेलोड भी वही है: 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 उस पर
{"type":"verification","challenge":"<nonce>"}POST करता है। 5 सेकंड के भीतर2xxऔर{"challenge":"<nonce>"}के साथ उत्तर दें। प्रत्येक क्रेडेंशियल प्रत्येक URL को एक बार सत्यापित करता है। - जीवनकाल।
ttlMsके बिना सदस्यता एक दिन चलती है। सुझाया गयाttlMsएक मिनट से एक दिन के बीच रखा जाता है।"ttlMs": nullबिना समाप्ति के अनुरोध करता है, और Crevio उसे प्रदान करता है। - सीक्रेट बदलना। रीफ़्रेश पर नया
delivery.secretभेजें। 10 मिनट तक, डिलीवरी दोनों सीक्रेट के हस्ताक्षर लेकर चलती हैं। - सीमाएँ। प्रति खाता 100 सक्रिय सदस्यताएँ। सदस्यता लेना केवल पढ़ता है, इसलिए
read_onlyटोकन इसे कर सकता है।
डिलीवरी
प्रत्येक इवेंट {"eventId", "name", "timestamp", "data"} का POST है, जो आपके सीक्रेट (webhook-id, webhook-timestamp, webhook-signature) के साथ Standard Webhooks के अनुसार हस्ताक्षरित है और X-MCP-Subscription-Id लेकर चलता है। बॉडी पर भरोसा करने से पहले हस्ताक्षर सत्यापित करें, और eventId पर डुप्लिकेट हटाएँ।
| आपका एंडपॉइंट क्या करता है | क्या होता है |
|---|---|
2xx उत्तर देता है | डिलीवर किया गया |
410 या 413 उत्तर देता है | बिना पुनः प्रयास के छोड़ दिया गया |
| विफल होता है या टाइमआउट होता है (5 सेकंड) | लगभग 12 मिनट में 4 बार तक पुनः प्रयास, फिर छोड़ दिया गया |
| एक घंटे तक विफल रहता है | आपका अगला रीफ़्रेश उन्हें फिर से चालू करने तक डिलीवरी रुक जाती है |
| बिना-समाप्ति सदस्यता पर 3 दिन तक विफल रहता है | Crevio {"type":"terminated",…} POST करता है और सदस्यता हटा देता है |
यदि क्रेडेंशियल खाते तक पहुँच खो देता है (कुंजी हटाई या समाप्त, OAuth पहुँच रद्द, उपयोगकर्ता खाते से हटाया गया), तो अगला इवेंट त्रुटि -32024 लेकर चलने वाले terminated एनवेलप के साथ सदस्यता समाप्त कर देता है।
यह क्या नहीं कर सकता
- अभी के लिए डिज़ाइन के अनुसार केवल Webhook डिलीवरी।
events/pollऔरevents/stream-32026का उत्तर देते हैं। जब आप POST प्राप्त नहीं कर सकते, तो webhooks API याlist_runsऔर REST endpoints का उपयोग करें। - कोई replay नहीं।
cursorहमेशाnullहोता है: जब किसी subscription की अवधि समाप्त हो जाती है, तो उस दौरान होने वाली events बाद में डिलीवर नहीं की जातीं। किसी अंतराल के बाद tools के माध्यम से वर्तमान स्थिति पढ़ें। - कोई filters नहीं। Event types कोई
argumentsनहीं लेते। एक subscription को account में उसके प्रकार की हर event मिलती है।
Errors एक्सटेंशन के codes का उपयोग करते हैं: -32602 अमान्य parameters (खराब URL, secret या arguments), -32023 अज्ञात event या subscription, -32024 कोई authenticated principal नहीं या access खो गया, -32025 subscription सीमा, -32026 delivery mode प्रस्तावित नहीं, और -32027 callback verification में विफल रहा, जिसमें data.reason इनमें से एक है: connection_refused, timeout, tls_error, http_4xx, http_5xx या challenge_failed।
Errors
Authentication विफलताएँ अनुरोध पर ही HTTP 401/403 होती हैं (WWW-Authenticate OAuth metadata की ओर इंगित करता है)। Tool विफलताएँ isError: true और एक JSON body के साथ tool result के रूप में वापस आती हैं:
{ "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 | इस बातचीत में एक run अभी भी प्रगति पर है | उसकी प्रतीक्षा करें, फिर send_message |
account_at_capacity | account में पहले से 5 runs चल रहे हैं (http_status: 429) | retry_after_seconds के बाद पुनः प्रयास करें |
idempotency_error | एक idempotency_key को भिन्न संदेश के साथ पुनः उपयोग किया गया | नए संदेश के लिए नई key पास करें |
run_not_active | पहले से पूर्ण हो चुके run पर cancel_run | कुछ नहीं — उसका result पढ़ें |
run_not_resumable | run के पास जारी रखने के लिए कोई बातचीत नहीं है | ask_crevio के साथ नया job शुरू करें |
approvals_pending | approvals द्वारा अवरुद्ध run पर send_message | पहले resolve_approvals |
stale_resolution | आपके द्वारा सबमिट किए गए approvals लंबित सेट से मेल नहीं खाते | get_run, फिर हर pending_approval_ids प्रविष्टि पुनः सबमिट करें |
insufficient_credits | account में कोई AI credits शेष नहीं हैं | Crevio में credits जोड़ें |
resource_missing | इस account पर उस id के साथ कोई run/task नहीं | id जाँचें — runs account-स्कोप्ड होते हैं |
validation_failed | एक खराब argument (जैसे कोई अज्ञात approval_mode) | argument ठीक करें |
rate_limit_exceeded | प्रति owner प्रति मिनट 600 अनुरोध, REST API के साथ साझा — या बहुत अधिक script runs प्रगति पर | X-RateLimit-Reset तक पीछे हटें (rate limits), या किसी script run के पूरा होने की प्रतीक्षा करें |
forbidden | किसी ऐसे व्यक्ति द्वारा run_script जो account admin नहीं है | किसी admin से पूछें, या ask_crevio के साथ delegate करें |
run_not_cancellable | पहले से शुरू हो चुके run पर cancel_script_run | wait_for_script_run के साथ उसकी प्रतीक्षा करें |
जो script throw करता है, वह भी script run के रूप में वापस आता है, जिसमें status: "failed", उसका error, और उसके द्वारा किए गए calls होते हैं — run_script स्वयं केवल तब error देता है जब run शुरू नहीं हो सका या प्रतीक्षा समाप्त हो गई।
Security
हर tool आपके account की tenant सीमा के भीतर चलता है। Delegated jobs Crevio agent को उन अनुमतियों के साथ चलाते हैं जो आपके account के पास पहले से हैं। run_script आपके account के Crevio computer पर कॉलिंग admin के रूप में चलता है; इसके tools calls उन्हीं approval सेटिंग्स से गुज़रते हैं जिनका agent पालन करता है और उन्हीं API controllers से जिनसे api.crevio.co, इसलिए authorization, validation, और error संदेश सीधे API calls के समान होते हैं। Tokens आपके account जितने शक्तिशाली होते हैं: केवल उन agents को कनेक्ट करें जिन पर आप भरोसा करते हैं, और किसी कनेक्शन को तुरंत काटने के लिए Settings → Developers से token revoke करें।
अगले कदम
क्लाइंट-दर-क्लाइंट सेटअप, OAuth, और curl उदाहरण।
वह Task / Task Run मॉडल जिस पर हर delegated job बना है — और आवर्ती कार्य कैसे शेड्यूल करें।
MCP, Tasks, और Events कैसे Crevio का agentic मॉडल बनाते हैं।
वे आकार, prefixes, और gotchas जो
crevioApiREST के साथ साझा करता है।
यह दस्तावेज़ Mintlify पर बनाया और होस्ट किया गया है, जो एक developer documentation प्लेटफ़ॉर्म है।