Tutorial

A2A Protocol 2026: Cara AI Agent Saling Ngobrol Lintas Vendor

A2A Protocol 2026: Cara AI Agent Saling Ngobrol Lintas Vendor

A2A (Agent2Agent) adalah protokol terbuka yang bikin agent dari vendor berbeda bisa saling kirim tugas tanpa saling membuka isi perutnya. Per 19 Oktober 2026, repo a2aproject/A2A punya 26.198 bintang, lisensi Apache-2.0, dan rilis terakhir v1.0.1 tanggal 28 Mei 2026. Protokol ini dikelola Linux Foundation sejak Google menyerahkannya ke Linux Foundation pada 23 Juni 2025. Bedanya sama MCP: MCP menghubungkan agent ke tool dan data, A2A menghubungkan agent ke agent lain.

TL;DR

  • A2A itu standar agent ke agent, transportnya JSON-RPC 2.0, gRPC, dan HTTP+JSON/REST.
  • Discovery lewat Agent Card di /.well-known/agent-card.json.
  • Ada 8 state task, dari submitted sampai auth_required.
  • SDK resmi tersedia 6 bahasa, termasuk Rust dan .NET.
  • Bukan pengganti MCP. Dua-duanya dipakai bareng, bukan dipilih salah satu.

Masalah yang dipecahkan A2A

Masalahnya sederhana: lo punya agent buatan LangGraph, vendor sebelah punya agent buatan Google ADK, klien lo punya agent buatan framework lain lagi. Tanpa standar, integrasinya jadi proyek custom satu per satu. A2A bikin ketiganya bicara bahasa yang sama.

Tiga hal yang dijamin protokol ini, mengutip spesifikasi resmi:

  • Agent bisa menemukan kemampuan agent lain tanpa konfigurasi manual.
  • Agent bisa negosiasi bentuk interaksi: teks, form, media.
  • Agent bisa kolaborasi pada tugas panjang tanpa mengekspos memori, state internal, atau daftar tool-nya.

Poin terakhir yang sering dilewatkan orang. A2A sengaja dirancang buat agent yang opaque. Lo nggak perlu tahu agent lawan pakai model apa, prompt-nya apa, atau tool-nya apa. Yang lo tahu cuma kontrak: dia punya skill apa, butuh input apa, dan mengembalikan hasil dalam bentuk apa.

Bedanya A2A sama MCP?

MCP dan A2A beda lapisan, bukan saingan. MCP menyelesaikan masalah “agent butuh akses ke tool dan data”, sedangkan A2A menyelesaikan masalah “dua agent otonom butuh saling mendelegasikan pekerjaan”. README resmi A2A menyebut A2A melengkapi MCP justru karena perannya beda.

Aspek          MCP                        A2A
-------------  -------------------------  -----------------------------
Arah koneksi   agent ke tool/data         agent ke agent
Unit kerja     tool, resource, prompt     task dan message
Discovery      capability server          Agent Card di well-known URI
Kontrol        satu agent pegang kendali  dua agent otonom bernegosiasi
Cocok buat     akses database, API, file  delegasi tugas antar vendor

Praktiknya di produksi, satu agent biasanya butuh dua-duanya. Dia pakai MCP buat baca database dan manggil API internal, lalu pakai A2A buat menyerahkan sebagian pekerjaan ke agent spesialis milik tim lain. Kalau lo masih bingung mana yang harus dipelajari dulu, mulai dari MCP karena permukaannya lebih kecil, lalu lanjut ke A2A saat mulai butuh delegasi lintas sistem.

Versi mana yang harus lo pakai di 2026?

Pakai v1.0.1 kalau mulai dari nol, dan siap-siap karena v1.0 membawa breaking change dari v0.3.x. Berikut garis waktu rilis yang terverifikasi di halaman release GitHub:

Versi     Tanggal rilis     Catatan
--------  ----------------  ------------------------------------------
v0.3.0    30 Juli 2025      Method JSON-RPC masih gaya message/send
v1.0.0    12 Maret 2026     Nama method jadi PascalCase: SendMessage
v1.0.1    28 Mei 2026       Patch terakhir per 19 Oktober 2026

