Tarık Şenkal
Yazılar
A2A: Ajanlar Birbiriyle Nasıl Konuşur? (MCP'nin Rakibi Değil, Tamamlayıcısı)
Araçlar 6 dk okuma

A2A: Ajanlar Birbiriyle Nasıl Konuşur? (MCP'nin Rakibi Değil, Tamamlayıcısı)

A2A v1.0 ajanlar arası keşif ve görev devrini standartlaştırıyor. Agent Card, görev yaşam döngüsü, MCP ile farkı ve ajan ticaretinin protokol katmanı.

İsmail Tarık Şenkal
Yapay zeka geliştiricisi · HatsonTech kurucu ortağı

Şirketinizin bir seyahat ajanı var, muhasebe departmanının bir harcama onay ajanı var ve ikisi birbirinden habersiz çalışıyor. Seyahat ajanının onay isteyebilmesi için ya muhasebenin iç mantığını öğrenmesi ya da birilerinin araya bir entegrasyon yazması gerekiyor. A2A tam olarak bu problemi standartlaştırıyor: bir ajanın başka bir ajanı bulup ona iş devredebilmesini — iç mantığını görmeden. Bu yazıda A2A’nın nasıl çalıştığını ve MCP ile ilişkisini net bir sınırla anlatıyorum.

A2A ile MCP aynı katmanda değil

“A2A mı MCP mi?” sorusu yanlış kurulmuş bir soru; ikisi farklı ilişkileri tarifliyor. A2A’nın kendi konumlandırması da bunu açıkça söylüyor: tamamlayıcı.

MCPA2A
Kimin kiminleAjan ↔ araçAjan ↔ ajan
Karşı tarafBelirlenimci bir işlev (dosya oku, sorgu çalıştır)Kendi başına akıl yürüten, kendi araçları olan bir sistem
SözleşmeGirdi şeması → çıktıYetenek tanımı → görev, durum makinesiyle
SüreGenellikle tek çağrı, kısaUzun süreli; dakikalar, saatler, insan onayı arası
GörünürlükAraç ne yaptığını tamamen açarAjan iç mantığını, promptlarını ve araçlarını açmaz

MCP bir ajanın elini uzatmasıdır; A2A bir ajanın başka birine iş devretmesidir.

Son satır en önemlisi. Bir ajanı MCP aracı olarak sarmalayabilirsiniz — teknik olarak mümkün — ama o zaman karşı tarafın uzun sürebileceğini, ara durum bildirebileceğini, insan onayı bekleyebileceğini ve kendi başına karar verebileceğini ifade edecek bir sözleşmeniz olmaz. A2A’nın var oluş nedeni budur.

Yönetişim tarafı da olgunlaştı: A2A v1.0’a ulaştı, Google tarafından başlatıldıktan sonra Linux Foundation’a devredildi ve bugün AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP ve ServiceNow’un yer aldığı bir teknik yönlendirme komitesi tarafından yürütülüyor. Lisans Apache-2.0.

Agent Card: ajanın kartviziti

Keşif, A2A’nın ilk problemi: bir ajan başka bir ajanın ne yapabildiğini nasıl öğrenir? Cevap, ajanın kendi alan adında yayınladığı makine tarafından okunabilir bir tanım — Agent Card.

Kartın en çok işe yarayan kısmı skills. Dikkat edin: bir yetenek, MCP aracı gibi katı bir JSON şeması değil; doğal dille tarif edilmiş bir iş ve birkaç örnek. Bunun sebebi karşı tarafın da bir dil modeli olması. Çağıran ajan bu tanımı okur ve “benim elimdeki iş buna uyuyor mu?” kararını verir. Örnekler bu yüzden dekoratif değil, işlevseldir.

İpucu: Yetenek açıklamasını iki soruya cevap verecek şekilde yazın: ne yapar ve ne yapmaz. En sık görülen entegrasyon hatası, çağıran ajanın kapsam dışı bir işi "yaklaşık uyuyor" diye devretmesi. "Yalnızca 50.000 TL altındaki talepleri değerlendirir; üstü insan onayına gider" cümlesi, bir şema alanının yapamayacağı işi yapar.

Görev yaşam döngüsü

A2A’nın çekirdek nesnesi görev (task). Bir görev, kimliği olan ve durumu zamanla değişen bir varlıktır — tek bir istek-yanıt değil. Bu, uzun süreli işlerin protokole yazılmış hâlidir.

submitted ──> working ──┬──> completed      (bitti)
                        ├──> input-required (girdi bekliyor)
                        ├──> failed         (hata)
                        ├──> canceled       (iptal)
                        └──> rejected       (kabul edilmedi)

      input-required ──> working   (istemci yanıt verince)
text

input-required durumu en ayırt edici olanı. Uzaktaki ajan işin ortasında durabilir ve “bu talep politika sınırında, yöneticinin onayı gerekiyor” diyebilir. Çağıran ajan bu durumu kullanıcısına taşır, cevabı alır ve aynı göreve iletir. Görev kimliği baştan sona aynı kalır; yani iki taraf da işin neresinde olduklarını bilir.

Görev sonuçları iki biçimde döner: mesajlar (konuşma niteliğindeki ara çıktılar) ve eserler (artifact — üretilen kalıcı çıktı: bir rapor, bir dosya, yapılandırılmış bir sonuç). Uzun süren görevler için pushNotifications yeteneği var: istemci bir geri çağrı adresi verir, ajan durum değiştikçe oraya bildirir. Saatler süren bir görevde bağlantıyı açık tutmak zorunda kalmazsınız.

Bir devir akışı, uçtan uca

Python ile, keşiften sonuca kadar. Kart okunuyor, uygun yetenek seçiliyor, görev gönderiliyor ve durum takip ediliyor.

Bu döngüde dikkat edilecek üç şey var. Birincisi, zaman aşımı çağıran tarafta olmalı — uzaktaki ajanın ne kadar süreceğine dair sözleşmesi yok, dolayısıyla vazgeçme kararı sizindir. İkincisi, yoklama yerine bildirim tercih edin; pushNotifications destekleniyorsa yukarıdaki while döngüsü yerine bir geri çağrı uç noktası kullanın. Üçüncüsü, rejected durumunu failed ile karıştırmayın: birincisi “bu işi almıyorum” demektir ve tekrar denemek anlamsızdır; ikincisi geçici olabilir.

Ajan ticareti: üstüne binen katman

A2A’nın 2026’da somutlaştığı yer ajanların birbirinden satın alması. Görev devri standartlaştığında sıradaki soru ödemenin nasıl yapılacağı oluyor ve bu boşluğu iki ayrı girişim dolduruyor.

  • Agentic Commerce Protocol — OpenAI ve Stripe’ın birlikte yayınladığı, Apache-2.0 lisanslı, REST ve MCP üzerinden çalışan bir protokol. ChatGPT içinde canlı olarak kullanılıyor; satıcı katalogunu ve sipariş akışını ajanın doğrudan tüketebileceği hâle getiriyor.
  • AP2 (Agent Payments Protocol) — Google’ın 16 Eylül 2025’te duyurduğu yaklaşım. Merkezinde imzalı yetki belgeleri (Mandate) var: kullanıcının ajanına verdiği harcama yetkisi kriptografik olarak imzalanır ve zincir boyunca doğrulanabilir. Mastercard, PayPal, Amex, Adyen ve Etsy dahil 60’tan fazla ortakla duyuruldu.

Bu iki yaklaşımın ortak sorduğu soru şu: bir ajan sizin adınıza para harcadığında, harcama yetkisinin gerçekten sizden geldiğini kim ve nasıl kanıtlar? AP2’nin imzalı mandate yanıtı, ajan ticaretinin kimlik doğrulama katmanını çözmeye çalışıyor — çünkü “ajanım öyle dedi” bir ödeme itirazında hiçbir şey ifade etmez.

Güvenlik: ASI07 ve sınırlar

OWASP’ın 2026 ajan risk listesinde ASI07 — Güvensiz Ajanlar Arası İletişim ayrı bir madde olarak yer alıyor ve A2A tam olarak bu yüzeyi açıyor. Dikkat edilecek üç nokta:

  1. Uzaktaki ajan güvenilmez bir içerik kaynağıdır. Döndürdüğü metin sizin ajanınızın bağlamına girer. Kendi sisteminizde bu metni kullanıcı girdisi gibi işleyin: ondan türeyen değerlerle yan etkili araç çağırmayın.
  2. Yetki devri zincirleme büyür. A ajanı B’ye, B de C’ye iş devrederse, C’nin hangi yetkiyle çalıştığı hızla belirsizleşir. Agent Card’daki securitySchemes alanını ciddiye alın ve devredilen erişim token’ının kapsamını her sıçramada daraltın — genişletmeyin.
  3. Kartın kendisi doğrulanmalıdır. Agent Card bir alan adında yayınlanan JSON’dur; onu getiren kanal TLS ile korunmuyorsa ya da kart bir yönlendirmenin sonunda başka bir alan adından geliyorsa, konuştuğunuz ajanın kim olduğunu bilmiyorsunuz demektir.

Pratik bir kural: A2A ile bağlandığınız her ajanı, kendi sisteminizin dışında duran bir üçüncü taraf API’si gibi ele alın — çünkü öyledir. Aynı organizasyon içinde bile. Ajanlar arası güvenin varsayılan olarak yüksek olduğu mimariler, ilk zehirli görev sonucunda çöker.

Öne çıkanlar

  • MCP ajan↔araç, A2A ajan↔ajan katmanıdır; A2A'nın kendi konumlandırması MCP'yi tamamlayıcı olduğu yönündedir.
  • A2A v1.0 Linux Foundation altında, AWS/Cisco/Google/IBM/Microsoft/Salesforce/SAP/ServiceNow'un yer aldığı bir komiteyle yürütülüyor; lisans Apache-2.0.
  • Keşif Agent Card ile, iş ise durum makinesi olan görevlerle yürür; input-required uzun süreli ve insan onaylı akışları protokole taşır.
  • Ajan ticareti üstüne binen katmandır: ACP (OpenAI + Stripe) ve imzalı Mandate temelli AP2 aynı yetki kanıtı sorununu çözmeye çalışır.
A2A kullanmak için ajanımı yeniden yazmam gerekir mi?

Hayır. A2A ajanınızın iç mimarisine hiçbir şey dayatmaz — hangi modeli kullandığınız, nasıl akıl yürüttüğünüz, hangi araçları çağırdığınız protokolün görüş alanı dışındadır. Eklemeniz gereken iki şey var: yayınlanan bir Agent Card ve görev yaşam döngüsünü konuşan bir HTTP uç noktası. Mevcut ajanınızı bu uç noktanın arkasına koymak çoğu durumda birkaç yüz satırlık bir sarmalayıcı işidir.

Aynı sistemde hem MCP hem A2A kullanılır mı?

Tipik kurulum tam olarak budur. Ajanınız kendi araçlarına MCP ile ulaşır — veritabanı, dosya sistemi, arama. Kendi başına halledemediği, başka bir ekibin veya şirketin sahip olduğu işi ise A2A ile devreder. İkisi aynı çağrı yığınında farklı katmanlarda durur; birini seçip diğerini elemek gerekmez.

Uzaktaki ajan işi yanlış yaparsa sorumluluk kimde?

Protokol bu soruyu çözmez, ama görünür kılar. Görev nesnesinin kimliği, durum geçişleri ve döndürdüğü eserler denetlenebilir bir iz bırakır — hangi talebin hangi ajana ne zaman devredildiği ve ne döndüğü kayıtlıdır. Sorumluluk paylaşımı sözleşmesel bir konudur; sizin mühendislik göreviniz, o sözleşmenin dayanacağı izi eksiksiz tutmak ve devredilen yetkiyi mümkün olan en dar kapsamda vermektir.


Özetle: A2A, ajanların birbirini bulup iş devredebilmesi için eksik olan ortak dili sağlıyor — ve bunu MCP’nin yerine değil, onun bir katman üstünde yapıyor. Araç katmanının nasıl çalıştığını MCP’ye giriş yazısında, bu ajanların iç mimarisini otonom ajan mimarileri yazısında, araçların modele nasıl tarif edildiğini ise fonksiyon çağırma yazısında bulabilirsiniz.

İsmail Tarık Şenkal
Yazar
İsmail Tarık Şenkal

Kısaca: araştırmadan çıkan yapay zekayı, insanların günlük işinde güvenebileceği ürünlere çeviriyorum.

Benzer yazılar