Crevio
resmiKüçük işletmenizi (ürünler, siparişler, müşteriler, e-posta, siteler) yöneten bir AI aracısına iş devredin veya Crevio API'sine ve 3.000'den fazla bağlı uygulamaya karşı betikler çalıştırın.
Crevio MCP ile neler yapabilirsiniz?
- İşleri sade dille devredin — Crevio aracısına
ask_crevioile "jane@… adresinden gelen son siparişi iade et" gibi bir görev verin ve çalıştırmanın son yanıtını geri alın. - Uzun süren işleri takip edin — İşleri engellemeden başlatın, ardından durumu kontrol edin, konuşmaya devam edin ve çalıştırmalar sonuçlandıkça onay kapılarını yanıtlayın.
- Betikleri Crevio API'sine karşı çalıştırın — Hesabınızın bilgisayarında JavaScript yürütmek, API çağrılarını ve bağlı entegrasyonları zincirlemek ve dönüştürülmüş verileri döndürmek için
run_scriptkullanın. - Çağrılabilir entegrasyonları keşfedin — Bir betik yazmadan önce
list_integrationsvelist_integration_toolsile kullanılabilir ad alanlarını ve işlevlerini listeleyin. - Hesap olaylarına abone olun — Yoklama yapmak yerine
order.paidgibi olaylar için bir webhook aboneliği kaydedin ve imzalı teslimatlar alın.
Barındırılan MCP Sunucusu
npx add-mcp 'https://mcp.crevio.co/mcp'Claude Code, Codex, Cursor ve daha fazlasına kurulur
Dokümantasyon
MCP Sunucusu
Claude, Cursor veya MCP uyumlu herhangi bir ajanı Crevio hesabınıza bağlayın: işleri ask_crevio ile Crevio ajanına devredin, çalışmaları takip edip sürdürün ve tüm Crevio API'sine ve entegrasyonlarınıza karşı betikler çalıştırın.
Crevio MCP sunucusu, MCP uyumlu herhangi bir ajanın işleri Crevio'ya devretmesini sağlar — ve ajan kontrolleri kendisi ele almak istediğinde, tüm Crevio API'sine ve entegrasyonlarınıza karşı betikler çalıştırır. Tek sunucu, iki yüzey:
- Devretme —
ask_crevioCrevio ajanına sade bir dille bir iş verir ("jane@… adresinden gelen son siparişi iade et", "bu haftanın gönderilerini yaz ve planla") ve sonucu döndürür. Daha uzun işler arka planda çalışır; bunları çalışmalar olarak takip eder, konuşmayı sürdürür, onay kapılarını yanıtlar ve dökümü okursunuz. - Betikler —
list_integrationsvelist_integration_toolsbir betiğin neleri çağırabileceğini gösterir,run_scriptise hesabınızın Crevio bilgisayarında her REST uç noktasına ve bağlı entegrasyona karşı JavaScript çalıştırır; API ile aynı yetkilendirme ve doğrulamayla.
| URL | https://mcp.crevio.co/mcp |
| Taşıma | Streamable HTTP (durumsuz — her istek kendi kendine yeterlidir) |
| Kimlik doğrulama | Authorization: Bearer <API token> — REST için kullandığınız aynı API belirteci — veya yalnızca özel bir başlık ayarlayabilen istemciler için X-Api-Key: <API token>. OAuth 2.1 de desteklenir; bkz. Bağlanma. |
| Keşif | https://mcp.crevio.co/mcp/server-card |
[!NOTE]
Crevio'nun ajan tabanlı modelinde yeni misiniz? MCP, Görevler ve Olaylar'ın nasıl bir araya geldiğini görmek için Yapay Zeka ve Ajanlar genel bakışıyla başlayın. Kaputun altında, devredilen bir iş tek çalışmalı bir Görev'dir; dolayısıyla buradaki her şey panonuzda ve
/v1/tasksile/v1/task_runsaracılığıyla da görünür.
Kurulum
1. Bir API belirteci oluşturun
Crevio'da Ayarlar → Geliştiriciler → API belirteçleri bölümüne gidin ve bir tane oluşturun. Bir MCP bağlantısı, arkasındaki belirtecin izinlerine tam olarak sahiptir — hesabın yapabildiği her şey.
2. İstemcinizi yapılandırın
Claude Code
claude mcp add --transport http crevio https://mcp.crevio.co/mcp \
--header "Authorization: Bearer $CREVIO_API_TOKEN"
Claude Desktop / Cursor / diğer istemciler — istemcinin MCP yapılandırmasına ekleyin (claude_desktop_config.json, ~/.cursor/mcp.json, …):
{
"mcpServers": {
"crevio": {
"url": "https://mcp.crevio.co/mcp",
"headers": {
"Authorization": "Bearer <CREVIO_API_TOKEN>"
}
}
}
}
İstemciye özgü adımlar, OAuth ve ham curl örnekleri Bağlanma sayfasındadır.
3. whoami ile doğrulayın
Bağlı ajandan whoami çağırmasını isteyin. Belirtecin arkasındaki hesabı ve kullanıcıyı, kimlik bilgisini, planı, kredi bakiyesini, hız sınırını, bekleme sınırlarını ve araç listesini döndürür — argüman yok, yan etki yok. whoami çalışıyorsa, diğer her şey de çalışacaktır.
{
"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"]
}
Önerilen iş akışları
Tek seferlik işler: ask_crevio
Muhakeme veya yazma gerektiren işler için. Tek bir çağrı bir çalışma başlatır, bekler ve çalışmayı ajanın son yanıtıyla birlikte result içinde döndürür. Her iş tam bir ajan çalışmasıdır; yarım dakikadan birkaç dakikaya kadar sürer — verileri doğrudan okumak veya değiştirmek için bir betik saniyeler alır.
{
"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"
}
- İstemciniz akışlı bir yanıtı kabul ettiğinde (
Accept: text/event-stream, MCP istemcilerinin varsayılan olarak gönderdiği) bekleme varsayılan olarak ve en fazla 300 saniye, aksi halde 90 saniyedir. Akışlı bir yanıt beklerken her 10 saniyede bir ilerleme bildirimi gönderir — bunları almak için_metaiçinde birprogressTokengeçirin. Daha az beklemek içintimeout_secondsgeçirin. - Bekleme sona erdiğinde çalışma hâlâ sürüyorsa, yanıt bir hata değildir:
wait_timed_out: truedurumundaki çalışmadır. Beklemeye devam etmek içinidilewait_for_runçağırın veask_creviotekrar çağırmayın — bu, işi ikinci kez başlatır. Hiçbir şey kaybolmaz; çalışma Crevio tarafında devam eder. idempotency_keyyeniden denemeleri güvenli kılar: aynı anahtar, ilk çağrının başlattığı çalışmayı döndürür, başka bir çalışma başlatmaz (ve ücretlendirmez). Her zaman bir tane geçirin.speed: "faster", basit işlerde hızlı bir yanıtın derinlikten daha önemli olduğu durumlarda ajanın daha az düşünmesini sağlar. Varsayılansmarter'tür.response_format, programınızın düz metin yerine bir nesneye ihtiyaç duyduğunda bir JSON Şeması (veya OpenAI'nin{type: "json_schema", json_schema: {schema}}'sı) alır. Ajana şema bildirilir ve tamamlanan çalışma, ayrıştırılmış değerijsoniçinde şemaya göre doğrulanmış olarak veya başarısız olma nedeninijson_erroriçinde taşır.start_chatvesend_messagede bunu alır.- Ajanın çalışma sırasında teslim ettiği dosyalar
artifactsiçinde geri döner. Bir eseriniddeğeriniget_file_download_urlile indirme bağlantısına dönüştürün. approval_modevarsayılan olarakautonomous'tir.supervised, çalışmanın her kapılı yazma işleminden önceneeds_inputdurumunda duraklamasını ve siz onunpending_approval_idsdeğerini yanıtlayana kadar beklemesini sağlar (onaylanacak bir şeyi olmayan bir çalışma teklifiyle birlikte tamamlanır; üzerinde işlem yapmak içinsend_messageile yanıtlayın);read_onlyyazma işlemlerini yasaklar.
Uzun süreli işler: start_chat → wait_for_run → send_message
Beklemek istemediğiniz her şey için — bir site derlemesi, bir araştırma görevi, toplu bir taşıma:
start_chatişi kuyruğa alır ve çalışmayı hemen döndürür.statusdeğericompleted,failedveyaneeds_inputolana kadarwait_for_run(sınırlı) veyaget_run(anında).send_messagekonuşmayı sürdürür — takip talimatları, düzeltmeler, ajanın sorduğu bir soruya yanıtlar. Ajan bağlamını korur. Tamamlanmış bir çalışmada bu, aynı konuşmada yeni bir çalışma başlatır;needs_inputdurumundaki bir çalışmada ise onu sürdürür. Yanıtı aynı çağrıda beklemek içintimeout_secondsve yeniden denenen bir çağrının mesajı iki kez göndermek yerine ilk çağrının başlattığı çalışmayı (reused: true) döndürmesi için biridempotency_keygeçirin.- Bir çalışma bir entegrasyon eylemi üzerinde duraklatıldığında (
pending_approval_idsileneeds_input)resolve_approvals— bekleyen tüm kimlikleri tek seferde onaylayın veya reddedin ve çalışma devam eder. - Bekleyen, çalışan veya bekleyen bir çalışmayı durdurmak için
cancel_run.
Bir sohbet konuşmadır ve bir çalışma onun içindeki bir iş turudur. list_runs hesaptaki her çalışmayı gösterir (yalnızca bir konuşmanın çalışmaları için chat_id geçirin) — devredilen işler ve planlanmış Görevler dahil — list_chats ve get_chat konuşmaların kendilerine göz atarken, list_messages bir sohbetin yalnızca son yanıtını değil tam dökümünü okur.
Betikler: run_script
Bağlı ajan Crevio'yu devretmek yerine kendisi işletmek istediğinde — veya tam verilerin geri dönmesi gerektiğinde — bir betik yazar. run_script, hesabınızın Crevio bilgisayarında bun ile JavaScript çalıştırır, ajan turu olmadan. Betik, Crevio API'sini ve hesabınızın bağladığı her entegrasyonu çağırabilir, istediği kadar çağrıyı zincirleyebilir ve verileri geri dönmeden önce dönüştürebilir.
Keşfet
list_integrations bir betiğin çağırabileceği her ad alanını adlandırır: crevioApi (tüm Crevio API'si, her işlem için bir fonksiyon), platform (Crevio'nun kendi araçları) ve bağlı her entegrasyon için bir tane (pdGmail, mcpLinear, …). list_integration_tools bir ad alanının fonksiyonlarını listeler; her biri parametreleriyle bir TypeScript türü olarak, yalnızca okuma yapıp yapmadığı, onay gerektirip gerektirmediği ve doldurduğunuzda run_script'ün kabul ettiği bir kod parçacığıyla birlikte. crevioApi yüzlerce işlem içerir, bu yüzden onu search ile daraltın:
{ "namespace": "crevioApi", "search": "price variant create" }
Çalıştır
tools.<namespace>.<function>(args) bir çağrı yapar. Üst düzey await çalışır, her çağrı sonucunu döndürür ve başarısızlıkta hata fırlatır, betiğin son ifadesi onun sonucudur.
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
Okumalar parametrelerini doğrudan alır (listOrders({ status: "succeeded" })); yazmalar istek gövdesini body altında, yol parametreleri yanında geçirir.
Değerleri args ile geçirin (en fazla 16 dize); betik bunları args genel değişkeninden okur. outputDir genel değişkeninin adlandırdığı dizine yazılan dosyalar çalışmada artifacts olarak geri döner:
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
Bir çalışma bir betik çalışması (srun_…) döndürür: status (queued → in_progress → completed, failed, cancelled veya timed_out), result, betiğin output içinde yazdırdıkları, error ve calls — yaptığı her araç çağrısı HTTP durumuyla birlikte, böylece bir hatayı yakalayan bir betik bile hangi çağrının başarısız olduğunu gösterir. run_script, ask_crevio'nin yapabildiği kadar bekler (akışlı bir yanıtta 300 saniye, aksi halde 90; daha az beklemek için wait_seconds geçirin). Daha uzun süren bir çalışma wait_timed_out: true ve kimliğiyle geri döner — bu bir hata değildir: wait_for_script_run ile beklemeye devam edin. run_script'i tekrar çağırmak betiği iki kez çalıştırır, aynı idempotency_key'yi geçmediğiniz sürece.
crevioApi çağrıları api.crevio.co ile aynı denetleyicilerden geçer, bu yüzden API kuralları değişmeden geçerlidir: ilişkiler önek kimlikli çıplak adlardır (product_id değil, product: "prod_abc"), para sent cinsindendir, liste uç noktaları {object: "list", data: [...]} döndürür ve bir ürünün active olabilmesi için önce bir fiyat varyantına ihtiyacı vardır. Kurslar ve diğer içerikler ürün değil, deneyimlerdir (listExperiences).
Sınırlar:
- Kim: yalnızca hesap yöneticileri. Betik sizin olarak çalışır — kişisel entegrasyonlarınız dahil — tüm ekibinizin paylaştığı bir bilgisayarda.
- Zaman aşımı:
timeout_seconds1 ile 600 arasında (varsayılan 300). Bilgisayarın önce uyanması gerekebilir, bu da yaklaşık 20 saniyeye kadar ekleyebilir. - Eşzamanlılık: kullanıcı başına en fazla 4, hesap başına 8 çalışma.
- Onaylar: bir betik durup onay isteyemez. Onay gerektiren bir çağrı (listelemede
requires_approval)approval_requiredile başarısız olur: bu eylemi Ayarlar → Entegrasyonlar bölümünde otomatik çalışacak şekilde ayarlayın veya işi bunun yerineask_crevioile devredin. - İptal: yalnızca
queueddurumundaki bir çalışma iptal edilebilir. Çalışan bir betik sonuna veya zaman aşımına kadar çalışır. - Çıktı dosyaları: çalışma başına en fazla 20, her biri en fazla 50 MB. Daha büyük dosyalar dışarıda bırakılır.
Tam araç referansı
| Araç | Amaç | Argümanlar |
|---|---|---|
whoami | Hesabı, kullanıcıyı, kimlik bilgisini, planı, kredileri, limitleri ve araçları tanımla | — |
ask_crevio | Bir işi devret ve sonucu bekle | message (gerekli), timeout_seconds, approval_mode, speed, response_format, idempotency_key |
start_chat | Bir işi beklemeden devret | message (gerekli), approval_mode, speed, response_format, idempotency_key |
wait_for_run | Bir çalışmanın sonuçlanmasını (sınırlı süreyle) bekle | run_id (gerekli), timeout_seconds |
get_run | Bir çalışmanın durumunu, özetini, bekleyen onaylarını ve son yanıtını getir | run_id (gerekli) |
list_chats | Hesabın sohbetlerini en yeniden eskiye listele | search, limit, starting_after, ending_before |
get_chat | Bir sohbetin başlığını, türünü ve en son çalışmasını getir | chat_id (gerekli) |
send_message | Bir sohbete devam et; isteğe bağlı olarak yanıtı bekle | chat_id, message (gerekli), timeout_seconds, response_format, idempotency_key |
resolve_approvals | Bir çalışmanın duraklatıldığı entegrasyon eylemlerini onayla/reddet | run_id, approvals: [{id, approved, reason}] (gerekli) |
cancel_run | Bekleyen, çalışan veya bekleyen bir çalışmayı durdur | run_id (gerekli) |
list_runs | Hesabın çalışmalarını en yeniden eskiye listele | status, task_id, chat_id, limit, starting_after, ending_before |
list_messages | Bir sohbetin mesajlarını en eskiden yeniye oku | chat_id (gerekli), limit, ending_before |
list_integrations | Bir betiğin çağırabileceği her ad alanını adlandır | — |
list_integration_tools | Bir ad alanının işlevlerini parametreler ve kod parçacıklarıyla listele | namespace (gerekli), search, limit, offset |
run_script | Hesabın bilgisayarında JavaScript çalıştır ve bekle | code (gerekli), args, timeout_seconds, wait_seconds, idempotency_key |
wait_for_script_run | Bir betik çalışmasının bitmesini (sınırlı süreyle) bekle | run_id (gerekli), wait_seconds |
get_script_run | Bir betik çalışmasının durumunu ve sonucunu oku | run_id (gerekli) |
cancel_script_run | Başlamamış bir betik çalışmasını iptal et | run_id (gerekli) |
get_file_download_url | Bir yapıt kimliğini (art_…) 15 dakika geçerli bir indirme bağlantısıyla değiştir | file_id (gerekli) |
list_audit_events | Hesabın denetim olaylarını en yeniden eskiye listele. Yalnızca Enterprise planı. audit:read kapsamını ve kimlik bilgisi bir kişi olarak hareket ettiğinde bir yönetici gerektirir | action, actor_type, entity_type, entity_id, after, limit, starting_after, ending_before |
Bir bağlantının hangi araçları gördüğü, kimlik bilgisine bağlıdır:
API anahtarları ve OAuth belirteçleri aynı kapsamları paylaşır ve bir bağlantı, kimlik bilgisinin kapsamlarının izin verdiği araçları görür:
- Okuma yapan araçlar için
read, geri kalanı içinwrite; araç aşağıdaki kapsamlardan birini gerektirmedikçe. ask_crevio,start_chat,send_messagevecancel_runiçinagent:run, ayrıcawriteile birlikteresolve_approvals.writeolmadan devredilen işler salt okunur çalışır.run_script,wait_for_script_run,get_script_runvecancel_script_runiçinscripts:run. Bir ekip anahtarı bunları asla görmez vewriteolmadan bir betik hiçbir şeyi değiştiremez.get_file_download_urliçinfiles:read,list_audit_eventsiçinaudit:read.whoamihiçbirini gerektirmez.
read_only verilen bir OAuth belirteci (bir istemci kapsam istemediğinde varsayılan) read tutar; read_write verilen bir belirteç her kapsamı tutar ve her aracı görür. Kapsamlar var olmadan önce oluşturulmuş bir API anahtarı da öyle.
Belirtecin kullanamadığı bir araç tools/list içinde görünmez ve çağrıldığında "Araç bulunamadı" yanıtı verir. Kapsamların ötesinde, bir ajana verdiğiniz belirteci verilerine dokunmasından memnun olduğunuz bir hesapta vermek ve devredilen işlerde approval_mode seçmek suretiyle bir ajanın yapabileceklerini sınırlayın.
Çalışma nesnesi
Devretme araçları bir çalışma (trun_…) döndürür; bu, GET /v1/task_runs/:id ile aynı nesne artı result ve chat_id'tür:
| Alan | Anlamı |
|---|---|
status | pending → running → completed / failed, veya ajan sizi beklerken needs_input |
result | Ajanın son yanıtı, en fazla 24.000 karakter (çalışma sonuçlandığında mevcut) |
json, json_error | Bir response_format ile: yanıt ayrıştırılmış ve doğrulanmış, veya şema için neden geçerli JSON olmadığı |
artifacts | Çalışmanın teslim ettiği dosyalar, her biri {id, filename, content_type, size}; get_file_download_url ile indirin |
summary | Yanıtın ilk 500 karakteri — panonun ve web kancalarının gösterdiği |
pending_approval_ids | needs_input olduğunda: çalışmayı engelleyen entegrasyon onayları, resolve_approvals için |
error_message | Bir failed çalışmasının neden başarısız olduğu (cancel_run sonrasında "Cancelled by the caller") |
wait_timed_out, next_step | Bekleme, çalışma sonuçlanmadan sona erdiğinde mevcut — hâlâ çalışıyor; next_step nasıl takip edileceğini söyler |
credits_consumed | Çalışmanın maliyeti, AI kredisi cinsinden |
task_id, chat_id | REST API ve pano için temel Görev ve konuşma |
Çalışmalar ayrıca task_run.completed, task_run.failed ve task_run.needs_input web kancalarını tetikler ve GET /v1/task_runs/:id/stream adresinde SSE üzerinden akışla izlenebilir.
MCP Görevleri ve yoklama
Bunlar, Crevio'nun kendi Görevlerinden ayrı olarak MCP istemcinizin protokol özellikleridir. Bunlarla bir istemci, uzun işleri takip eder ve wait_for_run ve resolve_approvals çağırmak yerine onayları kendisi yanıtlar. Her ikisi de istemcinizin seçtiği 2026-07-28 protokolünü gerektirir. Bunlar olmadan her araç yukarıda açıklandığı gibi davranır.
Eşzamansız araç çağrıları
Sunucu, MCP Görevleri uzantısını (io.modelcontextprotocol/tasks) uygular ve bunu hem /mcp hem de /chatgpt üzerinde server/discover içinde duyurur. Bir istek bunu _meta["io.modelcontextprotocol/clientCapabilities"].extensions içinde bildirdiğinde, bu araçlar en fazla 5 saniye bekler ve ardından isteği açık tutmak yerine bir görev tanıtıcısı ("resultType": "task") döndürür: ask_crevio, wait_for_run, bir timeout_seconds ile send_message, run_script ve wait_for_script_run. Bu 5 saniye içinde biten bir çalışma yerinde yanıtlanır.
tasks/getgörevinstatusdeğerini döndürür.working, çalışmanın hâlâ devam ettiği anlamına gelir.completedolduğunda,resultaracın görevler olmadan döndüreceği şeyi tam olarak tutar.pollIntervalMsaralığıyla yoklayın: ajan çalışmaları için 3 saniye, betikler için 1 saniye.tasks/updategörevininputRequestsdeğerini yanıtlar (aşağıya bakın).tasks/cancelçalışmayı durdurur, tıpkıcancel_runveyacancel_script_rungibi.
Bir görev çalışmanın kendisidir, dolayısıyla çalışma sürdüğü sürece sürer (ttlMs değeri null'tür). failed ile biten bir çalışma yine de görevi tamamlar: result içindeki status ve error_message değerlerini okuyun. Görevin kendi failed durumu protokol hataları için saklanır. Bir görev kimliği tahmin edilemez ve yalnızca çalışmayı başlatan hesap ve kullanıcı okuyabilir. Bilinmeyen veya yabancı bir kimlik -32602 yanıtı verir ve uzantıyı bildirmeyen bir istek -32021 yanıtı verir.
Onaylar ve sorular
Bir istemci form yoklamasını (_meta["io.modelcontextprotocol/clientCapabilities"].elicitation) bildirdiğinde, needs_input içinde duraklatılmış bir çalışma kullanıcıya doğrudan sorar:
| Çalışmanın beklediği | İstemciye sorulan | Kabul et | Reddet veya kapat |
|---|---|---|---|
| Entegrasyon eylemlerinin onayı | Her eylem için bir form, onay kimliğiyle (apr_…) anahtarlanmış, neyin gönderileceğini açıklayan | Onaylar | Reddeder |
| Ajanın sorusuna bir yanıt | reply alanı olan bir form | Yanıtı gönderir ve çalışma devam eder | Çalışmayı tamamlandı olarak kapatır |
Kapatılan bir onay reddetme sayılır, dolayısıyla açık bir evet olmadan hiçbir şey çalışmaz. Formları herhangi bir sırayla ve birkaç tanesini aynı anda yanıtlayabilirsiniz. Her biri yanıtlandığında çalışma devam eder ve ajan tüm kararları birlikte duyar.
- Görevlerle: görev, formlarla birlikte
inputRequestsiçindeinput_requireddurumuna geçer. Bunlarıtasks/updateile yanıtlayın. - Görevler olmadan: araç, formlarla ve bir
requestStateile birlikte"resultType": "input_required"döndürür. Aynı aracı aynı argümanlarla, artıinputResponsesve o tamrequestStateile tekrar çağırın. Durum mühürlenir, araca ve argümanlarına bağlanır ve bir saat sonra sona erer. - Form yoklaması olmadan: hiçbir şey değişmez. Çalışma,
resolve_approvalsiçinpending_approval_idsile birlikte, tamamlanmış bir görev olarak da dahil,needs_inputolarak geri döner.
Olaylar
Sunucu, taslak MCP Olayları uzantısını (io.modelcontextprotocol/events) uygular, böylece bir istemci hesapta gerçekleşen şeylere, örneğin order.paid veya email_message.received olaylarına abone olabilir ve yoklama yapmadan tepki verebilir. Bu, hem /mcp hem de /chatgpt üzerinde server/discover içinde duyurulur.
Olay türleri web kancalarıyla aynıdır ve yük de öyledir: data.object, kaynağın API uç noktasının döndürdüğü haliyle tam olarak kendisidir. events/list, her türü payloadSchema ile listeler.
Abone olma
{
"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
}
}
Yanıt, abonelik id (mcpsub_…) değerini taşır; aynı kimlik bilgisi, URL, olay ve argümanlar için sabittir, ve refreshBefore değerini taşır. Aboneliği sürdürmek için refreshBefore öncesinde events/subscribe aracını aynı değerlerle tekrar çağırın; name, arguments ve delivery.url ile events/unsubscribe aboneliği hemen sona erdirir.
- Doğrulama. Bir URL'ye ilk teslimattan önce Crevio ona
{"type":"verification","challenge":"<nonce>"}POST eder. 5 saniye içinde bir2xxve{"challenge":"<nonce>"}ile yanıtlayın. Her kimlik bilgisi her URL'yi bir kez doğrular. - Ömür.
ttlMsolmadan bir abonelik bir gün sürer. Önerilen birttlMsbir dakika ile bir gün arasında tutulur."ttlMs": nullsona erme istemez ve Crevio bunu verir. - Gizli anahtarı döndürme. Bir yenilemede yeni bir
delivery.secretgönderin. 10 dakika boyunca teslimatlar her iki gizli anahtarın imzalarını taşır. - Limitler. Hesap başına 100 canlı abonelik. Abone olma yalnızca okuma yapar, dolayısıyla bir
read_onlybelirteci bunu yapabilir.
Teslimatlar
Her olay, gizli anahtarınızla (webhook-id, webhook-timestamp, webhook-signature) Standard Webhooks uyarınca imzalanmış ve X-MCP-Subscription-Id taşıyan bir {"eventId", "name", "timestamp", "data"} POST'udur. Gövdeye güvenmeden önce imzayı doğrulayın ve eventId üzerinde yinelenenleri ayıklayın.
| Uç noktanızın yaptığı | Gerçekleşen |
|---|---|
2xx yanıtı verir | Teslim edildi |
410 veya 413 yanıtı verir | Yeniden denenmeden bırakıldı |
| Başarısız olur veya zaman aşımına uğrar (5 saniye) | Yaklaşık 12 dakika boyunca en fazla 4 kez daha yeniden denenir, sonra bırakılır |
| Bir saat boyunca başarısız olmaya devam eder | Bir sonraki yenilemeniz onları tekrar açana kadar teslimatlar durur |
| Sona ermesiz bir abonelikte 3 gün boyunca başarısız olmaya devam eder | Crevio {"type":"terminated",…} POST eder ve aboneliği siler |
Kimlik bilgisi hesaba erişimini kaybederse (anahtar silinir veya süresi dolar, OAuth erişimi iptal edilir, kullanıcı hesaptan çıkarılır), bir sonraki olay aboneliği -32024 hatasını taşıyan bir terminated zarfıyla sona erdirir.
Yapamadıkları
- Yalnızca webhook teslimatı, şimdilik tasarım gereği.
events/pollveevents/stream-32026yanıtını verir. POST alamadığınızda webhooks API'sini veyalist_runsile REST uç noktalarını kullanın. - Yeniden oynatma yok.
cursorher zamannull: bir abonelik kesintiye uğradığı sırada gerçekleşen olaylar daha sonra teslim edilmez. Bir boşluktan sonra güncel durumu araçlar üzerinden okuyun. - Filtre yok. Olay türleri
argumentsalmaz. Bir abonelik, hesaptaki o türdeki her olayı alır.
Hatalar uzantının kodlarını kullanır: -32602 geçersiz parametreler (hatalı URL, secret veya argümanlar), -32023 bilinmeyen olay veya abonelik, -32024 kimliği doğrulanmış principal yok veya erişim kaybedildi, -32025 abonelik sınırı, -32026 teslimat modu sunulmuyor ve -32027 geri çağrı doğrulamada başarısız oldu; data.reason ise şunlardan biri: connection_refused, timeout, tls_error, http_4xx, http_5xx veya challenge_failed.
Hatalar
Kimlik doğrulama hataları, isteğin kendisinde HTTP 401/403 olarak döner (WWW-Authenticate OAuth meta verilerine işaret eder). Araç hataları, isError: true ve bir JSON gövdesi içeren bir araç sonucu olarak döner:
{ "error": "run_busy", "message": "Run trun_8d1k… is still in progress; wait for it to settle before sending more.", "http_status": 409 }
error | Anlamı | Ne yapmalı |
|---|---|---|
run_busy | Bu konuşmada bir çalıştırma hâlâ devam ediyor | Bitmesini bekleyin, ardından send_message |
account_at_capacity | Hesapta zaten 5 çalıştırma sürüyor (http_status: 429) | retry_after_seconds sonrasında yeniden deneyin |
idempotency_error | Farklı bir mesajla yeniden kullanılan bir idempotency_key | Yeni bir mesaj için yeni bir anahtar geçin |
run_not_active | Zaten tamamlanmış bir çalıştırmada cancel_run | Hiçbir şey — result değerini okuyun |
run_not_resumable | Çalıştırmanın devam ettirilecek konuşması yok | ask_crevio ile yeni bir iş başlatın |
approvals_pending | Onaylarla engellenen bir çalıştırmada send_message | Önce resolve_approvals |
stale_resolution | Gönderdiğiniz onaylar bekleyen kümeyle eşleşmiyor | get_run, ardından her pending_approval_ids girdisini yeniden gönderin |
insufficient_credits | Hesapta kalan AI kredisi yok | Crevio'da kredi ekleyin |
resource_missing | Bu hesapta o kimliğe sahip çalıştırma/görev yok | Kimliği kontrol edin — çalıştırmalar hesaba özeldir |
validation_failed | Hatalı bir argüman (ör. bilinmeyen bir approval_mode) | Argümanı düzeltin |
rate_limit_exceeded | Sahip başına dakikada 600 istek, REST API ile paylaşılır — veya çok fazla betik çalıştırması sürüyor | X-RateLimit-Reset değerine kadar geri çekilin (hız sınırları) veya bir betik çalıştırmasının bitmesini bekleyin |
forbidden | Hesap yöneticisi olmayan biri tarafından run_script | Bir yöneticiden isteyin veya ask_crevio ile devredin |
run_not_cancellable | Zaten başlamış bir çalıştırmada cancel_script_run | wait_for_script_run ile bekleyin |
Hata fırlatan bir betik yine de bir betik çalıştırması olarak döner; status: "failed", error ve oluşturduğu calls ile birlikte — run_script yalnızca çalıştırma başlatılamadığında veya bekleme sona erdiğinde hata verir.
Güvenlik
Her araç, hesabınızın kiracı sınırı içinde çalışır. Devredilen işler, Crevio ajanını hesabınızın hâlihazırda sahip olduğu izinlerle çalıştırır. run_script, hesabınızın Crevio bilgisayarında çağıran yönetici olarak çalışır; tools çağrıları, ajanın uyduğu aynı onay ayarlarından ve api.crevio.co ile aynı API denetleyicilerinden geçer; böylece yetkilendirme, doğrulama ve hata mesajları doğrudan API çağrılarıyla aynıdır. Token'lar hesabınız kadar güçlüdür: yalnızca güvendiğiniz ajanları bağlayın ve bir bağlantıyı anında kesmek için Ayarlar → Geliştiriciler bölümünden bir token'ı iptal edin.
Sonraki adımlar
İstemci bazında kurulum, OAuth ve curl örnekleri.
Her devredilen işin üzerine kurulduğu Görev / Görev Çalıştırması modeli — ve yinelenen işleri nasıl planlayacağınız.
MCP, Görevler ve Olayların Crevio'nun ajan tabanlı modelini nasıl oluşturduğu.
crevioApideğerinin REST ile paylaştığı yapılar, önekler ve tuzaklar.
Bu dokümantasyon, bir geliştirici dokümantasyon platformu olan Mintlify üzerinde oluşturulur ve barındırılır.