WebMCP
Botonom sayfaları, aynı sekmede çalışan yapay zeka agent'ına elinde ne olduğunu kendisi söyler. Sunulan sayfa içi araçlar (WebMCP tools), güvenlik sınırları ve test yöntemleri.
Bu rehberde sırasıyla WebMCP Ne İşe Yarar?, Sunulan Sayfa İçi Araçlar (Tools), Nasıl Test Edilir?, Araçların Güvenlik Sınırları ve Kısıtlamaları ve Sayfa İçi Araçlar (WebMCP) ile MCP Sunucusu Karşılaştırması konularını ele alıyoruz.
WebMCP Ne İşe Yarar?
Ziyaretçinin tarayıcı sekmesinde çalışan yapay zekâ (AI/SI) asistanı, Botonom sayfasında ne olduğunu tahmin etmek veya ekran görüntüsüyle DOM kazımak zorunda kalmaz. Sayfa, tarayıcı ortamına hangi işlevleri yürütebileceğini doğrudan bildirir; asistan da bu araçları standart birer fonksiyon gibi çağırır. Ekran görüntüsü almaya ya da karmaşık DOM ağaçlarını ayrıştırmaya gerek kalmaz.
Bunu WebMCP ile yapıyoruz; giriş noktası document.modelContext. Kurulum yok, key verilmiyor. Agent, kullanıcının açık oturumunda çalışıyor; ayrıca bir kimlik doğrulaması gerekmiyor.
Açtığımız tool'ların hepsi read-only. Katalog, fiyat ve doküman sorularını cevaplıyorlar; çalışma alanınızdaki hiçbir şeye dokunamıyorlar.
Bu sayfa Botonom'un ne açtığını anlatıyor. Standardın kendisini, henüz oturmamış taraflarını ve kendi sitenizin aksiyonlarını nasıl bildireceğinizi Web Uygulamanızı WebMCP'ye Hazırlayın yazısında bulacaksınız.
Sunulan Sayfa İçi Araçlar (Tools)
Beş tool her sayfada hazır. İki tool ise yalnızca kendi sayfasında görünüyor, ziyaretçi o sayfadan çıkınca listeden düşüyor.
| Tool | Neyi cevaplıyor | Nerede |
|---|---|---|
botonom_search_agents | Rol, kategori ve aylık maaşıyla işe alınabilecek yapay zeka çalışanları | her sayfa |
botonom_search_skills | Bir agent'a kurulabilecek yetenekler ve entegrasyonlar | her sayfa |
botonom_get_pricing | Planlar, token havuzları, agent maaşları, deneme süresi, yıllık indirim | her sayfa |
botonom_estimate_plan | Aylık konuşma hacmine hangi planın yettiği | her sayfa |
botonom_search_docs | Başlık, özet ve etikete göre bu dokümantasyon | her sayfa |
botonom_score_ai_readiness | AIQ değerlendirmesini çalıştırıyor, raporu ekrana basıyor | /tr/araclar/aiq |
botonom_prepare_contact_request | İletişim formunu dolduruyor, imleci Gönder düğmesine getiriyor | /tr/iletisim |
botonom_estimate_plan, fiyat sayfasının arkasındaki hesaplayıcının aynısını çalıştırıyor. Yani tool ne diyorsa sayfa da aynı rakamı gösteriyor; ikisi farklı çıkamıyor.
botonom_score_ai_readiness sayfa içi tool'un ne demek olduğunu en iyi anlatan örnek: değerlendirmeyi hem puanlıyor hem de raporu ekrana basıyor. Agent ile kullanıcı aynı ekrana bakıyor.
Nasıl Test Edilir?
WebMCP henüz W3C Community Group taslağı aşamasında; Chrome'da da yalnızca origin trial arkasından açılıyor. Sıradan bir tarayıcıda document.modelContext yok, dolayısıyla sayfalarımız hiçbir tool tanımlamıyor. Bu bir arıza değil, beklenen davranış.
Bugün bu tool'ları çağırabilen iki taraf var: WebMCP flag'iyle açılmış Chrome ve site tools özelliği açık olan ChatGPT masaüstü uygulamasının kendi tarayıcısı.
Kendiniz denemek isterseniz ayrı bir Chrome açın:
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--enable-features=WebMCP \
--user-data-dir=/tmp/webmcp-profile \
https://botonom.com/tr/fiyatlar
Açılan sayfanın konsolunda:
(await document.modelContext.getTools()).map(t => t.name)
Birini çalıştırmak için argümanları JSON string olarak verin:
await (async () => {
const tools = await document.modelContext.getTools();
const tool = tools.find(t => t.name === "botonom_get_pricing");
return JSON.parse(await document.modelContext.executeTool(tool, "{}"));
})()
Araçların Güvenlik Sınırları ve Kısıtlamaları
Aşağıdaki sınırların her birini, tool'u çalıştıran kodun kendisi uyguluyor.
- Form gönderemiyor, kimseye ulaşamıyor. İletişim tool'u alanları dolduruyor ve imleci Gönder düğmesine getiriyor. Submit handler'a erişimi yok, rıza onay kutularına dokunmuyor. Taslağı okuyup gönderen yine ziyaretçi.
- Para harcayamıyor. Satın alma yok, agent işe alma yok, plan değiştirme yok, token harcama yok.
- Açık oturumunuzu okuyamıyor. Her cevap, sitede zaten herkese açık olan veriden geliyor.
- Çalışma alanınızda hiçbir işlem yapamıyor. Agent listelemek, görev çalıştırmak, onay vermek MCP sunucusunun işi; orada her yetki tek tek onaylanıyor.
Sayfa İçi Araçlar (WebMCP) ile MCP Sunucusu Karşılaştırması
İkisi de var, farklı işler için.
| Sayfa içi tool (WebMCP) | MCP sunucusu | |
|---|---|---|
| Çalıştığı yer | Ziyaretçinin tarayıcı sekmesinde | Asistanınızda, HTTP üzerinden |
| Kimlik | Kullanıcının açık oturumu | OAuth, onayladığınız yetkilerle |
| Eriştiği veri | Herkese açık site içeriği ve sayfadaki veriler | Şirket çalışma alanınız: agent'lar, görev geçmişi (run log) ve talimatlar |
| Ne zaman | Uyumlu tarayıcıda, kullanıcı ekranın başındayken | Her zaman, zamanlanmış işler dahil |
| Kurulum | Yok | Tek seferlik bağlantı |
İşiniz sayfanın gösterdiğiyle sınırlıysa sayfa içi tool'lar yeter. Çalışma alanına dokunan ya da tarayıcı olmadan da çalışması gereken her şey için sunucuyu kullanın: https://mcp.botonom.com/mcp. Nasıl bağlanacağınız şurada anlatılıyor: Model Context Protocol (MCP) ile Asistan Entegrasyonu.
Sorun Giderme ve Teşhis
document.modelContext tanımsız geliyor. Tarayıcı API'yi açmıyor. Chrome'u --enable-features=WebMCP ile başlatın. Flag yalnızca kendi --user-data-dir'iyle sıfırdan açılan Chrome'da geçerli; zaten açık olan bir pencerede yeni sekme açmanız işe yaramıyor.
getTools() boş liste dönüyor. Bulunduğunuz sayfa hiçbir tool tanımlamıyor olabilir (örneğin gömülü bir widget'ın içindesiniz) ya da sayfa güvenli bağlamda değildir.
AIQ ya da iletişim tool'u listede yok. O ikisi yalnızca /tr/araclar/aiq ve /tr/iletisim sayfalarında tanımlanıyor. Sayfadan çıkınca kaybolmaları normal, öyle tasarladık.
executeTool "Failed to parse input arguments" diyor. Argümanlar nesne değil JSON string olmalı. JSON.stringify(args) kullanın.
Tool çağrısı reddedildi. Her handler kendi girdisini doğruluyor: AIQ tool'u on beş cevabın hepsini istiyor, iletişim tool'u geçerli bir kategoriyle birlikte konu ve mesaj istiyor. Hata metni hangisinin eksik olduğunu söylüyor.

