A2A Protocol
Agent-to-Agent communication via JSON-RPC. Discover the w3stor agent, invoke skills, and hold conversations -- all through a standardized protocol.
Agent Discovery
Agents discover w3stor via the standard well-known endpoint. The agent card describes capabilities, skills, auth requirements, and rate limits.
GET https://api.w3s.storage/.well-known/agent-card.json
{ "name": "w3stor", "description": "Decentralized storage agent — IPFS + Filecoin with x402 micropayments", "url": "https://api.w3s.storage", "version": "0.1.0", "capabilities": { "streaming": false, "pushNotifications": false }, "skills": [ { "id": "upload", "name": "Upload File", "description": "Upload a file to IPFS and replicate across Filecoin SPs", "tags": ["storage", "ipfs", "filecoin"], "examples": ["Store this dataset on Filecoin", "Upload report.pdf"] }, { "id": "list", "name": "List Files", "description": "List stored files with optional status filter", "tags": ["query", "files"], "examples": ["Show my stored files", "List files with status stored"] }, { "id": "status", "name": "Check Status", "description": "Check replication status for a CID", "tags": ["query", "status"], "examples": ["Check status of bafkrei...", "How many SPs store my file?"] }, { "id": "converse", "name": "Conversational", "description": "Natural language interaction about storage operations", "tags": ["conversation"], "examples": ["What is Filecoin?", "Explain x402 payments"] } ], "authentication": { "schemes": ["x402"] }, "rateLimits": { "maxRequestsPerMinute": 60, "maxConcurrentRequests": 5 }}Skills
Upload
x402Store files on IPFS + Filecoin
List Files
freeQuery stored files with filters
Check Status
freeReplication and SP status
Conversational
freeNatural language about storage
Live Conversation Demo
See how agents communicate via A2A in practice. Click the JSON-RPC envelope on each message to inspect the wire format.
Agents Talking to Agents
Every inter-agent message is a signed JSON-RPC 2.0 call over the A2A protocol. Click any message to inspect the raw envelope.
JSON-RPC Interface
All interactions use JSON-RPC 2.0 over HTTP POST. The tasks/send method handles both skill invocations and conversational messages.
Upload Request
// POST https://api.w3s.storage/a2a{ "jsonrpc": "2.0", "id": "1", "method": "tasks/send", "params": { "id": "task-001", "message": { "role": "user", "parts": [ { "type": "text", "text": "Upload this file to decentralized storage" }, { "type": "file", "file": { "name": "dataset.csv", "mimeType": "text/csv", "bytes": "base64-encoded-content..." } } ] } }}Upload Response
{ "jsonrpc": "2.0", "id": "1", "result": { "id": "task-001", "status": { "state": "completed", "message": { "role": "agent", "parts": [ { "type": "text", "text": "File uploaded successfully." }, { "type": "data", "data": { "cid": "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzd", "size": 245760, "status": "pinned", "replicationTarget": 3, "pinataUrl": "https://gateway.pinata.cloud/ipfs/bafkrei..." } } ] } }, "artifacts": [ { "name": "storage-receipt", "parts": [ { "type": "data", "data": { "cid": "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzd", "providers": ["f01234", "f05678", "f09012"] } } ] } ] }}Conversational Mode
Beyond structured skill invocation, w3stor supports natural language conversations. The agent interprets intent, executes the appropriate operations, and responds conversationally.
// Conversational mode — natural language interaction{ "jsonrpc": "2.0", "id": "2", "method": "tasks/send", "params": { "id": "task-002", "message": { "role": "user", "parts": [ { "type": "text", "text": "How many files do I have stored, and what's my total storage usage?" } ] } }}Rate Limits
| Tier | Requests/min | Concurrent | Max File Size |
|---|---|---|---|
| Free | 10 | 2 | 10 MB |
| x402 Basic | 60 | 5 | 100 MB |
| x402 Pro | 300 | 20 | 1 GB |