The problem: "just find time for a meeting" is harder than it sounds
Scheduling a meeting sounds like a small task until you actually try to do it by hand: check your own calendar, guess at the other person's availability, propose a few times, wait for a reply, get a counter-proposal, check again, and finally land on something that works — all while making sure the meeting is actually created on both calendars with a working video link. Ask an AI client to "set up a call with someone" and if it just picks a time and books it, you get a meeting nobody actually confirmed works, sent to a calendar that might already be busy at that hour.
The alternative isn't asking the AI to guess less — it's giving it access to the same information you'd check yourself: your real calendar, the other person's real availability where it's visible, and a chance for you to see the plan before anything gets created. That's what turns "schedule a meeting" from a risky one-shot action into something you can trust an AI client to actually do.
This guide covers how meeting scheduling works end to end when it's backed by real calendar data — previewing before creating, checking invitee availability, and what happens once an invite goes out.
How it works
Meeting scheduling runs through a meeting_schedule tool with two modes. mode: "preview" takes a natural-language request and returns the AI's parsed intent, a generated agenda, any clarifying questions still open, and a list of suggested open time slots pulled from the organizer's real calendar — nothing is created yet. mode: "create" finalizes it, using whatever was confirmed in the preview step. A conversational client is expected to preview first, relay the clarifications and suggested times back to you, and only call create once you've actually answered them.
Clarifications cover who's involved, when, how long, and modality — in person, by phone, or video, defaulting to video if you don't say otherwise. Availability itself is gathered from every connected calendar, not just one — for meeting invites specifically, the organizer's busy time is intersected with each invitee's free/busy (looked up via a calendar free/busy API that returns only busy blocks, never event content), so a suggested time is one where both sides are genuinely free, not just a guess based on your calendar alone.
Once a meeting is confirmed, invitees get an emailed response link. If you didn't lock in a specific time, the invite's primary action is picking one from your published availability — the invitee's pick commits directly, since you already offered your open windows by inviting them that way. If you did propose a specific time, the invitee instead sees Accept, Decline, and "suggest a different time," with a calendar file attached. A public booking link is also available as a standing alternative: a shareable URL bound to a meeting template that lets anyone self-select an open slot without any back-and-forth at all.
Setting it up
- Create your account and connect a calendar. Sign up at /sign-up, then connect your calendar integration from your integrations settings so real availability is visible to the scheduling tools.
- Connect your AI client. Go to /install and connect whichever client you want to schedule from — the same MCP endpoint and account back every connected client.
- Ask for a meeting in plain language, including who it's with and roughly when. The client should run this as a preview first: expect it to come back with a proposed agenda, a few open time slots, and any clarifying questions — like modality, or duration, if you didn't specify them.
- Answer the clarifications. Confirm the modality (video is the default), the duration, and who else needs to be included, if asked.
- Confirm the time and let it create the meeting. Once you've picked a slot (or decided to let the invitee pick from your open windows), the client finalizes the meeting — this is the step that actually creates the calendar event and sends the invite.
- Track responses as they come in. Invitees respond via their emailed link — accepting, declining, suggesting a different time, or picking their own slot, depending on how the invite was set up. You'll see the meeting's status update as each response lands.
When there's no back-and-forth to have
Not every meeting needs a proposed time and a round of responses. If you want to hand scheduling off entirely — a sales call, an intake session, office hours — a booking link skips the negotiation altogether: it's a shareable URL bound to a meeting template that shows an external party your open slots and lets them book one directly. No invite email, no accept/decline cycle, just a slot picked and a meeting created. This is a standing alternative to the invite flow above, not a replacement for it — use whichever shape actually matches how the meeting is getting arranged.
Where to go next
If you'd like an AI client to also search your email for scheduling-relevant context — a thread where a time was already discussed, for instance — that depends on which client and integrations you've connected; One Memory Across Every AI Client covers the general pattern for making the same connected data available across every client you use.