WhenMeet.me

WhenMeet.me for developers & AI agents

Everything the WhenMeet.me UI does is available programmatically: a documented HTTP API and a remote MCP server, both on this origin. Machine-readable spec: /openapi.json (OpenAPI 3.1). LLM-friendly product summary: /llms.txt.

MCP server (recommended for AI agents)

Point any MCP client (Claude, Cursor, ChatGPT connectors, custom agents) at:

https://whenmeet.me/mcp

Transport: Streamable HTTP, stateless JSON responses. Tools:

ToolAuthWhat it does
find_common_slotstokenRanked times when all participants are free (live Google/Microsoft data + hand-marked availability).
create_meetingtokenWrites the calendar event with a Meet/Teams link, emails invites with an ICS, returns the share URL.
get_meetingnoneMeeting details + proposed alternate times (share-link UUID is the capability).
get_meeting_availabilitynoneAggregated group heat-map for an existing meeting (counts only — no individual calendars).
suggest_timenonePropose a different time as a guest; the host is emailed.
respond_to_suggestiontokenHost accepts (moves the event + re-invites) or declines.
set_manual_availabilitynonePublish hand-marked free slots for an email (the Apple/iCloud and no-calendar path).
get_manual_availabilitynoneRead hand-marked free slots.

Authentication for agents

  1. Sign in at WhenMeet.me with Google or Microsoft (one-time, human step).
  2. Create a personal access token: POST /api/tokens (uses your browser session; the plaintext mn_… token is shown once).
  3. Send it on API and MCP calls: Authorization: Bearer mn_…

Tokens act with your full authority; revoke any time with DELETE /api/tokens/:id. Guest-side actions (reading a meeting, suggesting times, marking availability) need no token at all — the share-link UUID or the email address is the capability, same as in the UI.

HTTP API quick reference

EndpointAuthPurpose
POST /api/availabilitytoken/sessionRanked everyone-free slots for arbitrary emails. Without a connected host calendar, falls back to hand-marked availability only (participants with none come back as source: "host", may look free) — never fabricated.
POST /api/meetingstoken/sessionCreate meeting + event + invites.
GET /api/meetings/:idnoneMeeting + suggestions.
POST /api/meetings/:id/availabilitynoneAggregated group availability.
POST /api/meetings/:id/suggestnonePropose another time.
POST /api/meetings/:id/suggestions/:sidtoken/session (host)Accept / decline.
GET·POST /api/manual-availabilitynoneRead / publish hand-marked free slots.
POST·GET /api/tokens, DELETE /api/tokens/:idsessionManage access tokens.

Times are unix milliseconds; tz is an IANA zone name used for business-hours filtering and email formatting. Full schemas: /openapi.json.

Example: find a slot and book it

« find slots »
curl -s https://whenmeet.me/api/availability \
  -H "Authorization: Bearer $MEETNOW_TOKEN" -H "content-type: application/json" \
  -d '{"participants":["anna@acme.com","bartek@contoso.com"],
       "from":'$(date +%s000)',"to":'$(($(date +%s)+1209600))'000,
       "durationMin":30,"tz":"Europe/Warsaw"}'

« book the top slot »
curl -s https://whenmeet.me/api/meetings \
  -H "Authorization: Bearer $MEETNOW_TOKEN" -H "content-type: application/json" \
  -d '{"participants":["anna@acme.com","bartek@contoso.com"],
       "startsAt":1781344800000,"endsAt":1781346600000,
       "title":"Cross-company sync","conference":"meet","tz":"Europe/Warsaw"}'

Last updated 2026-06-12 · openapi.json · llms.txt · llms-full.txt · WhenMeet.me