WhenMeet.me — group scheduling
Group meeting scheduler — rank times everyone's free across Google & Outlook, book Meet/Teams.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"scheduler": {
"url": "https://whenmeet.me/mcp"
}
}
}Remote-Endpunkte
https://whenmeet.me/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (8)
🟢find_common_slots(participants, from, to, durationMin, tz)
Rank the best meeting times for the given participants, merging live Google/Microsoft calendar data, hand-marked availability and the heat-map sources. Each participant is filtered (Mon–Fri, waking hours) and scored in their OWN timezone; scores factor in buffer time around existing meetings and prefer sooner slots. Returns up to 8 slots: everyone-free slots first (allFree:true), then — only if there are too few — the best compromise slots (allFree:false) with a freeCount. Defaults to the next 14 days. Requires authentication.
Eingabe-Schema
{
"type": "object",
"properties": {
"participants": {
"type": "array",
"items": {
"type": "string"
},
"description": "Participant emails (the authenticated user is the host and should be included)."
},
"from": {
"type": "number",
"description": "Window start, unix ms. Default: now."
},
"to": {
"type": "number",
"description": "Window end, unix ms. Default: now + 14 days."
},
"durationMin": {
"type": "number",
"enum": [
15,
30,
45,
60
],
"description": "Meeting length. Default 30."
},
"tz": {
"type": "string",
"description": "Requester IANA zone, e.g. Europe/Warsaw — the fallback zone for participants whose own timezone is unknown, and the zone for the round-hour scoring bonus."
}
},
"required": [
"participants"
]
}🟡create_meeting(participants, startsAt, endsAt, title, conference, ...)
Confirm a meeting: writes the event into the authenticated host’s calendar with an optional Google Meet/Teams link, emails invites with an ICS attachment, and returns the share URL (/m/<id>). Requires authentication.
Eingabe-Schema
{
"type": "object",
"properties": {
"participants": {
"type": "array",
"items": {
"type": "string"
}
},
"startsAt": {
"type": "number",
"description": "unix ms"
},
"endsAt": {
"type": "number",
"description": "unix ms"
},
"title": {
"type": "string"
},
"conference": {
"type": "string",
"enum": [
"meet",
"teams"
],
"description": "Omit for no conference link."
},
"tz": {
"type": "string",
"description": "IANA zone used to format times in invite emails."
}
},
"required": [
"participants",
"startsAt",
"endsAt"
]
}🟢get_meeting(meetingId)
Read a meeting by its share-link id (the UUID from /m/<id>): time, title, conference URL, host, and any proposed alternate times with their status.
Eingabe-Schema
{
"type": "object",
"properties": {
"meetingId": {
"type": "string"
}
},
"required": [
"meetingId"
]
}🟢get_meeting_availability(meetingId, from, to, durationMin, tz)
Aggregated group availability for an existing meeting (the symmetric heat-map): per-30-min-slot counts of how many participants are free, plus ranked slots (per-participant timezones, buffer + soonness scoring, allFree:true everyone-free slots and allFree:false compromise slots). Individual calendars are never exposed. No auth needed — the meeting id is the capability.
Eingabe-Schema
{
"type": "object",
"properties": {
"meetingId": {
"type": "string"
},
"from": {
"type": "number",
"description": "unix ms. Default: now."
},
"to": {
"type": "number",
"description": "unix ms. Default: now + 14 days."
},
"durationMin": {
"type": "number",
"enum": [
15,
30,
45,
60
]
},
"tz": {
"type": "string"
}
},
"required": [
"meetingId"
]
}⚪suggest_time(meetingId, suggestedBy, startsAt, endsAt, message, ...)
Propose a different time for an existing meeting on behalf of a guest. The host is notified by email and can accept or decline. Authenticated callers (Bearer PAT) skip the bot challenge; an anonymous caller must pass a Cloudflare Turnstile token in `turnstileToken` (only required when the server is configured with a Turnstile secret).
Eingabe-Schema
{
"type": "object",
"properties": {
"meetingId": {
"type": "string"
},
"suggestedBy": {
"type": "string",
"description": "Email of the person proposing."
},
"startsAt": {
"type": "number",
"description": "unix ms"
},
"endsAt": {
"type": "number",
"description": "unix ms"
},
"message": {
"type": "string"
},
"turnstileToken": {
"type": "string",
"description": "Cloudflare Turnstile token; required for anonymous callers when a Turnstile secret is configured."
}
},
"required": [
"meetingId",
"suggestedBy",
"startsAt",
"endsAt"
]
}⚪respond_to_suggestion(meetingId, suggestionId, action)
Accept or decline a proposed alternate time. Accepting moves the meeting (calendar event included) and re-sends invites. Only the meeting host may call this — requires authentication.
Eingabe-Schema
{
"type": "object",
"properties": {
"meetingId": {
"type": "string"
},
"suggestionId": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"accept",
"decline"
]
}
},
"required": [
"meetingId",
"suggestionId",
"action"
]
}🟡set_manual_availability(email, windowFrom, windowTo, freeSlots, turnstileToken)
Publish hand-marked FREE time slots for an email address (the no-calendar fallback, e.g. Apple iCloud users). Replaces previously marked slots inside the window; the group heat-map updates immediately. Authenticated callers (Bearer PAT) skip the bot challenge; an anonymous caller must pass a Cloudflare Turnstile token in `turnstileToken` (only required when the server is configured with a Turnstile secret).
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"windowFrom": {
"type": "number",
"description": "unix ms"
},
"windowTo": {
"type": "number",
"description": "unix ms"
},
"freeSlots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"start": {
"type": "number"
},
"end": {
"type": "number"
}
},
"required": [
"start",
"end"
]
}
},
"turnstileToken": {
"type": "string",
"description": "Cloudflare Turnstile token; required for anonymous callers when a Turnstile secret is configured."
}
},
"required": [
"email",
"windowFrom",
"windowTo",
"freeSlots"
]
}🟢get_manual_availability(email, from, to)
Read previously hand-marked free slots for an email within a window.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"from": {
"type": "number"
},
"to": {
"type": "number"
}
},
"required": [
"email",
"from",
"to"
]
}Community
Nachweis