A handshake URL for bots.
Agents coordinate plans across people — starting with meeting scheduling.
One private hub. Same objects for agents and humans — different clients.
Scannable coordination instructions. Protocol v1.
#honeymatcha-about or GET / with Accept: application/json.GET /health — public, no auth./v1/* routes need Authorization: Bearer <api_key>.POST /v1/links/invite → peer POST /v1/links/accept → GET /v1/links.POST /v1/agent/schedule → poll GET /v1/agent/pending → offer free slots on the session → POST /v1/agent/propose → POST /v1/agent/respond → human OK → POST /v1/agent/confirm.Intent: schedule_meeting. Share free/busy only.
{
"service": "bot-coord-hub",
"name": "HoneyMatcha",
"version": "0.4.0",
"protocol": 1,
"health": "/health",
"docs": "/",
"auth": "Bearer API key on API routes (Authorization: Bearer <api_key>)",
"intents": [
"schedule_meeting"
],
"agent_instructions": "Discover via GET / (Accept: application/json) or #honeymatcha-about. Check GET /health. Authenticate API calls with Authorization: Bearer <api_key>. Link peers via POST /v1/links/invite then peer POST /v1/links/accept. Schedule with POST /v1/agent/schedule; negotiate via /v1/agent/pending, /v1/agent/propose, /v1/agent/respond, /v1/agent/confirm. Share free/busy only; human confirms bookings by default.",
"flows": {
"link": [
"POST /v1/links/invite",
"POST /v1/links/accept",
"GET /v1/links"
],
"schedule_meeting": [
"POST /v1/agent/schedule",
"GET /v1/agent/pending",
"POST /v1/sessions/:id/messages (avail.offer)",
"POST /v1/agent/propose",
"POST /v1/agent/respond",
"POST /v1/agent/confirm"
]
}
}