Remote MCP server for 42min online scheduling. Find open slots, book, reschedule and cancel meetings, manage availability, recurring meetings, meeting polls, routing forms and event types from Claude, ChatGPT, Cursor or any MCP client. Completely free.
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Try asking
The connected user's profile (name, username, timezone, locale) plus their organization and MCP role.
List bookable meeting templates (event types), optionally filtered by active status, host user, or slug. Cursor-paginated.
Full detail for one event type (duration, location, questions, limits) by UUID or "username/slug".
Open booking slots for an event type over a date range (max 31 days). Output is UTC ISO, capped at 200 slots.
Check whether one specific start time is bookable for an event type.
List bookings with filters (status, date range, event type, attendee email, host). host_user_ids (array) supersedes host_user_id. series_id narrows to one recurring series, whose occurrences are ordinary bookings. Set include_responses for labeled invitee form answers per booking. Cursor-paginated.
One booking by uid, including labeled form responses (answers to since-deleted questions are omitted), routing form answers, location/conferencing URL, and no-show status.
Host-side meetings view (upcoming/past/date range), with status, event type, and host filters (host_user_ids array supersedes host_user_id). Page-based.
Search contacts by name/email, with meeting counts and tags. Page-based.
One contact plus their full meeting history (capped, most recent first).
The connected user's own availability schedules (weekly intervals). Pass schedule_id for one schedule's date overrides. The no-argument form also returns the user's out of office periods (whole-day away ranges).
List secret links (one-time booking links) with created/booked/expired status. Page-based.
List group scheduling polls (roundtables) with status, vote counts, and confirmed time. Newest first, capped at 50.
Full poll state for one roundtable: candidate slots, participants, per-slot vote tallies, and confirmed booking.
Book a meeting for an attendee at a start time on any active event type in the organization (public-page parity). Verify the slot with check_slot first. Pass the same idempotency_key when retrying. Note: a booking created on a colleague's or team event type cannot later be retrieved or canceled through MCP (same limitation as the public booking page — the attendee manages it via the emailed reschedule/cancel links), but a retry of this call still replays the settled result including the booking uid.
Cancel a booking by uid. Notifies the attendee and removes the calendar event. Idempotent: canceling an already-canceled booking returns its current state and finishes any incomplete cleanup. For group events this cancels THIS booking only — one attendee's registration, not the whole session.
Move a booking to a new start time. Verify the new slot with check_slot first; if this fails with slot_unavailable, call find_available_slots and offer alternatives. Pass the same idempotency_key when retrying.
Turn a bookable event type on or off. Turning it off immediately stops new public bookings. Idempotent: setting it to the state it is already in returns the current state with no change and no notification re-sent.
Mark or unmark a past, confirmed meeting as a no-show. Idempotent: setting it to the state it is already in returns the current state with no change and no notification re-sent.
Add or replace a date-specific override on one of the connected user's own availability schedules. Pass intervals: null to fully block the day, or an array of {start, end} HH:MM intervals for special hours. Idempotent: calling this again for the same date replaces the prior override.
Block a whole-day date range (inclusive) during which the connected user has no bookable slots anywhere — every schedule and event type, and round-robin skips them. Existing confirmed meetings inside the range are NOT canceled; the result reports how many there are so they can be reviewed. Multiple periods may coexist; past periods are cleaned up automatically.
Delete one of the connected user's out of office periods by id (ids come from get_schedules or add_out_of_office). The affected days become bookable again immediately.
Generate secret links (one-time booking links, quantity 1-10) for an event type you manage, returning shareable URLs. Each link can be used for exactly one booking. The link is hosted by the event type's owner. Pass the same idempotency_key when retrying so a retry never mints a duplicate batch.
Delete an unused secret link so it can no longer be used to book. Applies to links of event types you manage.
Create a DRAFT group scheduling poll (roundtable) on one of your event types, with 1-20 candidate time slots and — for access_mode "invitees" — up to 50 email participants. Drafts send NO emails and place NO calendar holds; voting starts only when publish_roundtable is called. Pass the same idempotency_key when retrying.
Publish a draft roundtable: opens voting, immediately emails every invited participant (invitees mode), and places tentative calendar holds on all candidate slots on the host calendar. This cannot be undone via MCP. Confirm with the user before calling.
List organization members (id, name, email, username, role, status, timezone). Use the returned user_id values in the host_user_id / host_user_ids filters of list_bookings and list_meetings. Page-based.
List the lead-qualification routing forms you can access, newest first, with their public URL, status and question/rule/response counts. Use routing_form_id with get_routing_form, list_routing_responses, get_routing_form_stats and evaluate_routing_form; pass next_cursor to continue.
The full definition of one routing form: its questions (question_id is what list_routing_responses answer filters and evaluate_routing_form answers use) and its rules. Rules are evaluated top-to-bottom, first match wins, and the fallback fires when nothing matched. Questions and rules are paged together: pass next_page back to continue — nothing is repeated — and omit page to restart if the form was edited. A question with a very long option list reports options_total alongside the options it carries; an item too large to fit a page at all is returned as { omitted: true } with its id, so paging still advances. A condition carrying question_lookup_skipped was not checked against the current questions — its question_id: null means "not looked up", never "deleted".
Lead-qualification submissions for one routing form: what each lead answered, which rule matched, where they were sent, and the booking they made if any. Rows are previews — the first 10 answers, shortened; call get_routing_response for the expanded answer values, UTM and tracking params. Filter by date range (to is exclusive), destination type, matched rule, whether a booking happened, or by answers: dropdown/radio match exactly, checkboxes match any of the values you list, number takes {min, max}, and text-like questions match a case-insensitive substring. Pass next_cursor to continue.
The full record for one response — every stored answer entry (current questions, UUID keys whose question no longer exists or never did, and any other stored key) with its raw value where the value is a primitive or list, a bounded JSON preview otherwise; UTM and tracking params; linked booking. list_routing_responses rows are previews. Answers are paged: follow next_answers_offset; restart from 0 if the form was edited between calls. Pathologically long checkbox lists, escaping-heavy text and non-primitive values are cut or previewed, and always flagged.
One call for 'how is this form converting / where do leads land'. Use matched_rule_id / has_booking on list_routing_responses to drill in. by_rule is paged: follow next_rules_offset; restart from 0 if the form was edited between calls.
Answer with question_ids from get_routing_form (values as strings, numbers, booleans or null — numbers as numbers, e.g. 0, exactly as the public form sends them; checkboxes as arrays of those; answers payload up to 64 K characters in total). Nothing is saved, no notifications, webhooks or CRM syncs fire. Works on inactive forms so you can test before turning one on — public_submit_blockers tells you what would still stop a real submission. The trace is paged: follow next_trace_offset; restart from 0 if the form was edited between calls. matched_rule.position is null when the matching rule falls outside the trace page you were given — page further to see it, and never assume a position that is not reported. A trace entry too large to fit a page is returned as { omitted: true } with its rule_id and position, so paging still advances.
Turn a routing form on or off. Turning it off makes the public form page unavailable (404) and stops new submissions immediately; forms that chain into it will send leads to a dead page — check with get_routing_form on the parent. Idempotent. Returns the form summary; call get_routing_form for questions and rules.
Copy a routing form, including its questions and rules — the copied rules keep working on the copy, and destinations are copied as is. The copy is created INACTIVE and owned by you, gets its own URL slug, has no responses, and counts against the organization's routing-form limit. Pass the same idempotency_key when retrying so a retry never creates a second copy.
Lists recurring meeting series (each is one attendee, one host, one repeating pattern). Narrowed to the hosts you can see: a user sees their own, a manager their groups, an admin the organization. Occurrences are ordinary bookings; list them with list_bookings and the series uid.
One recurring series by uid, with its repeat pattern, host, attendee, status, and the next four occurrences. An occurrence marked moved was rescheduled on its own and no longer follows the pattern. Use expected_revision from the "version" field when calling resume_recurring or update_recurring.
Create a recurring meeting series: one attendee, one host, one repeating pattern, booked as a run of ordinary meetings. The event type must allow recurring bookings. Dates the host is not free on are skipped and reported, and the walk keeps going until it has "count" meetings or runs out of room. Pass the same idempotency_key when retrying.
Pause a recurring series: every upcoming occurrence is canceled and held, and the attendee keeps the same number of meetings owed. resume_recurring reschedules the held ones onto the next free dates. Safe to repeat: a second call holds anything the first did not reach.
Resume a paused series: one replacement meeting is booked for each held occurrence, on the pattern's next free dates, and an upcoming meeting off those dates is moved onto them. Pass expected_revision, the "version" field from get_recurring, and the call is refused if the series changed since you read it. Any occurrence still owed leaves the series paused, and calling this again with the current version finishes it.
End a recurring series for good: every upcoming occurrence is canceled, the attendee is told once, and nothing is owed or rescheduled. Past meetings are untouched. Safe to repeat: a second call cancels anything the first did not reach.
Change a recurring series: its repeat pattern, its fixed link, or whether the attendee is notified. A pattern change (frequency, interval_weeks, weekdays, time) rebuilds the upcoming occurrences onto the new pattern's next dates: ones already on those dates stay, the others are rebooked, and the round is reported here, with zero counts when nothing had to move. A location_url or notify_invitee change leaves the dates alone. Pass expected_revision, the "version" field from get_recurring. Only the fields you send are changed.
Move a recurring series and every upcoming occurrence to a different host. The new host must be one you may manage and must be able to host the event type. The run stops at the first occurrence it cannot move, and the series host is left alone unless every one of them was moved.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
42min MCP runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every 42min MCP tool your agent needs.
Free to start.