mcp-meetsync
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEETSYNC_API_KEY | Yes | API key sent in X-API-Key header | |
| MEETSYNC_API_URL | No | Base URL of your MeetSync API | http://localhost:3000 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| listParticipantsA | Use this tool when you need to find participants and you do not yet have their UUID — for example, when you only know their name or email address. Also use it to verify a person is registered before scheduling, or to enumerate all active participants. If you already have a participant's UUID, use getParticipant instead. |
| createParticipantA | Use this tool when you need to register a new person in MeetSync so their calendar can be considered during scheduling. Must be called before a participant can appear in proposals, bookings, or availability queries. Supports Google, Outlook, and iCal providers. |
| getParticipantA | Use this tool when you already have the participant's UUID and need to look up their details — timezone, calendar provider, or status. Prerequisite: you must have the UUID from a prior createParticipant or listParticipants call. If you only have a name or email address and need the UUID, call listParticipants first. Note: this does not return scheduling preferences — call getParticipantPreferences for that. |
| updateParticipantA | Use this tool when you need to change a participant's name, email, timezone, or calendar provider, or when you want to soft-deactivate a participant by setting status to "inactive". Only the fields you supply are changed (partial update — other fields stay as-is). Prefer this over deleteParticipant when you want to stop scheduling someone without erasing their history. |
| deleteParticipantA | Use this tool only when you need to permanently and irreversibly erase a participant and all their data. If the goal is simply to stop scheduling someone, use updateParticipant with status="inactive" instead — that preserves their history and can be reversed. deleteParticipant cannot be undone. By default it fails if the participant has active proposals or confirmed bookings; pass force=true only when you explicitly intend to cancel those as well. |
| getParticipantPreferencesA | Use this tool when you need to read a participant's scheduling preferences — working hours by day, blackout windows, buffer time between meetings, and maximum meetings per day. Important: getParticipant does not return preferences; you must call this tool separately. Call this before setParticipantPreferences if you only want to update some fields, since setParticipantPreferences replaces the entire preference object. |
| setParticipantPreferencesA | Use this tool when you need to set a participant's scheduling preferences: working hours, blackout windows, buffer time, and daily meeting cap. WARNING — this is a full replacement, not a partial update: any preference not included in your call reverts to its default value, which will silently overwrite existing settings. If you only want to change one field (e.g. bufferMinutes), call getParticipantPreferences first to read the current values, then send the full merged object back here. |
| getParticipantAvailabilityA | Use this tool when you need to inspect the free time windows for exactly one participant — for example, to verify they are free at a specific time before booking directly, or to understand one person's constraints before a conversation. Do not use this for group scheduling — if you need a time that works for multiple people at once, call findMutualAvailability instead. Prerequisite: you must have the participant's UUID from createParticipant or listParticipants. |
| findMutualAvailabilityA | Use this tool when you need to find meeting times that work for all participants simultaneously. This is the primary scheduling intelligence tool — call it to get scored candidate slots before creating a proposal. Prerequisites: every participant in participantIds must already be registered via createParticipant (UUIDs required — names and emails are not accepted). Have ready: the UUIDs of all participants, the meeting duration in minutes, and the date range to search. The returned slots are scored 0–1 by suitability (working hours, buffer fit, daily meeting load) and the start/end values can be passed directly into createProposal as candidateSlots. |
| listProposalsA | Use this tool when you need to browse existing meeting proposals — for example, to check whether a proposal is still pending, to find proposals involving a particular participant, or to audit all pending proposals before creating a new one. Supports filtering by status and organizer. |
| createProposalA | Use this tool when you want to send candidate meeting times to a group and collect their votes before confirming a booking. Prerequisites: every participant in participantIds must already be registered via createParticipant; the organizerParticipantId must be one of the participantIds. Typical sequence: createParticipant for each person → findMutualAvailability to get slots → createProposal with those slots. After creation the proposal is "pending". Each participant must respond via respondToProposal (one call per person). Once all participants accept, the proposal becomes "accepted" and you call createBooking to confirm. |
| getProposalA | Use this tool when you need to inspect a specific proposal — to see its current status, check which participants have and have not yet responded, or retrieve the acceptedSlotId you will need to pass into createBooking once the proposal is accepted. If you do not have the proposalId, call listProposals first. |
| cancelProposalA | Use this tool when the organizer needs to withdraw an entire proposal — cancelling it for all participants so no booking can result. Only proposals with status "pending" can be cancelled. Important: this is not the tool to use when a single participant wants to decline. If one participant wants to say no while others continue, call respondToProposal with status="rejected" for that participant instead. |
| respondToProposalA | Use this tool to record one participant's response (accept or reject) to a meeting proposal. This must be called once per participant — if a proposal has 3 participants, you must call this tool 3 separate times, once for each participantId. Call getProposal first to see which participants have not yet responded (check the responses array). When accepting, the participant can indicate a preferredSlotId from the proposal's candidateSlots. Once every participant has responded and all accepted, the proposal automatically becomes "accepted" and you can then call createBooking (proposal-based mode) to confirm the meeting. |
| listBookingsB | Use this tool when you need to retrieve confirmed, cancelled, or rescheduled meetings. Supports filtering by participant, status, and time range. Call this to check a participant's upcoming meetings or to find a specific booking before rescheduling or cancelling it. |
| createBookingA | Use this tool to confirm a meeting. Choose the mode based on how you arrived here: MODE 1 — Proposal-based (used after a proposal workflow): call this when a proposal's status is "accepted". First call getProposal to retrieve the acceptedSlotId, then pass proposalId + slotId (= acceptedSlotId) here. All participant UUIDs are already known from the proposal. MODE 2 — Direct (skipping the proposal workflow): call this when you already know the exact meeting time and want to book immediately. You must provide organizerParticipantId, participantIds (all UUIDs from createParticipant), startTime, and endTime. Use this only when consensus is already established outside of MeetSync. In both modes, conflict detection runs automatically and the call fails if any participant has an overlapping confirmed booking. |
| getBookingA | Use this tool when you need to retrieve full details about a specific booking — including its status, participants, start/end times, calendar event IDs, and any linked proposal. Useful for confirming a booking was created successfully or for building a summary to share with participants. |
| rescheduleBookingA | Use this tool when you need to move a confirmed meeting to a new time. The new startTime must be in the future. Conflict detection runs automatically for all participants. Only bookings with status "confirmed" can be rescheduled. |
| cancelBookingA | Use this tool when a confirmed meeting needs to be permanently cancelled for all participants. If the intent is to move the meeting to a different time rather than cancel it entirely, use rescheduleBooking instead — cancellation is irreversible. Only bookings with status "confirmed" can be cancelled; already-cancelled bookings will return an error. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nicholasemccormick/mcp-meetsync'
If you have feedback or need assistance with the MCP directory API, please join our Discord server