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
osint-a2a # default: 0.0.0.0:9000osint-a2a --port 9090 # custom portAgent 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
| Skill | Input | What it does |
|---|---|---|
investigate_ip | IP address | Complete IP investigation with all tools |
investigate_domain | Domain name | Complete domain investigation |
investigate_url | URL | URL analysis with URLScan and context |
threat_feed_analysis | Feed name + limit | Analyzes N most recent IOCs from a feed |
risk_scoring | IOC | Returns only the risk score 0-100 |
Calling from another agent
from a2a_sdk import A2AClient
client = A2AClient("http://localhost:9000")
# IP investigationresult = await client.send_task({ "skill": "investigate_ip", "message": "Investigate IP 185.220.101.34"})
# With event streamingasync 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
A2A_HOST=0.0.0.0 # Listen interfaceA2A_PORT=9000 # PortUse 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