Skip to main content

A2A Integration

The Agent-to-Agent (A2A) protocol integration enables AI agents to communicate with each other using payment-protected message streams. The Nevermined Payments Library provides complete A2A server functionality with automatic payment handling.

Overview of A2A Integration

The A2A integration provides:
  • Agent Card: Payment metadata extension for discovery
  • Streaming Support: Real-time task updates via Server-Sent Events
  • Task Management: Async execution with status tracking
  • Credit Burning: Automatic credit settlement after task completion
  • EventBus Pattern: Clean event-driven architecture for task execution

Build Payment Agent Card

The agent card is published at /.well-known/agent.json and includes payment metadata. Before sending a paid request, clients should fetch and validate the target agent’s card to confirm the expected agentId, the capabilities, and the supported X402 schemes — this protects against routing payment-signature tokens to a typosquatted or unauthorised endpoint:

Payment Extension Structure

The agent card includes a Nevermined payment extension in capabilities.extensions:

Implement Executor

The executor contains your agent’s business logic and emits events via the EventBus:

EventBus Events

The executor communicates via event publishing:

Task Event

Status Update Event

Message Event (Streaming)

Signal Completion

Start A2A Server

Start the complete A2A server with payment integration:
🔐 Run behind a reverse proxy with HTTPS in production. A2A peers exchange paid payment-signature tokens over HTTP headers — never expose the raw server on a public hostname without TLS. Bind the dev server to 127.0.0.1 (e.g. by running it inside a container with no published port, or behind a localhost-bound proxy).

Credit Reporting

The executor reports credits used in the final status update:

Fixed Credits

Dynamic Credits

Calculate credits based on actual usage:

Streaming Example

For long-running tasks, stream partial results:

Complete Example: Weather A2A Agent

Server Configuration Options

Best Practices

  1. Always Report Credits: Include creditsUsed in final status updates
  2. Handle Errors: Emit ‘failed’ status on errors
  3. Signal Completion: Always call eventBus.finished()
  4. Streaming for Long Tasks: Use message events for real-time updates
  5. Graceful Shutdown: Implement proper server cleanup
  6. Descriptive Agent Cards: Provide clear descriptions and skills
  7. Version Control: Include version in agent card metadata

Source References:
  • RUN.md (A2A Server section, lines 88-156)
  • src/a2a/server.ts (PaymentsA2AServer)
  • src/a2a/agent-card.ts (buildPaymentAgentCard)
  • tests/integration/a2a/complete-message-send-flow.test.ts (executor patterns)
  • tests/e2e/helpers/a2a-setup-helpers.ts (setup examples)