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_crevio Crevio एजेंट को सरल भाषा में काम सौंपता है ("jane@… के अंतिम ऑर्डर को रिफ़ंड करें", "इस सप्ताह की पोस्ट लिखें और शेड्यूल करें") और परिणाम लौटाता है। लंबे काम पृष्ठभूमि में चलते हैं; आप उन्हें runs के रूप में फ़ॉलो करते हैं, बातचीत जारी रखते हैं, अनुमोदन गेट का उत्तर देते हैं, और ट्रांसक्रिप्ट पढ़ते हैं।
  • स्क्रिप्ट — list_integrations और list_integration_tools दिखाते हैं कि एक स्क्रिप्ट क्या कॉल कर सकती है, और run_script आपके खाते के Crevio कंप्यूटर पर हर REST एंडपॉइंट और जुड़े इंटीग्रेशन के विरुद्ध JavaScript चलाता है, API जैसे ही प्राधिकरण और सत्यापन के साथ।
URLhttps://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

उन कामों के लिए जिन पर आप ब्लॉक नहीं होना चाहते — साइट बिल्ड, शोध कार्य, बल्क माइग्रेशन:

  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 तब जब कोई रन किसी इंटीग्रेशन क्रिया पर रुका हो (pending_approval_ids के साथ needs_input) — हर लंबित id को एक साथ स्वीकृत या अस्वीकृत करें और रन फिर से शुरू हो जाता है।
  5. 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। बड़ी फ़ाइलें छोड़ दी जाती हैं।

पूर्ण टूल संदर्भ

ToolPurposeArguments
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:

फ़ील्डअर्थ
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_messagefailed रन क्यों विफल हुआ (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_capacityaccount में पहले से 5 runs चल रहे हैं (http_status: 429)retry_after_seconds के बाद पुनः प्रयास करें
idempotency_errorएक idempotency_key को भिन्न संदेश के साथ पुनः उपयोग किया गयानए संदेश के लिए नई key पास करें
run_not_activeपहले से पूर्ण हो चुके run पर cancel_runकुछ नहीं — उसका result पढ़ें
run_not_resumablerun के पास जारी रखने के लिए कोई बातचीत नहीं हैask_crevio के साथ नया job शुरू करें
approvals_pendingapprovals द्वारा अवरुद्ध run पर send_messageपहले resolve_approvals
stale_resolutionआपके द्वारा सबमिट किए गए approvals लंबित सेट से मेल नहीं खातेget_run, फिर हर pending_approval_ids प्रविष्टि पुनः सबमिट करें
insufficient_creditsaccount में कोई 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_runwait_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 करें।

अगले कदम

Connecting

क्लाइंट-दर-क्लाइंट सेटअप, OAuth, और curl उदाहरण।

Tasks (आपकी AI कार्यशक्ति)

वह Task / Task Run मॉडल जिस पर हर delegated job बना है — और आवर्ती कार्य कैसे शेड्यूल करें।

AI & Agents अवलोकन

MCP, Tasks, और Events कैसे Crevio का agentic मॉडल बनाते हैं।

API परंपराएँ

वे आकार, prefixes, और gotchas जो crevioApi REST के साथ साझा करता है।

यह दस्तावेज़ Mintlify पर बनाया और होस्ट किया गया है, जो एक developer documentation प्लेटफ़ॉर्म है।