Skip to content

A2A Server

What is A2A

A2A (Agent-to-Agent) is Google’s protocol for AI agents to communicate with each other. OSINT AI One exposes an A2A server that other agents can use to delegate investigation tasks.

Starting the server

Ventana de terminal
osint-a2a # default: 0.0.0.0:9000
osint-a2a --port 9090 # custom port

Agent Card

The server exposes its “agent card” at the standard endpoint:

GET http://localhost:9000/.well-known/agent-card.json
{
"name": "OSINT AI Agent",
"description": "Autonomous threat intelligence and OSINT investigation platform",
"skills": [
"investigate_ip",
"investigate_domain",
"investigate_url",
"threat_feed_analysis",
"risk_scoring"
],
"version": "1.0.0",
"streaming": true,
"output_modes": ["json", "text"]
}

The 5 A2A Skills

SkillInputWhat it does
investigate_ipIP addressComplete IP investigation with all tools
investigate_domainDomain nameComplete domain investigation
investigate_urlURLURL analysis with URLScan and context
threat_feed_analysisFeed name + limitAnalyzes N most recent IOCs from a feed
risk_scoringIOCReturns only the risk score 0-100

Calling from another agent

from a2a_sdk import A2AClient
client = A2AClient("http://localhost:9000")
# IP investigation
result = await client.send_task({
"skill": "investigate_ip",
"message": "Investigate IP 185.220.101.34"
})
# With event streaming
async for event in client.stream_task({
"skill": "investigate_domain",
"message": "investigate domain evil-phishing.com"
}):
print(f"Event: {event.type}{event.data}")

Streaming

The A2A server supports real-time event streaming. While the agent investigates, it sends events:

{"type": "tool_call", "data": {"tool": "virustotal_ip_lookup", "input": "185.220.101.34"}}
{"type": "tool_result", "data": {"tool": "virustotal_ip_lookup", "result": {...}}}
{"type": "tool_call", "data": {"tool": "shodan_host_lookup", "input": "185.220.101.34"}}
{"type": "final", "data": {"assessment": "...", "risk_score": 94}}

This allows the client agent to show progress in real time.

Environment variables

Ventana de terminal
A2A_HOST=0.0.0.0 # Listen interface
A2A_PORT=9000 # Port

Use cases

  • Multi-agent orchestrator: a main agent delegates OSINT investigation to OSINT AI One and uses the results for decision-making
  • Security pipeline: a SOAR system invokes A2A to automatically enrich alerts
  • Triage agent: filters and prioritizes IOCs using risk_scoring before escalating to human analysts