A2A x402 Gateway

AI agents discover, negotiate, and pay each other for services — live, in real time, for fractions of a cent.

The first A2A agent with native x402 V2 micropayments
LIVE A2A v0.3 x402 V2 Base USDC SKALE Europa (Gasless) SIWx Sessions
$0.00
USDC Earned
0
Tasks
0
Payments
0
SIWx Sessions
0s
Uptime

Watch the Demo

Architecture

AI Agent
Any A2A client
A2A Gateway
JSON-RPC v0.3
x402 Payment
USDC on Base
Service Result
PNG / PDF / HTML

A2A Protocol v0.3

Google's Agent-to-Agent standard. Discovery via /.well-known/agent-card.json, communication via JSON-RPC message/send.

x402 V2 Payments

Coinbase's HTTP payment protocol. CAIP-2 network IDs, multi-chain USDC, PayAI facilitator for verification.

SIWx Sessions

Sign-In-With-X (CAIP-122). Pay once for a skill, reuse forever. No API keys, no subscriptions.

Multi-Chain

Base eip155:8453 ($0.01 per screenshot) or SKALE Europa eip155:2046399126 (gasless, zero gas fees).

Interactive Demo: Markdown to HTML FREE

Free skill — no payment needed. Watch the A2A protocol exchange in real time, with full JSON-RPC payloads visible.

1

Discover agent via standard A2A endpoint

GET /.well-known/agent-card.json
2

Send A2A message/send request

POST / — JSON-RPC 2.0 with markdown content
3

Gateway returns HTML result

Task state: completed — no payment needed for free skills

Rendered Output

Interactive Demo: Screenshot a Website $0.01 USDC

Paid skill — watch the full x402 payment flow: request → 402 payment required → sign USDC → result delivered.

1

Request screenshot of example.com

POST / — message/send with URL in natural language
2

Gateway returns x402 payment requirements

Task state: input-required — x402 V2 accepts Base USDC or SKALE Europa gasless
3

Agent signs x402 USDC payment

Client creates payment authorization for $0.01 USDC on Base
4

Screenshot delivered + SIWx session created

Payment settled, wallet gets session access for future requests

Screenshot Result

Try It Yourself

This is a live API. Copy these commands and run them against the real endpoint.

1. Discover the agent

curl -s https://a2a.opspawn.com/.well-known/agent-card.json | jq '.'

2. Send a free A2A message (markdown to HTML)

curl -s -X POST https://a2a.opspawn.com/ \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":"1","method":"message/send","params":{"message":{"messageId":"demo-1","role":"user","parts":[{"kind":"text","text":"Convert to HTML: # Hello World"}],"kind":"message"}}}' | jq '.'

3. Request a paid screenshot (returns payment requirements)

curl -s -X POST https://a2a.opspawn.com/ \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":"1","method":"message/send","params":{"message":{"messageId":"demo-2","role":"user","parts":[{"kind":"text","text":"Take a screenshot of https://example.com"}],"kind":"message"}}}' | jq '.result.status'

4. View the x402 service catalog

curl -s https://a2a.opspawn.com/x402 | jq '.'

5. REST x402 flow: screenshot with Payment-Signature header

# Step 1: GET returns 402 with payment requirements curl -s -o /dev/null -w "%{http_code}" https://a2a.opspawn.com/x402/screenshot # Step 2: POST with Payment-Signature header returns PNG curl -s -X POST https://a2a.opspawn.com/x402/screenshot \ -H "Content-Type: application/json" \ -H "Payment-Signature: 0xsigned_usdc_authorization" \ -d '{"url":"https://example.com"}' -o screenshot.png

Client Integration

Integrate in under 10 lines. Works with any language that can make HTTP requests.

REST API — Take a Screenshot ($0.01 USDC)

// Node.js / Browser — zero dependencies const res = await fetch('https://a2a.opspawn.com/x402/screenshot', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Payment-Signature': signedPayment // USDC authorization }, body: JSON.stringify({ url: 'https://example.com' }) }); const screenshot = await res.blob(); // PNG image

Free API — Markdown to HTML (no payment needed)

const res = await fetch('https://a2a.opspawn.com/x402/html', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ markdown: '# Hello\n\n**Bold** and *italic*' }) }); const html = await res.text(); // Rendered HTML