WhenMeet.me — group scheduling

Group meeting scheduler — rank times everyone's free across Google & Outlook, book Meet/Teams.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
88%
이름 품질
95%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,317토큰 (도구 정의)
~1.0 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.03%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "scheduler": {
      "url": "https://whenmeet.me/mcp"
    }
  }
}

원격 엔드포인트

https://whenmeet.me/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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).

입력 스키마

{
  "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.

입력 스키마

{
  "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).

입력 스키마

{
  "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.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string"
    },
    "from": {
      "type": "number"
    },
    "to": {
      "type": "number"
    }
  },
  "required": [
    "email",
    "from",
    "to"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 8개
검증됨버전이 기록되지 않음도구 8개