Dua perubahan yang paling nyakitin saat upgrade. Pertama, nama method JSON-RPC berubah dari message/send jadi SendMessage, dari tasks/get jadi GetTask, dan seterusnya mengikuti konvensi gRPC. Kedua, field kind sebagai pembeda tipe Part dihapus di v1.0. Kalau server lo masih balikin {"kind": "text", "text": "..."}, client v1.0 yang strict bakal nolak.

Spesifikasi juga menyediakan masa transisi: server boleh menerima dua bentuk request selama periode overlap, tapi sebaiknya hanya mengirim bentuk baru di response.

Discovery: Agent Card di well-known URI

Lewat Agent Card, file JSON yang ditaruh di https://{domain}/.well-known/agent-card.json. Client cukup GET alamat itu, lalu tahu agent lawan bisa apa, lewat binding apa, dan butuh autentikasi apa.

Bentuk minimalnya seperti ini, disederhanakan dari contoh di spesifikasi:

{
  "name": "agent-echo",
  "description": "Agent contoh yang mengembalikan pesan",
  "version": "1.0.0",
  "capabilities": { "streaming": false, "pushNotifications": false },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "skills": [
    { "id": "echo", "name": "Echo", "description": "Mengembalikan input", "tags": ["echo"] }
  ],
  "supportedInterfaces": [
    { "url": "https://example.com/a2a/v1", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" }
  ]
}

Perhatikan supportedInterfaces. Satu agent boleh mengumumkan beberapa binding sekaligus: JSON-RPC, gRPC, dan HTTP+JSON. Client tinggal pilih yang paling nyaman. Ini yang bikin A2A nggak ngunci lo ke satu gaya transport.

Anatomi satu panggilan JSON-RPC

Satu panggilan itu JSON-RPC 2.0 biasa dengan method SendMessage. Nggak ada magic, nggak ada SDK wajib. Kalau bisa curl, lo bisa ngobrol dengan agent A2A.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SendMessage",
  "params": {
    "message": {
      "role": "user",
      "parts": [{ "text": "Cek stok gudang Bandung hari ini" }]
    }
  }
}

Response-nya salah satu dari dua: Task kalau pekerjaannya butuh waktu, atau Message kalau jawabannya langsung. Task punya lifecycle yang jelas dengan 8 state: submitted, working, completed, failed, canceled, rejected, input_required, dan auth_required.

Dua state terakhir yang bikin protokol ini terasa dewasa. input_required berarti agent butuh klarifikasi di tengah jalan, bukan langsung gagal. auth_required berarti agent menyerahkan urusan otorisasi balik ke client, misalnya saat butuh akses ke sistem pihak ketiga yang cuma client yang punya kredensialnya.

Buat tugas panjang, ada tiga cara memantau progres: streaming SSE lewat SendStreamingMessage, polling lewat GetTask, atau push notification ke webhook yang didaftarkan client. Semua itu opsional dan dideklarasikan di Agent Card, jadi client tahu harus pakai jalur mana.

Kapan A2A layak dipakai, kapan malah ribet?

Layak dipakai kalau:

  • Ada dua agent atau lebih dari tim, vendor, atau framework berbeda yang harus bekerja pada satu alur bisnis.
  • Salah satu pihak nggak mau membuka tool, prompt, atau memori internalnya ke pihak lain.
  • Pekerjaannya panjang dan butuh progres, pembatalan, atau klarifikasi di tengah jalan.

Malah ribet kalau:

  • Cuma ada satu agent dan beberapa tool. Itu wilayah MCP, bukan A2A.
  • Semua komponen masih dalam satu codebase dan satu tim. Function call biasa lebih murah.
  • Lo butuh latensi sangat rendah antar komponen internal. Lompatan HTTP antar agent menambah overhead yang nggak perlu.

Aturan praktisnya: kalau “pihak lain” itu masih satu repo dan satu deploy, jangan pakai A2A dulu.

Berapa effort implementasinya?

Effort terbesarnya bukan di protokol, tapi di desain kontrak skill dan autentikasi. Protokolnya sendiri sudah disederhanakan lewat SDK resmi yang tersedia dalam 6 bahasa: Python, Go, JavaScript, Java, .NET, dan Rust. SDK Python a2a-sdk versi terbaru 1.2.2 dan butuh Python 3.10 ke atas, dicek langsung dari PyPI.

