· kaynak dev.to (home feed)
TrickyBird, tek bir open_site aracı sunmadan önce proxy'lenen sayfalarda WebMCP'yi devre dışı bırakıyor
Bir dev.to yapım notu, TrickyBird web proxy'sinin tarayıcı ajanlarına tek bir open_site aracı sunmadan önce proxy'lenen çerçeveler genelinde WebMCP araç kaydını neden engellemek zorunda kaldığını anlatıyor.

Proxy, WebMCP'nin güvendiği izolasyonu ortadan kaldırıyor
Web proxy'si TrickyBird'nin geliştiricisi, dev.to üzerinde hizmetin tarayıcı ajanlarına bir WebMCP aracı sunmadan önce neleri değiştirmek zorunda kaldığını anlatan bir yapım notu yayımladı — ve ilk değişiklik, bu yeteneği başka her yerde kapatmaktı.
WebMCP, bir sayfanın tarayıcının ajanına yorumlanacak bir DOM yerine gerçek bir fonksiyon devretmesini sağlıyor; bunu document.modelContext.registerTool çağrısıyla, bir ad, açıklama, input şeması ve execute geri çağrısı ile yapıyor. Özellik, varsayılanı self olan bir Permissions Policy arkasında duruyor. Sıradan bir sitede bu varsayılan izolasyonu bedavaya sağlar: bir reklam çerçevesi farklı bir origin'e aittir, dolayısıyla ana sayfaya hiçbir şey kaydedemez.
Bir proxy bu varsayımı yok eder. Yazara göre proxy'lenen bir sayfadaki her çerçeve — içerik de reklamlar da — proxy'nin kendi origin'inden sunulduğu için self hepsini kapsar. Okuyucunun hangi siteyi açmış olursa olsun, ona ait bir çerçeve bir araç kaydedebilir ve ajan da bu aracı o okuyucunun oturumu içinde çağırabilir.
Bir aracı açmadan önce araçları kilitlemek
TrickyBird'nin yaptığı ilk WebMCP değişikliği bir reddetme oldu. Gateway artık sunduğu her belgenin Permissions-Policy başlığında tools=() beyan ediyor. Bayrakla etkinleştirilen WebMCP ile proxy'lenen bir sayfada registerTool NotAllowedError ile reddediliyor; yeni oluşturulmuş bir about:blank çerçevesinden gelen çağrı da öyle — düzleştirilmiş origin modelinin aksi halde kabul edeceği tam olarak bu durumdu. Yazar her iki davranışın da Chrome 152'de ölçüldüğünü belirtiyor.
Başlığa ek olarak, enjekte edilen bir shim proxy'lenen sayfalardan document.modelContext'i sildiği için, API'yi yoklayan bir site onun var-ama-reddediyor değil, yok olduğunu görüyor. Yazar, kısıtlamayı fiilen başlığın uyguladığını not ediyor, çünkü shim'in ulaşamadığı her realm yine de onu devralır.
Sunduğu tek araç
Aracın kendisi, yalnızca şirketin kendi HTML'ini sunan TrickyBird'nin ana sayfasında yaşıyor. open_site adındaki bu araç bir adres alıyor, sayfanın formunun zaten kullandığı aynı doğrulamayı çalıştırıyor ve sekmeyi proxy'lenmiş sonuca yönlendiriyor. Site olmayan girdi reddediliyor ve yazar, aracın asla arama yapmadığını vurguluyor.
Her zaman bir promise olmayan promise
Not, aynı deseni uygularsanız kopyalamaya değer bir hatayı da kayda geçiriyor. Taslak spesifikasyon registerTool'ün bir promise döndürdüğünü söylüyor ve özgün effect hook da buna göre yazılmıştı: bir .catch zincirle, sonra temizliği döndür. Ancak bazı Chrome OS ve Edge sürümlerinde çağrı onun yerine undefined döndürmüş; .catch daha sonra, henüz hiçbir temizlik yokken effect'in içinde hata fırlatmış ve sayfanın bir sonraki açılışı yinelenen araç adıyla InvalidStateError vermiş.
Düzeltme tek satırlık savunmacı bir biçimlendirme: çağrıyı bir try bloğu içinde Promise.resolve() ile sarmak, böylece bir red, senkron bir fırlatma ve çıplak bir undefined hepsi aynı şekilde sonuçlanır ve temizlik her zaman döndürülür.
Sonucun nasıl doğrulandığı
İki doğrulama sunuluyor. Lighthouse 13.4.1 agentic-browsing kategorisi içeriyor; ana sayfa araç varmadan önceki haliyle 1 puan alıyor; kayıt tablosu open_site'ı listeliyor ve şema geçerliliği denetimi de 1 puan alıyor. Ayrıca Chrome 152, open_site'ı trickybird.com üzerinde listeliyor.
Beklentiler bilinçli olarak mütevazı. Yazar, bugün mevcut tek tüketimin ChatGPT masaüstü tarayıcısı olduğunu ve kullanıcı ajanlarından hiçbirinin TrickyBird'nin kendi trafiğinde görünmediğini yazıyor — kendini tanıtmak zorunda olmadığı için bu yokluğun sandığından daha az anlamı olabilir.
Neden önemli
Bu, WebMCP'nin başka insanların içeriğini tek bir origin altında sunan hizmetler için ne anlama geldiğine dair ilk pratik anlatılardan biri. Sıradan siteleri koruyan self varsayılanı proxy'lere, HTML yeniden yazma katmanlarına veya gömme hizmetlerine hiçbir şey sunmuyor; ajan araçları sunan herhangi biri, kendiündekini sunmadan önce muhtemelen aynı başlıklarla yapılan opt-out'a ihtiyaç duyacak.
Not ayrıca genç bir API'deki gerçek uygulama sapmasını belgeliyor: promise döndürmesi specksiyonlaştırılmış bir şey, Chrome OS ve Edge sürümlerinde farklı davranıyor ve savunmacı sarmalama deseni, speksiyon oturmadan registerTool çağıran herkes için yararlı bir referans.
Son olarak bu, benimsenmenin gerçekte nerede durduğunun bir hatırlatıcısı. Ajan trafiği yayıncılar için hâlâ fiilen görünmezken, WebMCP'yi erken entegre etmek ekosistemin nasıl şekilleneceğine dair bir bahis; bugün ölçülebilir kullanıcılar için bir hamle değil.
- #webmcp
- #permissions-policy
- #browser-agents
- #web-proxy
- #chrome