AI-Powered Multi-Agent Disaster Coordination System β built for the Google AI Agent Builder Series 2026, Agents for Good track.
CrisisLink AI takes a raw citizen emergency report and turns it into a verified, prioritized, resourced, security-checked rescue plan β using a Google ADK 2.x graph-based Workflow, an MCP server for tools, and a human-in-the-loop gate for critical decisions.
Citizen
β
βΌ
Emergency Orchestrator (AgentTool β triage_advisor)
β
βββββββββββββββ
βΌ βΌ
SOS Agent Damage Agent (parallel)
ββββββββ¬βββββββ
βΌ
Priority Agent
β
ββββββββΌβββββββ
βΌ βΌ βΌ
Resource Shelter Medical (parallel)
ββββββββΌβββββββ
βΌ
Security Checkpoint (code, not LLM: PII mask + injection scan + audit log)
βΌ
Human Approval Agent (HITL gate β only for CRITICAL priority)
βΌ
Communication Agent
βΌ
Final Response
Instant access to national and regional emergency services. The feature includes:
- 25+ Emergency Contacts (Police, Fire, Ambulance, Disaster Response, Medical, etc.)
- National Level Services (112, 100, 101, 102, NDMA, etc.)
- Regional Coverage (Delhi, Mumbai, Bangalore, Kolkata)
- Smart Search & Filtering (by name, number, category, region)
- One-Tap Calling (mobile-optimized direct phone access)
- Color-Coded Categories (visual identification of emergency types)
π For detailed feature documentation, see EMERGENCY_CONTACTS_FEATURE.md
- SOS Verification
- Damage Assessment
- Priority Classification
- Resource Allocation
- Shelter Recommendation
- Medical Assistance
- Security & Audit Logging
- Human Approval Gate
- Communication Planning
- Live incident map
- Real-time resource tracking
- Hospital & shelter locator
- Active incident monitoring
- AI agent execution trace
crisislink-ai/
βββ assets/ architecture diagram (SVG)
βββ tests/ pytest suite (security + agents/tools)
βββ crisislink_ai/
β βββ agents/ 8 LlmAgent nodes + human_approval_agent
β βββ tools/ weather / shelter / hospital / maps / inventory / contacts
β βββ security/ PII masking, prompt-injection detection, audit log, security checkpoint
β βββ agent.py root Workflow graph (root_agent β discovered by `adk web` / `adk run`)
β βββ mcp_server.py FastMCP server exposing all tools over stdio
β βββ mcp_client.py shared McpToolset used by tool-calling agents
β βββ config.py environment-driven settings
βββ crisislink-ui/
β βββ src/
β β βββ pages/
β β β βββ Dashboard.jsx
β β β βββ LiveMap.jsx
β β β βββ Incidents.jsx
β β β βββ AIAgents.jsx
β β β βββ Resources.jsx
β β β βββ Hospitals.jsx
β β β βββ Shelters.jsx
β β β βββ Reports.jsx
β β β βββ EmergencyContacts.jsx (NEW - Emergency Contact Directory)
β β βββ components/ UI components and routing
βββ fast_api_app.py FastAPI service (/sos, /health)
βββ README.md
βββ SUBMISSION_WRITEUP.md
βββ EMERGENCY_CONTACTS_FEATURE.md (NEW - Feature documentation)
βββ DEMO_SCRIPT.txt
βββ Makefile
βββ pyproject.toml
βββ .env.example
βββ Dockerfile
| Requirement | Where |
|---|---|
| Workflow API | crisislink_ai/agent.py β Workflow(edges=[...]) graph |
| Minimum 6 LlmAgents | 8 agents in crisislink_ai/agents/ + human_approval_agent |
| MCP Server | crisislink_ai/mcp_server.py (FastMCP, stdio transport) |
| MCPToolset | crisislink_ai/mcp_client.py, used by damage/priority/resource/shelter/medical agents |
| AgentTool | orchestrator_agent wraps a triage_advisor sub-agent via AgentTool |
| Security Checkpoint | crisislink_ai/security/checkpoint.py (graph node, not an LLM call) |
| Prompt Injection Detection | crisislink_ai/security/prompt_injection_detector.py |
| PII Scrubbing | crisislink_ai/security/pii_masking.py |
| Human Approval | crisislink_ai/agents/human_approval_agent.py (uses ADK's request_input long-running tool) |
| FastAPI | fast_api_app.py |
| Docker | Dockerfile |
| ctx.state | agents read {orchestrator_output}, {sos_result}, etc. via ADK session state |
cd crisislink-ai
cp .env.example .env
# put your real Gemini key in .env:
# GOOGLE_API_KEY=...
uv syncNo GOOGLE_MAPS_API_KEY or WEATHER_API_KEY? That's fine β weather_tool calls the free, keyless Open-Meteo API, and the remaining tools fall back to a seeded mock database so everything works offline for judging.
make playground
make web
make api
make mcp
make testTry the demo scenario:
curl -X POST http://localhost:8080/sos \
-H "Content-Type: application/json" \
-d '{"report_text":"There is severe flooding in Patna. 15 people trapped near Gandhi Setu."}'After launching the Google ADK Playground or ADK Web UI, paste the following emergency report to experience the complete end-to-end multi-agent disaster response workflow.
A 6.9 magnitude earthquake has struck Kathmandu. A residential apartment has partially collapsed, trapping nearly 30 people inside. Several victims are seriously injured, nearby roads are damaged, and communication networks are unstable. Rescue teams, ambulances, medical supplies, and temporary shelters are urgently required.
- π°οΈ Emergency Orchestrator receives and structures the emergency report.
- β SOS Verification Agent validates the authenticity of the emergency.
- π Damage Assessment Agent estimates disaster severity and impact.
- π¨ Priority Agent classifies the incident as CRITICAL and calculates the rescue priority.
- π Resource Allocation Agent recommends rescue teams, ambulances, food, water, boats, and medical supplies.
- π Shelter Recommendation Agent identifies the most suitable nearby shelters.
- π₯ Medical Assistance Agent recommends nearby hospitals, emergency contacts, and first-aid guidance.
- π Security Checkpoint performs PII masking, prompt-injection detection, and audit logging.
- π€ Human Approval Agent requests dispatcher approval before deploying critical rescue resources.
- π’ Communication Agent generates the final emergency response for citizens, emergency responders, and authorities.
- β Disaster Severity: Critical
- β Rescue Priority: CRITICAL
- β Recommended Shelter(s)
- β Nearby Hospital(s)
- β Allocated Rescue Resources
- β Estimated Response Time (ETA)
- β Citizen Safety Instructions
- β Authority & Emergency Response Summary
The execution should closely match the workflow visualization and ADK execution trace shown in the Demo section above.
Before handing this scaffold over, the following was actually run and confirmed:
pip install google-adk mcp- Workflow graph constructed successfully.
- FastAPI routes verified.
- MCP server verified.
pytest tests/β 13/13 passing.
Run locally:
uv sync
make playgroundThen check audit_log.jsonl.
damage_agentcurrently supports only text.- Shelter and hospital data use a seeded mock database.
human_approval_agentrequires an ADK-compatible UI (adk web/adk run) for interactive approval.
Contributions are welcome! Check the Issues tab for good first issue labeled tasks. Fork the repo, create a branch, and submit a PR β see individual issues for setup details.
Sunny Kumar β Co-Organizer & Tech Lead, GDG On Campus BCE Patna Β· Beta MLSA Β· GSA Google