Buat eksperimen, satu VPS kecil sudah cukup karena gateway A2A itu cuma HTTP server. Yang bikin biaya naik biasanya bukan servernya, tapi token model yang dipanggil di belakangnya. Kalau agent lo memanggil model lewat API terkelola, Alibaba Cloud Model Studio salah satu opsi buat akses model Qwen tanpa nyewa GPU sendiri. Alternatif lain ya pakai provider yang sudah lo punya, karena protokol A2A nggak peduli model apa yang dipakai di dalam agent.

Jebakan yang paling sering ketemu

Agent Card bisa dipalsukan. Siapa pun bisa menaruh file JSON di domainnya dan mengaku punya skill tertentu. Verifikasi domain, pakai HTTPS, dan jangan percaya buta pada deskripsi skill. Untuk agent yang sensitif, aktifkan extendedAgentCard yang cuma bisa diakses setelah autentikasi.

Prompt injection lintas agent. Ini risiko yang naik level saat agent saling bicara. Output dari agent A masuk sebagai input ke agent B, dan instruksi jahat bisa ikut terbawa. Perlakukan pesan antar agent sebagai data yang nggak dipercaya, sama seperti lo memperlakukan hasil scraping.

Versi nggak cocok. Spec menyediakan header A2A-Version dan error VersionNotSupportedError, tapi banyak implementasi awal masih mengabaikannya. Uji dulu ke versi lawan sebelum masuk produksi.

Autentikasi dianggap remeh. Agent Card mendukung beberapa skema keamanan, termasuk OAuth 2.0 dan OpenID Connect. Jangan pakai API key statis yang ditulis di config tanpa rotasi, apalagi kalau agent-nya bisa dipanggil dari internet.

Idempotency. Spec menaruh perhatian pada idempotency operasi, tapi implementasi sendiri yang harus menjaminnya. Kalau client retry karena timeout, pastikan tugasnya nggak jalan dua kali.

Rekomendasi Tools & Layanan

  • OpenCrabs menyertakan gateway A2A bawaan: HTTP server JSON-RPC 2.0 dengan method message/send, message/stream, tasks/get, dan tasks/cancel, plus auth Bearer opsional. Catatan jujur: README-nya menyebut implementasi RC v1.0, jadi cek kompatibilitas method dengan lawan bicara yang sudah v1.0.1 final.
  • a2a-sdk Python paling cepat buat prototipe, dokumentasinya lengkap, dan sudah 1.2.2.
  • VPS kecil buat gateway sudah cukup, tapi kalau agent-nya manggil model lewat API, paket token AI Alibaba Cloud layak dibandingkan dengan provider lain sebelum lo commit ke volume besar.
  • MCP server buat akses tool dan data tetap dibutuhkan, karena A2A nggak menggantikannya.

FAQ

Apakah A2A gratis?

Ya. Spesifikasinya terbuka dan repo-nya berlisensi Apache-2.0, jadi siapa pun boleh implementasi tanpa biaya lisensi. Biaya yang muncul berasal dari hosting, model LLM, dan waktu engineering.

Apakah A2A bisa dipakai tanpa framework agent?

Bisa. A2A cuma kontrak HTTP dan JSON, jadi agent buatan sendiri dengan bahasa apa pun bisa patuh selama mengirim dan menerima format yang benar. SDK resmi mempercepat, bukan mewajibkan.

Apa bedanya A2A dengan function calling?

Function calling itu mekanisme satu model memanggil satu fungsi di dalam prosesnya sendiri. A2A itu mekanisme dua sistem otonom saling mengirim tugas lewat jaringan, lengkap dengan lifecycle, pembatalan, dan autentikasi.

Apakah A2A sudah dipakai di produksi?

Belum ada data publik yang mengukur tingkat adopsi produksinya. Yang bisa dipastikan: protokolnya sudah v1.0.1, dikelola Linux Foundation, dan punya SDK resmi di 6 bahasa. Untuk klaim adopsi skala besar, tunggu angka resmi, jangan percaya thread media sosial.

Harus pilih A2A atau MCP?

Nggak perlu memilih. MCP buat akses tool dan data, A2A buat delegasi antar agent. Sistem yang matang biasanya memakai keduanya di lapisan berbeda.

💬 Komentar (0)

Belum ada komentar. Jadilah yang pertama! 💬

Komentar yang memuat tautan, bahasa asing, atau aksara non-Latin ditahan dulu buat ditinjau.