A2A Endpoint
The Zeodyn™ A2A endpoint implements Google’s Agent-to-Agent protocol. Instead of calling specific tools, your agent sends natural language messages and Zeodyn detects the intent, executes the appropriate action, and returns structured results as A2A artifacts.
Endpoint
POST https://zeodyn.com/api/a2a
Content-Type: application/jsonTransport: JSON-RPC 2.0 over POST. Rate limit: 60 requests per minute per IP.
Authentication
Authentication is the same as the MCP server. Pass your API key via header or in the task metadata:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tasks/send",
"params": {
"message": {
"role": "user",
"parts": [{ "type": "text", "text": "Scan https://example.com" }]
},
"metadata": {
"api_key": "zd_live_xxxxx"
}
}
}Tasks like “What plans are available?” do not require authentication.
Quick start
Scan a website
curl -X POST https://zeodyn.com/api/a2a \
-H "Content-Type: application/json" \
-H "X-API-Key: zd_live_xxxxx" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tasks/send",
"params": {
"message": {
"role": "user",
"parts": [{ "type": "text", "text": "Scan https://example.com" }]
}
}
}'The response includes a task with status working or completed. Long-running tasks (like scans) start in working state — poll with tasks/get until complete.
Check task status
curl -X POST https://zeodyn.com/api/a2a \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tasks/get",
"params": {
"id": "<task-id-from-send-response>"
}
}'Ask a question
curl -X POST https://zeodyn.com/api/a2a \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tasks/send",
"params": {
"message": {
"role": "user",
"parts": [{ "type": "text", "text": "What plans are available?" }]
}
}
}'Supported intents
The A2A endpoint detects intent from natural language. Here are the recognised patterns:
| Example message | Intent |
|---|---|
| “Scan https://example.com” | scan_website |
| “Compare example.com and competitor.com” | compare_sites |
| “What plans do you offer?” | get_plans |
| “Show my recent scans” | list_scans |
| “Monitor https://example.com” | add_watched_site |
| “Show my watched sites” | list_watched_sites |
| “What is my account tier?” | get_account |
Task lifecycle
Each task progresses through these states:
- Fast operations (plans, account info, list scans) complete immediately and return
completed - Long-running operations (website scans, comparisons) return
workingimmediately — poll withtasks/getuntil the status changes - Tasks expire after 1 hour and are automatically cleaned up
JSON-RPC methods
| Method | Description |
|---|---|
| tasks/send | Send a message to create or continue a task |
| tasks/get | Retrieve a task by ID (poll for results) |
| tasks/cancel | Cancel a running task |
Agent card
The Zeodyn agent card is published at /.well-known/agent-card.json. It declares the A2A endpoint, supported skills, authentication methods, and capabilities. Agent frameworks that support A2A discovery will find it automatically.
See also
- MCP server — Structured tool-based integration via Model Context Protocol
- REST API — Traditional HTTP API with Bearer token authentication
- A2A specification — Official Agent-to-Agent protocol documentation