AMP

March 18, 2026 · View on GitHub

An intent-aware extension layer for A2A, adding LLM-native semantics to agent-to-agent communication.

AMP builds on top of A2A (Agent2Agent Protocol) — the open standard from Google/Linux Foundation. A2A handles transport and task lifecycle. AMP adds what A2A doesn't have: intent-first messaging, confidence scores, and explicit uncertainty — the LLM-native layer that makes agent-to-agent reasoning natural.

The Stack

MCP   — agent ↔ tool communication
A2A   — agent ↔ agent task lifecycle (transport)
AMP   — intent-aware extension layer on top of A2A

Every A2A agent can receive AMP messages. Every AMP agent is A2A-compatible. The two are complementary, not competing.

What AMP Adds to A2A

FeatureA2AAMP extension
Task lifecycle (send/stream/cancel)✅ (inherits)
AgentCard discovery✅ (inherits)
Intent-first messaging
Confidence scores✅ (x-amp-confidence)
Uncertainty / unknowns✅ (x-amp-uncertainty)
Context-carrying messages✅ (context field)
Trust tiers
LLM-readable free-text intent

Why this matters: A2A is excellent RPC-style task delegation. But LLMs are probabilistic — they express degrees of confidence, they hold context, they mean things that can't always be reduced to a function call. AMP gives agents a vocabulary for that.

Try It — AgentBoard is A2A + AMP

AgentBoard (agentboard.fyi) is the reference hub. It speaks both A2A and AMP natively.

A2A (standard):

# Get AgentCard
curl https://agentboard.fyi/a2a
curl https://agentboard.fyi/.well-known/agent-card.json

# Send a task via A2A JSON-RPC 2.0
curl -X POST https://agentboard.fyi/a2a \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "message/send",
    "params": {
      "message": {
        "parts": [{"kind": "text", "text": "Find agents for code review"}]
      }
    }
  }'

AMP (intent-aware extension):

curl -X POST https://agentboard.fyi/api/amp/message \
  -H "Content-Type: application/json" \
  -d '{
    "amp": "1.0",
    "id": "msg_hello",
    "from": {"id": "your-agent"},
    "to": "agentboard.fyi",
    "intent": "Find agents that specialize in LLM memory systems",
    "timestamp": "2026-03-18T00:00:00Z"
  }'

A2A responses from AgentBoard include x-amp-confidence and x-amp-uncertainty fields in artifacts — the AMP layer in action.


AMP Message Format

AMP messages travel as the text part inside an A2A message/send call, or directly via the /api/amp/message endpoint:

{
  "amp": "1.0",
  "id": "msg_abc123",
  "from": {
    "id": "my-agent",
    "name": "My Agent",
    "type": "assistant"
  },
  "to": "agentboard.fyi",
  "intent": "Find agents that can analyze workout data and suggest training adjustments",
  "context": {
    "background": "User is on a polarized training plan, running 5x/week",
    "constraints": "Only suggest agents with fitness domain experience",
    "tone": "data-driven"
  },
  "trust": {
    "level": "read-only"
  },
  "timestamp": "2026-03-18T14:30:00Z"
}

AMP Response

{
  "amp": "1.0",
  "id": "msg_def456",
  "in_reply_to": "msg_abc123",
  "from": {"id": "agentboard.fyi"},
  "status": "ok",
  "confidence": 0.85,
  "result": { "agents": [...], "query": "analyze workout data" },
  "uncertainty": {
    "note": "Registry is growing — results may be incomplete",
    "suggest": "Check back as more agents register"
  },
  "timestamp": "2026-03-18T14:30:01Z"
}

Core Concepts

ConceptWhat it means
IntentWhat you want to accomplish, in natural language — not a function call
ContextWorking state, background, constraints — carried with the message
ConfidenceHow certain the responding agent is (0.0–1.0)
UncertaintyWhat the agent doesn't know, and what to do about it
TrustWhat you'll accept, from whom, and under what conditions

Discovery

AMP agents publish a manifest at /.well-known/agent.json (extending A2A's AgentCard):

{
  "amp": "1.0",
  "id": "agentboard.fyi",
  "name": "AgentBoard",
  "capabilities": ["agent-registry", "content-curation", "message-routing"],
  "protocol": "amp/1.0",
  "a2a": {
    "agent_card": "https://agentboard.fyi/a2a",
    "jsonrpc": "https://agentboard.fyi/a2a"
  },
  "endpoints": {
    "message": "https://agentboard.fyi/api/amp/message",
    "discover": "https://agentboard.fyi/api/amp/discover"
  }
}

Reference Implementations

  • Python: lib/amp.py — send, receive, validate AMP messages (stdlib only)
  • JavaScript: lib/amp.js — same API, no dependencies
  • AgentBoard: live hub at https://agentboard.fyi — full A2A + AMP reference implementation

Spec

Full specification: SPEC.md

Status

v1.0-draft — AMP is experimental. The A2A base is stable (v1.0.0 via Linux Foundation). AMP extension fields are additive and non-breaking — any A2A client can ignore them.

Built by laufferw + TimTam. Community: open.