Agent Interoperability — ACP & ANP
A2A isn't the only agent-interop protocol. ACP (Agent Communication Protocol) and ANP (Agent Network Protocol) tackle nearby-but-different problems. This chapter maps the wider landscape so you can tell the protocols apart, understand what each optimizes for, and reason clearly in a space that is still consolidating.
Learning objectives
- Explain what ACP optimizes for and how it differs from A2A.
- Explain ANP's decentralized, open-network ambition and why identity is central.
- Place MCP, A2A, ACP, and ANP on one map by what they connect and at what scope.
- Reason about an emerging, unconsolidated standards space without over-committing.
- Extract the durable principles that outlast any single protocol.
Why several protocols? intermediate
Picture the moment this bites you. You just spent a week wiring your agent to talk to a partner team's agent using the protocol a blog post told you was "the standard." Two months later a client wants the same agent to also pull from an internal tool, and a third stakeholder is asking about a public "agent network" they read about. Suddenly you're staring at four acronyms — MCP, A2A, ACP, ANP — that all claim to be about "agents talking," and nobody can tell you which one you actually needed. The instinct is to pick a winner and move on. That instinct is the trap this whole chapter is built to disarm.
Here's the reframe that fixes it: these aren't four answers to one question — they're answers to four different questions. Think of the messaging apps on your phone. You don't ask "which one wins, iMessage or the office intercom?" — one is for texting friends, one is for paging a colleague down the hall. They coexist because they solve different jobs. Agent-interop protocols are the same: asking "which protocol wins?" is like asking whether a screwdriver beats a wrench. The right question is always "what am I connecting, and how far does it have to reach?"
The common beginner mistake is to treat the protocol as the goal ("we're adopting A2A") rather than as a fit for a specific connection. That's how teams end up forcing one wire format onto a job it was never shaped for — using a cross-org delegation protocol for a local tool call, or hand-rolling identity because they picked a protocol that assumed a trusted network. When you instead name the slice each protocol targets, the choices stop competing and start composing: you can see that a real system will happily speak several at once, each on the edge it fits. That slicing is the durable skill, because while the acronyms will churn, the questions won't.
"Let agents interoperate" isn't one problem — it's several, and different groups attacked different slices. Understanding the slice each targets is the whole game. Three axes separate them:
| Axis | The question it answers |
|---|---|
| What connects? | Agent↔tools (MCP) vs agent↔agent (A2A/ACP/ANP) |
| What scope? | Within a system · across organizations · across an open public network |
| What's centered? | Task delegation · message passing · decentralized identity & discovery |
ACP — Agent Communication Protocol intermediate
Start with the itch ACP is scratching. You have two agents that need to exchange messages, and you don't want to adopt a heavy, opinionated framework or assume both of them live in the cloud with a fat SDK between them. Maybe one runs on a device at the edge. Maybe you want to test the whole thing offline on your laptop. What you'd really like is the boring, universal thing: a plain HTTP endpoint you can hit with curl, a message goes in, a reply comes back, and it doesn't care what framework wrote either side. That "just let them talk over something everyone already speaks" instinct is what ACP is aiming at.
The clearest way to feel ACP is by analogy to why the web itself won. HTTP succeeded not because it was clever but because it was neutral and low-friction — any language, any server, any client could speak it, so nobody had to agree on a framework first. ACP applies that same spirit to agent messaging: a RESTful, framework-neutral communication substrate, deliberately easy to adopt from any stack, that works for local and offline scenarios and not only for big cross-cloud calls. Where A2A leads with "here is how I delegate a task to a remote peer and discover it," ACP leads with "here is the pipe two agents use to send each other messages." One centers the task; the other centers the transport underneath it.
The common confusion — and it is genuinely confusing, because the field is still young — is expecting a crisp, permanent wall between ACP and A2A. There isn't one, and you shouldn't manufacture one in your head. Both are "agents talking to agents," and their boundary is being actively reconciled as governance consolidates (more on that in the next callout). The useful move is not to memorize a precise line but to hold the two leans: reach toward ACP when what you want is a simple, REST-y message layer you can drop into any stack (including local or edge), and toward A2A when what you want is task delegation with built-in discovery across an organizational boundary. Treat those as tendencies, not laws — and re-check the current status when you're actually choosing, because the wording in this very section may have shifted by the time you build.
| ACP emphasis | Contrast with A2A (I2) |
|---|---|
| A general message layer between agents | A2A centers the task lifecycle (submitted→working→done) |
| REST-style, framework-neutral, easy adoption | A2A centers discovery via the Agent Card |
| Works for local/edge/offline too | A2A is oriented to remote, cross-org calls |
ANP — Agent Network Protocol intermediate
Here's the leap in ambition, and it's worth pausing on. Everything so far has assumed you arranged the connection in advance: you know the partner team, you exchanged endpoints, you set up credentials. ANP asks a much bolder question — what if you didn't? What if any agent, anywhere, run by anyone, could discover and talk to any other agent, the way any web browser can load any website without asking permission first? That's the vision behind ANP: not a wire between two parties you already trust, but an open, decentralized network of agents — an "internet for agents" — with no central broker sitting in the middle vouching for anyone.
The instant you remove the broker, a hard problem rushes in to fill the gap, and it's the same problem the early web had to solve. On a private link you trust the endpoint because you set it up. On an open network you're talking to strangers, so "I trust this endpoint" is worthless — the endpoint could be anyone. The only thing that can replace arranged trust is proof: the agent has to cryptographically demonstrate who it is, and you have to be able to verify that claim without phoning a central authority. This is exactly why the web needed TLS certificates before commerce could happen over it. So ANP puts decentralized identity — DID-style identifiers and verifiable descriptions — at its very foundation, not as a bolt-on security feature but as the thing that makes an open, broker-less network possible at all.
Two honest caveats before the diagram, because this is the most speculative protocol on the page and it would be easy to oversell. First, ANP is emerging — the vision is clear but the ecosystem, tooling, and adoption are early; treat it as a direction the industry might grow into, not a thing you deploy this quarter. Second, don't let "decentralized" trigger a mental jump to cryptocurrency or blockchains — the relevant idea here is verifiable identity (proving who you are with keys you control), which is a much older and more mundane concept than any particular ledger. The takeaway to carry forward isn't ANP's spec; it's the durable law it makes vivid: the wider the network you open your agent to, the more the whole thing rests on being able to verify who is on the other end. Hold that, and you'll reason correctly about open-network interop no matter which protocol eventually carries it.
This picture contrasts two shapes of agent-to-agent connection. The left side is how A2A and ACP normally work; the right side is the bigger, more open world ANP imagines. Read it left-to-right as a jump in scale.
- On the left ("A2A / ACP: point-to-point") you see two labelled
agentboxes with a single arrow between them. That arrow is one connection to one agent you already know about — a known peer you deliberately arranged to talk to, sitting on the other side of a boundary (a different team, company, or network). - On the right ("ANP: open mesh") the small circles are many agents and the lines criss-crossing between them are connections that form on the fly. No single agent is the hub — any agent can reach any other. That web-of-lines shape is what "open network" means.
- The captions under each side are the takeaway: left = known peer, across a boundary (you set it up in advance); right = any agent discovers any agent, identity-first (agents meet as strangers).
- Why "identity-first" on the right? With no central broker vouching for anyone, each agent must prove who it is before others trust it — hence verifiable identity is the foundation of the open-mesh vision.
In short: Point-to-point is like phoning a contact you already saved; the open mesh is like anyone on the internet being able to call anyone — which only works if callers can prove who they are.
The unified map advanced
This is the section to actually keep. If you forget every acronym on this page a year from now, the one thing that will still earn its keep is a mental picture that lets you place a protocol you've never seen in about ten seconds. Specs churn; a good map doesn't. So rather than memorize four definitions, we're going to fold them onto two axes so simple you can redraw them on a napkin — and then the individual protocols become just positions on that grid.
The two axes are the two questions you've been asking all chapter. First, what connects? — is this an agent reaching for tools and data, or an agent talking to another agent? Second, what scope? — does the connection stay within your own system, cross an organizational boundary, or reach out onto an open network of strangers? Plot those and a pattern falls out that is more useful than any single definition: as you travel rightward — within → cross-org → open network — the reach grows, and so does the amount of trust and identity work you're signing up for. Connecting your agent to your own database is nearly free on the trust axis; letting it transact with an anonymous agent on a public mesh is the expensive far end. The geometry is the lesson: distance on the map is a proxy for how much identity plumbing you'll owe.
A caution so you don't over-read the picture: these boxes are rough neighborhoods, not GPS pins. A protocol can straddle a line (ACP deliberately reaches toward local and cross-agent use), and the map flattens a messy, consolidating reality into clean cells on purpose — that simplification is what makes it portable. Use it the way you'd use a subway map: not to measure exact distances, but to know which direction you're heading and roughly how far. When the inevitable new protocol lands, don't reach for its documentation first — reach for this grid, ask the two questions, and you'll already know its nearest neighbor and what it will cost you before you read a single spec page.
Put all four protocols from this module on one picture. Read it by what connects and at what scope — that's how you place any new protocol you meet.
This is a 2-axis map that places all four protocols from the chapter in one picture. It answers two questions at once: what does each protocol connect (the rows, going down) and how far does it reach (the columns, going right). Read a box by where it sits in the grid.
- The columns are scope, widening left→right:
within(inside your own system) →cross-org(between organizations) →open network(out among strangers). The two vertical lines just separate these three zones. - The rows, top→bottom, are what connects: the top band is agent↔tools, the middle is agent↔agent, the bottom is the open agent network.
- MCP sits top-left — it connects an agent to tools and data, usually within your control. A2A / ACP sit in the middle at cross-org scope — agent talking to a known peer agent, typically across a company boundary.
- ANP sits at the bottom-right — the widest reach, an open mesh of agents that don't know each other yet. The little
↑ tools/↑ known peers/↑ strangerslabels underneath name who each column is really about. - The important pattern: as you move right (wider scope), the trust and identity you need grows — connecting to your own tool is easy, connecting to a stranger safely is hard.
In short: Position on the grid tells you the trade-off: further right means more reach but more identity/trust work. That's the whole map — place any new protocol by asking "what does it connect, and how far does it reach?"
| Protocol | Connects | Centered on | You'd reach for it when… |
|---|---|---|---|
| MCP (T3/I1) | Agent ↔ tools/data | Capabilities & resources | Your agent needs a tool or data source |
| A2A (I2) | Agent ↔ known peer | Task delegation + discovery | Delegate a task to a specific external agent |
| ACP | Agent ↔ agent | Message substrate, framework-neutral | A simple, REST-y comms layer (incl. local) |
| ANP | Agent ↔ any agent | Decentralized identity & discovery | An open, broker-less network of agents (emerging) |
The durable principles advanced
Why spend a section on principles when you came for protocols? Because of a pattern you can already feel forming: this space moves so fast that anything specific you learn has a short shelf life. Names merge, governance shifts, some protocols quietly fade. If your understanding is a list of today's acronyms, it decays with them. But underneath the churn sit a handful of problems that every agent-interop protocol must solve, because they fall out of the nature of the task itself — and those don't decay. Learn them, and you'll read next year's protocol announcement and recognize the same old bones under new skin.
Think of it like human languages. English, Hindi, and Japanese look nothing alike on the surface, yet every one of them has to solve the same universal jobs: naming things, saying who did what to whom, marking past from future. If you understand those jobs, you can pick up the shape of an unfamiliar language far faster than someone memorizing vocabulary. Interop protocols are the same. Strip away the wire formats and you find the same recurring jobs every time — a way to discover what a counterpart can do and how to reach it; a shared message contract so two systems built by strangers can still parse each other; a notion of identity and trust; support for long-running interactions that stream and resume rather than snapping back instantly; and the discipline of treating everything inbound as untrusted. Every protocol on this page is just a particular set of choices about those five jobs.
The mistake to avoid here is the opposite of the one earlier in the chapter: not over-committing to a protocol, but under-valuing the principles because they sound abstract. They're not abstract — they're the checklist you'll actually use when someone hands you an interop decision. When you evaluate a new protocol, don't ask "is it popular?"; ask "how does it handle discovery, what's its message contract, how does it establish identity, does it support long-running work, and does its design assume inbound data is safe?" The table below names these five so you can carry them as a lens. Notice, too, that each one ties back to something you've already learned elsewhere in the course — structured output, safety gates, streaming — which is the tell that these really are the durable substrate and not protocol trivia.
| Principle | Shows up as… |
|---|---|
| Discovery | Some machine-readable descriptor of "what can you do & how do I reach you" — MCP tool lists, A2A Agent Cards, ANP identity docs |
| A shared message contract | Agreed shapes for requests/results so heterogeneous systems interoperate (echoes structured output, Ch 2) |
| Identity & trust | Knowing who you're talking to — trivial within your walls, hard across an open network |
| Long-running interaction | Tasks that stream, pause, and resume — not just request/response (L5, I2) |
| Untrusted-input discipline | Anything from another agent is untrusted & must be validated (T1) — protocol-independent |
A practical stance on emerging standards advanced
Now the question that keeps engineers up at night: if the field is moving this fast and half these protocols might not survive, what do you actually do on Monday? Freezing is one failure mode — refusing to touch interop until "things settle" means you're still standing still when they do. Over-committing is the other — betting your architecture on a single unproven protocol, then eating a rewrite when it gets merged or abandoned. Both feel safe in the moment; both hurt later. There's a calmer middle path, and it's worth making explicit because it's how seasoned engineers handle any churning technology, not just this one.
The stance is best understood as separating two decisions that beginners tend to fuse: what you build on and what you watch. Build on the layer that is stable and adopted enough to carry real weight today — right now that's MCP, which is why it earned three chapters in this course while ACP and ANP get one shared one. But keep your agent-communications behind a thin abstraction, a seam in your code where the protocol lives, so that swapping A2A for whatever-comes-next is a localized change and not open-heart surgery. This is the same discipline you'd use wrapping any volatile dependency: depend on your interface, adapt the vendor's underneath it. The abstraction is cheap to add now and enormously expensive to retrofit later, which is exactly why it belongs in the "do" column.
The analogy that makes this stance click: it's how you'd treat a neighborhood that's clearly being developed but isn't finished. You build your house on the ground that's already solid (mature, adopted standards), you keep an eye on the plots being surveyed (track the frontier so consolidation doesn't surprise you), and you don't sink your foundation into a lot that's still just staked-out draft. Applied here: solve today's real needs on the proven layer, abstract the interop seam, and stay literate about the emerging protocols so you're ready — not scrambling — when one of them wins. The checklist below distills that into concrete do's and avoids; read it as the operating procedure for living on a frontier, not as advice specific to these four acronyms.
How to act sensibly while the field consolidates:
Common pitfalls expert
The pitfalls below aren't random — they're the predictable ways the ideas in this chapter get dropped under real deadline pressure. It's one thing to nod along to "learn the map, not the memo" while reading; it's another to hold that discipline at 5pm on a Friday when a stakeholder wants a protocol decision now. That gap between understanding a principle and actually applying it is where every item in this table lives. Skim them not as a list to memorize but as a set of alarms — moments where you'll feel the pull toward the easy-wrong move and want to catch yourself.
Notice the shape they share: nearly every pitfall is a form of collapsing a nuance you were just taught back into a false simplicity. Treating the protocols as competitors collapses "different slices" into "one winner." Memorizing exact boundaries collapses "leans that are consolidating" into "fixed facts." Trusting an agent's output because of its protocol collapses "the wire format is irrelevant to trust" into "this channel is safe." The fix in each row is the same move in reverse: re-expand to the principle — place by axes, verify specifics when it matters, treat all inbound as untrusted, keep the interop behind an abstraction. If you find yourself reaching for a shortcut that a row here warns against, that's your signal you've quietly dropped one of the durable ideas and should pick it back up.
| Pitfall | Fix |
|---|---|
| Treating the protocols as direct competitors | Place each by what it connects & at what scope |
| Memorizing today's exact boundaries | Learn the map; verify specifics when you must choose |
| Betting your architecture on one new protocol | Build on the stable layer; abstract the interop |
| Underestimating identity on open networks | Open discovery needs verifiable identity — plan for it |
| Trusting another agent's output by protocol | Untrusted input regardless of wire format (T1) |
| Ignoring interop entirely | Cross-agent collaboration is coming — stay literate |
Exercises expert
Exercise I3.1 — Place them on the map
Context: The one artifact that outlives every spec revision is a mental map of what each protocol connects and when to reach for it.
Your task: From memory, redraw the unified map and place MCP, A2A, ACP, and ANP by what they connect and at what scope, with a one-line "reach for it when…" trigger for each.
Requirements:
- Place all four by what they connect (tools vs agents) and their scope
- Give each a single "reach for it when…" trigger sentence
- Do it from memory — recall, not lookup, is the skill being built
- The result should stay correct even as the individual specs change
💡 Hint: If you can place a protocol on the two axes (what connects / what scope), the trigger sentence usually writes itself.
Exercise I3.2 — Slot a new protocol
Context: The durable test of the map is whether it can absorb something it has never seen — a protocol invented after you learned it.
Your task: Invent or find a hypothetical new agent protocol, place it on the three axes, and predict which existing protocol it most overlaps.
Requirements:
- Use only the three axes: what connects / what scope / what it centers on
- Locate the newcomer on all three
- Name its nearest existing neighbor and justify the overlap from the axes
- The reasoning, not the specific protocol, is the deliverable
💡 Hint: Answer the three axis questions in order — the answers both place it and reveal its closest existing relative.
Show the method
Ask: does it connect agents to tools or to other agents? Within a system, across orgs, or across an open network? Is it centered on delegation, messaging, or identity? Those three answers locate it — and reveal its nearest neighbor.
Exercise I3.3 — The trust checklist
Context: Whatever wire an external agent speaks, the trust decision is the same: you must authenticate, scope, validate, and gate before you act on its output.
Your task: Write a protocol-agnostic checklist for safely accepting work or output from any external agent, and confirm it reads identically across A2A, ACP, and ANP.
Requirements:
- Cover authenticate, scope/authorize, validate, and gate as distinct steps
- Keep every item independent of the wire protocol
- Verify the same checklist applies whether the transport is A2A, ACP, or ANP
- That protocol-independence is the point — call it out explicitly
💡 Hint: Write each item as a property of the interaction (who, what scope, valid shape, which action needs approval), never as a property of the transport.
🪜 Practice ladder beginner → industry
Six graded exercises, easy to real-world. Try each before opening its solution.
Context: Agent-interop protocols churn fast, but their shape is durable. The single most useful artifact is a one-line summary of what each protocol actually connects.
Your task: Write a lookup that returns a durable one-line summary for each of MCP, A2A, ACP, and ANP, keyed by protocol name.
Requirements:
- Store the four summaries in a dict keyed by protocol name (upper-cased)
- MCP is agent→tools/data; A2A is agent→peer task delegation; ACP is a general agent↔agent message substrate; ANP is an open, identity-centered network
- A lookup function returns the summary (and a sane fallback for unknowns)
- Print all four so the map is legible at a glance
💡 Hint: Capture what each protocol connects, not today's exact spec — the connection is what survives the churn.
Show solution
The map is worth more than any memo. Runnable:
SUMMARY = {
"MCP": "agent -> tools/data it uses (down)",
"A2A": "agent -> peer agent: delegate a task, with discovery",
"ACP": "agent <-> agent: a general REST-style message substrate",
"ANP": "open, decentralized network of agents; identity-centered",
}
def describe(p):
return SUMMARY.get(p.upper(), "unknown protocol")
for p in ["mcp", "a2a", "acp", "anp"]:
print(p.upper(), "::", describe(p))
Protocols move fast; the shape lasts. Learn what each connects, not today's exact spec.
Context: "Which protocol wins?" is the wrong question; "for this connection, at this scope, which fits?" is the right one. Three axes make that answerable.
Your task: Tag each of the four protocols on three axes — what connects, what scope, and what it centers on — and print the grid.
Requirements:
- Axis 1: what connects (agent↔tools vs agent↔agent)
- Axis 2: scope (in-system / cross-org / open-network)
- Axis 3: what it centers on (capability-invocation / task-delegation / message-passing / decentralized-identity)
- Model the axes as structured fields per protocol and print an aligned table
💡 Hint: Model each protocol as a small record of three fields; the value is in the columns lining up, not in any one label.
Show solution
Model the axes as fields and print the grid. Runnable:
AXES = {
"MCP": ("agent<->tools", "in-system", "capability-invocation"),
"A2A": ("agent<->agent", "cross-org", "task-delegation"),
"ACP": ("agent<->agent", "in-system+", "message-passing"),
"ANP": ("agent<->agent", "open-network", "decentralized-identity"),
}
print(f"{'proto':5} {'connects':14} {'scope':13} centered-on")
for p, (conn, scope, center) in AXES.items():
print(f"{p:5} {conn:14} {scope:13} {center}")
"Which wins?" is the wrong question. "For this connection, at this scope, which fits?" is the right one.
Context: ACP and A2A overlap on purpose (both are agents talking to agents), so choosing between them is about the slice of the problem, not the hype.
Your task: Write a selector that recommends ACP or A2A from the need: discovery, cross-org reach, wanting a REST-style substrate, or local/offline operation.
Requirements:
- ACP is favored for a general REST-style substrate or local/offline use
- A2A is favored when you need discovery and cross-org delegation
- Take the deciding factors as parameters (booleans) rather than free text
- Acknowledge the overlap case where either could serve — don't force a false winner
💡 Hint: Lead with the strongest single signal (a REST substrate or offline need points to ACP); note that the space is consolidating, so verify status when it's close.
Show solution
Pick by the slice, not by hype. Runnable:
def pick(need_discovery, cross_org, want_rest_substrate, local_offline):
if want_rest_substrate or local_offline:
return "ACP -- general message substrate, easy adoption, local-friendly"
if need_discovery and cross_org:
return "A2A -- task delegation with Agent Card discovery across orgs"
return "either overlaps here -- check current governance/status before picking"
print(pick(need_discovery=True, cross_org=True, want_rest_substrate=False, local_offline=False))
print(pick(need_discovery=False, cross_org=False, want_rest_substrate=True, local_offline=True))
They overlap on purpose (both are agents talking to agents) — which is why the space is consolidating. Hold the lean, verify status when you must choose.
Context: ANP's open network has no central broker, so an agent must prove who it is to strangers — decentralized identity has to be built in, not delegated to an authority.
Your task: Model a DID-style identity check offline with a toy signature: an agent presents an id plus a signature you verify against its published key material.
Requirements:
- Use only the standard library (e.g.
hashlib) — a hash stands in for real signing - A public directory maps a DID to a digest of its key material
verify()rejects an unknown DID and rejects a mismatched key- A valid signature over a message verifies True; a forged/other identity verifies False
- Demonstrate both the accept and the reject path
💡 Hint: Compose the signature from the DID, its secret, and the message; verification re-derives it and also checks the presented key against what the directory published.
Show solution
No central authority means identity must be verifiable point-to-point. Model it offline with a toy signature (a hash), stdlib only:
import hashlib
def sign(did, secret, message):
return hashlib.sha256(f"{did}|{secret}|{message}".encode()).hexdigest()
# public directory maps a DID to the digest of its secret (its "key material")
def register(did, secret):
return {did: hashlib.sha256(secret.encode()).hexdigest()}
def verify(directory, did, secret_claim, message, signature):
if did not in directory:
return False # unknown identity on the open network
if directory[did] != hashlib.sha256(secret_claim.encode()).hexdigest():
return False # key material does not match the published DID
return sign(did, secret_claim, message) == signature
dir_ = register("did:agent:alice", "s3cr3t")
msg, sig = "hello", sign("did:agent:alice", "s3cr3t", "hello")
print(verify(dir_, "did:agent:alice", "s3cr3t", msg, sig)) # True
print(verify(dir_, "did:agent:mallory", "x", msg, sig)) # False
Real ANP uses proper DIDs and public-key crypto (needs the spec/SDK). The durable point: on an open network, identity and verifiable descriptions must be built in — you can't lean on a broker.
Context: A mature system doesn't bet on one protocol — it speaks several, one per kind of connection: MCP for its tools, A2A for cross-org sub-tasks, ACP as an internal bus.
Your task: Write a dispatcher that, given an edge described by its kind and scope, routes it to the right protocol.
Requirements:
- A tool edge → MCP
- An agent edge that is cross-org → A2A; internal → ACP; open-network → ANP
- Route by the edge's nature (kind + scope), not by a hard-coded name
- Run it over a small list of mixed edges and print each routing decision
💡 Hint: The protocols are complementary layers; branch on (kind, scope) and give the common case a sensible default.
Show solution
A real system layers them. Route each edge by its nature. Runnable:
def dispatch(edge):
kind, scope = edge["kind"], edge["scope"]
if kind == "tool":
return "MCP"
if kind == "agent" and scope == "cross-org":
return "A2A"
if kind == "agent" and scope == "internal":
return "ACP"
if kind == "agent" and scope == "open-network":
return "ANP"
return "MCP"
edges = [
{"name": "vector-db", "kind": "tool", "scope": "internal"},
{"name": "partner-pricing", "kind": "agent", "scope": "cross-org"},
{"name": "sibling-worker", "kind": "agent", "scope": "internal"},
]
for e in edges:
print(f"{e['name']:16} -> {dispatch(e)}")
The protocols are complementary layers. The engineering skill is slotting each connection onto the right one, not betting on a single winner.
Context: The whole point of the axes map is to place newcomers fast. A new interop protocol will appear next quarter, and you shouldn't need to memorize its memo to react.
Your task: Write a triage that classifies a new protocol on the three axes and emits a posture: adopt-now / watch / ignore.
Requirements:
- Take the protocol's connects/scope/maturity and whether it overlaps existing protocols
- Stable + fills a real gap → adopt-now
- Promising but overlapping (or only shared-governance maturity) → watch
- Draft-stage → ignore for now (likely to churn or merge)
- Return both the placement (axes) and the stance
💡 Hint: Placement comes first (the axes locate it); maturity plus overlap then decide the posture. Names merge and governance shifts — the axes let you reason without over-committing.
Show solution
The whole point of the map is to place newcomers fast. Runnable:
def triage(proto):
connects = proto["connects"] # 'tools' | 'agents'
scope = proto["scope"] # 'in-system'|'cross-org'|'open-network'
maturity = proto["maturity"] # 'draft'|'shared-governance'|'stable'
overlaps = proto["overlaps_existing"]
# place it, then decide a posture
slot = f"connects={connects}, scope={scope}"
if maturity == "stable" and not overlaps:
stance = "ADOPT-NOW -- fills a real gap and is stable"
elif maturity in ("shared-governance", "stable"):
stance = "WATCH -- promising but overlaps; wait for consolidation"
else:
stance = "IGNORE for now -- draft-stage, likely to churn or merge"
return slot, stance
new = {"connects": "agents", "scope": "cross-org",
"maturity": "draft", "overlaps_existing": True}
slot, stance = triage(new)
print(slot)
print(stance)
This is a moving frontier: names merge, governance shifts, some fade. Learning the axes lets you reason about anything new without over-committing to today's field notes.
✓ Checkpoint — you can move on when you can…
- Explain what ACP emphasizes vs A2A.
- Explain ANP's open-network ambition and why identity is central.
- Place MCP, A2A, ACP, ANP on one map by what/scope.
- State the durable principles that outlast any single protocol.
- Take a sensible build-vs-watch stance on emerging standards.
Knowledge check check yourself
What does ACP emphasize compared with A2A, and why does ANP make decentralized identity its foundation?
Show answer
Using the two axes 'what connects' and 'what scope', place MCP, A2A/ACP, and ANP on the map.