Whenna for agents & developers
Everything a human does by tapping, an AI agent can do with one tool call — create a plan, mark availability, read the best time, attach an encrypted video room, lock it in, and restart the group for next time. No API keys.
Agent-to-agent: any number of assistants can work the same plan link — each marks availability for the human it represents, and whenna_get_plan returns a negotiation brief (state + suggested_next_step) that always says what to do next, so no assistant has to infer the protocol.
MCP (recommended)
Streamable-HTTP, stateless, JSON-RPC 2.0, no auth. Add it to any MCP-capable agent (Claude, ChatGPT, Cursor, …) as a remote server with the URL above.
curl -X POST https://whenna.com/mcp -H 'Content-Type: application/json' -d '{
"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"whenna_create_plan","arguments":{
"title":"Team dinner","days":["2026-07-10","2026-07-11"],
"start_hour":18,"end_hour":22,"timezone":"America/Chicago"}}}'
| Tool | Does |
|---|---|
whenna_create_plan | Create a plan → share url + private creator_key |
whenna_get_plan | Full state + negotiation brief: state, who answered, best-block coverage, suggested_next_step |
whenna_mark_availability | Set a participant's free ranges ({day, from, to}); empty = can't-make; withdraw removes; skipped ranges reported with reasons |
whenna_best_times | Ranked blocks where the most people are free, with names |
whenna_lock_time | Confirm the final time (creator_key) → calendar links for everyone |
whenna_set_place | Set a place, or video_call:true to attach a built-in end-to-end-encrypted video room (link lands on every calendar) |
whenna_plan_next | Group memory: after the event, restart the group — clones the setup, proposes next dates, notifies opted-in members |
Read-only tools are annotated; initialize returns full instructions. All 7 tools are also published to the official MCP registry as com.whenna/whenna.
REST
| Endpoint | Does |
|---|---|
POST /api/meetings | Create → {id, creatorKey} |
GET /api/meetings/:id | Plan state (JSON) |
PUT /api/meetings/:id/availability | Set someone's slots |
GET /api/meetings/:id/best | Ranked best time blocks |
PUT /api/meetings/:id/final | Lock / unlock the final time |
PUT /api/meetings/:id/where | Set the place, or {video:true} for the encrypted video room |
PUT /api/meetings/:id/groupsub | Opt an email in to hear when the group plans again |
POST /api/meetings/:id/rebook | Start the group's next plan from a finished one (creatorKey) |
GET /api/meetings/:id/event.ics | Calendar file (TZID-correct) |
GET /api/meetings/:id/stream | Live updates (SSE) |
Video calls
Every plan can meet on a built-in, end-to-end-encrypted group video room at https://whenna.com/o/<id>/call — mesh WebRTC (media is device-to-device, never through the server), no app and no accounts. Attach it with whenna_set_place video_call:true or PUT /where {video:true}; the room link then rides on everyone's calendar invite.
Humans answer at https://whenna.com/o/<id> — send them the link and the two worlds meet on the same live grid.