thought
How agents actually talk to each other, from FIPA-ACL to MCP
First published on LinkedIn
Everyone is building multi-agent AI systems right now, but almost nobody is talking about the real bottleneck: how do these agents actually talk to each other?
I’ve been deep-diving into agent communication protocols, and the evolution from FIPA-ACL (1996) to today’s landscape is fascinating and honestly, a cautionary tale.
Here’s the thing most people miss: we solved this problem before. FIPA (Foundation for Intelligent Physical Agents) defined a formal Agent Communication Language back in the late ’90s. It had 20+ communicative acts (inform, request, propose), standardized message structures, a Directory Facilitator that worked like a yellow pages for agents, and platforms like JADE that made it production-ready.
So why did it fail commercially? Too much formality. Verbose XML encodings. Heavy ontology management. The web exploded, and developers chose simpler REST APIs over semantic-heavy agent protocols. Fast-forward to 2025, and we’re watching history rhyme.
The current approaches break down into three camps: 🔹 Intent Detectors / Routers, Classify what the user wants and route to the right agent. Works great for known categories (“reset password”, “check order status”), but falls apart with complex, multi-turn conversations where intent evolves. Semantic Router using vector embeddings is faster and cheaper (~sub-penny per query vs ~$0.65/10k for LLM classifiers), but still fundamentally reactive.
🔹 LLM-based Routing, Let the model itself decide which agent or tool to invoke. More flexible, handles ambiguity well, but adds latency and cost at scale. This is where most teams land today with function-calling and tool-use patterns.
🔹 Protocol-based Agent Communication, This is where it gets interesting. Google’s A2A (Agent2Agent), Anthropic’s MCP (Model Context Protocol), IBM’s ACP, and even the new NLIP standard from Ecma International are all trying to create the “HTTP of agents.” A2A handles agent-to-agent coordination. MCP handles agent-to-tool connections. They’re complementary, not competing.
Here’s what FIPA got right that we’re rediscovering:
- Agents need discoverable capabilities (FIPA’s Directory Facilitator → A2A’s Agent Cards)
- Communication needs structured semantics, not just raw JSON (FIPA’s performatives → A2A’s task lifecycles)
- Interoperability across platforms matters more than any single framework
And here’s what FIPA got wrong that modern protocols are fixing:
- Developer experience matters. MCP lets you get started in minutes, not weeks
- HTTP/JSON beats IIOP/XML every time
- Pragmatic simplicity wins over theoretical completeness (this is exactly why MCP is winning adoption over A2A right now)
My background is in building systems for millions of users, and I’ve seen this pattern repeatedly: the protocol that wins is never the most technically complete one. It’s the one developers actually want to use.