Infrastructure
Multiple agents, one inbox, zero conflicts
Contact leases prevent double-sends. Consensus voting gates sensitive actions. Heartbeat monitoring tracks who is alive. Run SDR, retention, and support agents side by side without them stepping on each other.

How it works
Register each agent
POST to /v1/agent/register with a name and role. Each agent gets a unique ID (agent_<uuid>) used across all coordination endpoints.
Keep heartbeats going
POST to /v1/agent/coordination/heartbeat. Agents that go silent for 5 minutes are marked inactive and excluded from consensus votes. Think of it as a liveness check.
Lease contacts before emailing them
POST to /v1/agent/coordination/lease for exclusive access to a contact (default 30 minutes). Another agent tries to send to a leased contact? Blocked with reason lease_conflict.
Gate sensitive actions with consensus
POST to /v1/agent/coordination/consensus to request peer approval. Other agents vote approve or reject, and consensus resolves by majority of active agents.
Release leases (or let them expire)
DELETE /v1/agent/coordination/lease/:id releases early. Otherwise, leases expire at their configured duration. No cleanup code needed.
Acquire a contact lease
POST /v1/agent/coordination/lease
POST /v1/agent/coordination/lease
{
"tenantId": "your-tenant-id",
"agentId": "agent_abc123",
"contactEmail": "alice@example.com",
"intent": "outbound_sales",
"durationMinutes": 30
}// Conflict response (another agent holds the lease)
{
"conflict": true,
"leaseHolder": {
"agentId": "agent_other",
"agentName": "retention-agent",
"expiresAt": "2026-02-25T15:45:00Z"
}
}Coordination primitives
Agent Registration
Name, role, unique ID. Re-registering the same agent upserts rather than creating a duplicate. Clean and idempotent.
Heartbeat Monitoring
5-minute liveness window. Miss it and your agent is excluded from consensus calculations. No heartbeat, no vote.
Contact Leases
Exclusive access to a contact for a time window. Two agents can't email the same person at the same time. Period.
Consensus Voting
Peer approval for sensitive actions. Configurable timeout. Majority-based resolution. Outcomes: approve, reject, or expired.
When one agent shouldn't decide alone
Custom pricing override? Sensitive outreach? Request consensus from peer agents. Approval requires a majority of active agents (the ones with recent heartbeats).
POST /v1/agent/coordination/consensus
{
"tenantId": "your-tenant-id",
"requestingAgentId": "agent_abc123",
"action": "send_pricing_override",
"contactEmail": "cto@bigcorp.com",
"reason": "Contact requested custom pricing",
"timeoutMinutes": 60
}
// Other agents vote
POST /v1/agent/coordination/consensus/:id/vote
{
"agentId": "agent_reviewer",
"vote": "approve",
"reason": "Contact is qualified, pricing is within bounds"
}Built for multi-agent setups
Leases, heartbeats, and consensus voting. The coordination primitives your agents need to share a tenant without causing chaos.
Related features