Connect once with your LemCall login, then inspect workspaces, audit team coverage, safely manage staffing and handle bookings through 24 permission-aware MCP tools.
24
documented tools
14 read / 10 write
clear action boundaries
OAuth
no API key to copy
The server uses remote HTTP MCP and browser-based OAuth. Your AI client must support remote MCP servers and OAuth.
Open the connectors, integrations or developer settings in your MCP-compatible AI client and choose the option to add a custom remote MCP server.
Use the HTTPS endpoint below. You do not need to create an API key or copy a Supabase credential.
Your client opens LemCall's OAuth sign-in. Sign in with the LemCall account whose workspaces and bookings you want the assistant to access.
Approve the connection, return to your AI client and ask it to list your LemCall workspaces. The assistant should call list_workspaces first.
Production MCP endpoint
https://lemcall.co/api/mcpTreat this URL as configuration, not a web page. Opening it directly without OAuth correctly returns an authentication challenge.
Use the same production endpoint for every LemCall workspace; access is determined only after you sign in.
In ChatGPT, enable Developer mode, open Plugins, add a remote MCP connection, and paste https://lemcall.co/api/mcp. Complete the LemCall OAuth window with your normal email and password. Never paste a Supabase key or calendar-provider token.
When the public LemCall plugin is available in the plugin directory, install it there and choose Connect. The same browser-based LemCall sign-in and workspace permissions apply. Existing LemCall entitlements are used; the plugin does not sell or upgrade subscriptions.
If tools begin returning unauthenticated, remove only the LemCall connection in ChatGPT and connect it again. A fresh OAuth grant restores access without changing booking pages, calendars, or team assignments.
Remove LemCall from ChatGPT's plugin or connector settings when you no longer want the assistant to call it. Contact support@lemcall.co if you also need help revoking remaining sessions or deleting LemCall account data.
Use a read-first workflow so the assistant discovers IDs, permissions and current state instead of guessing.
“Connect to LemCall, list my workspaces and tell me which permissions you have. Do not change anything.”
“List my active meeting types, then find my next five available 30-minute slots in Europe/London. Do not create a booking.”
Start with list_workspaces, then retrieve the IDs needed by later tools.
Pass ISO timestamps and IANA timezone names. Never rely on ambiguous abbreviations.
Show the proposed booking, hours, reschedule or cancellation before changing it.
These are the tools currently shipped by the production LemCall MCP server.
list_workspacesLists every LemCall workspace the signed-in user can access and the effective permissions in each.
Always start here. If more than one workspace is returned, use the correct workspace_id in later calls.
NoneWorkspace IDs, names, slugs, plans, roles and permissions.
get_workspace_contextConfirms the active workspace, plan, role and permission set before an action.
Use before diagnosing a permission error or running an administrative workflow.
workspace_id (optional when only one eligible workspace exists)One resolved workspace and its effective permissions.
list_booking_pagesFinds every authorised booking page and its linked meeting configuration without truncating paginated results.
Use to discover the right public booking page or understand how a workspace routes bookings.
workspace_id (optional)status: active, draft, archived or anylimit: internal batch size 1–100Page IDs, titles, slugs, status, routing mode, public URLs, creation dates, and linked meeting titles, durations and locations.
list_event_typesLists the meeting formats that can be booked through LemCall.
Use before asking for times or creating a booking; both require an event_type_id.
workspace_id (optional)only_active (defaults to true)limit: 1–100Meeting-type IDs, names, slugs, duration, active state, page and location type.
list_upcoming_bookingsReturns upcoming meetings visible to the signed-in user.
Use to prepare for the week, find a booking to inspect, reschedule or cancel, or check meeting links.
workspace_id (optional)days_ahead: 1–180limit: 1–100Booking IDs, times, status, meeting links, page and meeting-type IDs; attendee data when permitted.
Names and email addresses are redacted unless the user's workspace permission includes bookings.read_pii.
get_bookingLoads one accessible booking with its scheduling and attendee details.
Use after list_upcoming_bookings when the user needs the exact details of one meeting.
booking_id (required)workspace_id (optional)Confirmation number, attendee fields, service, status, times, timezone, meeting link and ownership IDs.
Attendee details remain subject to workspace permissions and row-level security.
get_availability_scheduleReads the signed-in user's weekly working-hours rules and the timezone in which they were authored.
Always call this before changing working hours so the user can review the current schedule.
workspace_id (optional)Authoring timezone and weekly rules with day, start time, end time and active state.
replace_availability_scheduleAtomically replaces the signed-in user's default weekly working hours and authoring timezone.
Use for a complete weekly-hours update after reading the current schedule and confirming the replacement.
timezone (IANA name)rules (1–28 weekly blocks)idempotency_keyworkspace_id (optional)Success status, saved timezone and rule count.
This replaces the full default weekly schedule. Event-specific schedules are preserved, but omitted default rules are removed.
suggest_available_timesRuns LemCall's real availability engine, including connected-calendar conflicts and routing constraints.
Use immediately before creating or rescheduling a booking. Never invent a slot.
event_type_idstart_date: YYYY-MM-DDtimezone (IANA name)days: 1–14limit: 1–50workspace_id (optional)Bookable start/end timestamps plus availability diagnostics and the authoring timezone.
create_bookingCreates an unpaid booking through LemCall's canonical routing, conflict, calendar-sync and notification workflow.
Use only after suggest_available_times and after the attendee has explicitly accepted LemCall's Terms and Privacy Policy.
event_type_idstart_at (exact suggested ISO time)timezonefull_nameemailaccepted_terms: trueaccepted_privacy: trueidempotency_keyoptional phone, company and notesworkspace_id (optional)The booking ID, status, confirmation number, times, meeting link, event type and page.
Paid event types are not supported by this tool. Reuse the same idempotency key when retrying the same request.
reschedule_bookingMoves a booking to an exact available slot and updates calendars, meeting links and notifications.
Use after checking the booking and calling suggest_available_times for the replacement slot.
booking_idstart_at (exact suggested ISO time)timezoneidempotency_keyoptional reasonworkspace_id (optional)The updated booking's stable scheduling details.
Rescheduling changes an existing meeting. Confirm the booking and new time with the user first.
cancel_bookingCancels an upcoming booking visible to the signed-in user and records an optional reason.
Use after retrieving the booking and receiving explicit confirmation to cancel it.
booking_idoptional reasonworkspace_id (optional)Booking ID, cancelled status, cancellation time and reason.
Cancellation is irreversible and can notify participants. Treat it as a destructive action.
list_workspace_peopleLists people, roles, operational tags, page load, timezone and calendar freshness without returning provider credentials.
Use before staffing, workload, readiness or exact-person questions.
workspace_id (optional)tag (optional exact slug)limit: 1–100Workspace people and readiness signals.
list_calendar_assignmentsReturns the booking-page-to-host assignment matrix with routing and operational tags.
Use for who-covers-what and exact page selection. Calendar means LemCall booking page here.
workspace_id (optional)tag (optional)cursorlimit: 1–100Pages, assigned hosts and a stable next cursor.
audit_calendar_coverageSeparates planned staffing from canonical live bookable slots and preserves unknown calendar state.
Use for 24/7, gap, single-person, overlap and live-vs-planned questions.
page_ids (optional, max 100)temporary policy override (optional)include_livelive_horizon_days: 1–31cursor and limitPolicy, planned gaps/depth/excess, live per-event slot status, freshness, blockers and transparent commercial factors.
calendar_free without explicit host hours is unbounded_by_schedule. Stale data and unavailable host depth return unknown, never false zero.
simulate_staffing_changeModels exact add, remove or replace targets without creating an executable plan.
Use for what-if questions before deciding whether to prepare a write.
actionpage_idsuser_idsfrom_user_id for replaceBefore/after host counts and deterministic risk labels.
get_coverage_policiesReads the workspace default and optional page policy overrides.
Use before interpreting gaps or changing targets.
workspace_id (optional)booking_page_id (optional)Timezone, integer-minute windows, minimum depth, preferred maximum and live horizon.
plan_calendar_assignment_changePreviews and freezes exact page/person IDs for add, remove or replace.
Use after exact entity resolution. 'Remove' means page unassignment, not workspace offboarding.
actionpage_ids (max 500 per plan)user_idsfrom_user_id for replaceremoval_modeA ten-minute plan ID and immutable preview.
Fuzzy or duplicated names must be clarified before this tool is called.
plan_team_hours_changePreviews a complete page-specific schedule replacement for one assigned person.
Use for overnight or full-day staffing changes after confirming the person's timezone.
page_iduser_idwindowsfull_day_weekdaysCurrent/proposed hours and a ten-minute plan ID.
Equal endpoints are rejected. Full days are normalized into explicit non-degenerate ranges.
plan_coverage_policy_changePreviews a saved workspace or page coverage target.
Use to save 24/7, business-hours, evening or weekend service targets.
booking_page_id or nulltimezonewindows using 0–1440 minutesminimum_concurrent_hostsmaximum_preferred_hostslive_horizon_daysCurrent/proposed policy and a ten-minute plan ID.
plan_workspace_invitationPreviews an invitation and optional pending page assignment.
Use to invite a person without counting them as coverage before they are active and ready.
emailrolepending_page_idsInvitation impact and a ten-minute plan ID.
plan_member_offboardingRuns the hardened ownership, booking, hold and integration impact preflight for explicit workspace removal.
Use only for explicit offboard/remove-from-workspace requests.
user_idworkspace_id (optional)Blockers, impact and a ten-minute plan ID.
Owners and unresolved ownership/booking blockers fail closed.
execute_admin_planExecutes only the immutable targets stored in an unexpired server plan.
Use only after the user has reviewed and confirmed the plan preview.
plan_ididempotency_keySucceeded, partial, failed or expired status with bounded result codes.
Always destructive-hinted. Actor, OAuth client, workspace, expiry and source versions are rechecked.
get_admin_operationPolls plan and bulk-operation progress without keeping an MCP request open.
Use after executing a large operation or when a client reconnects.
plan_idStatus, preview, result, outcome code and timestamps.
Each recipe follows the same rule: read the current state, present a choice, then write only after confirmation.
list_workspaces → list_event_types → suggest_available_times → create_booking
Example prompt
“Find three 30-minute times next week for my Discovery meeting in Europe/London. Show them to me before booking anything.”
list_workspaces → list_upcoming_bookings → get_booking
Example prompt
“Show my LemCall meetings for the next seven days, grouped by day. Include meeting links where available.”
get_availability_schedule → user review → replace_availability_schedule → get_availability_schedule
Example prompt
“Read my current hours first. Then draft, but do not apply, a Monday–Thursday 09:00–17:00 schedule in Europe/Berlin.”
list_upcoming_bookings → get_booking → suggest_available_times → reschedule_booking
Example prompt
“Find my meeting with Alex, show me three replacement times on Friday, and wait for my choice before rescheduling.”
list_calendar_assignments → get_coverage_policies → audit_calendar_coverage
Example prompt
“Audit every page tagged sales for true 24/7 coverage in Europe/London. Keep planned staffing and live bookability separate, and explain every unknown result.”
list_workspace_people → list_calendar_assignments → simulate_staffing_change → plan_calendar_assignment_change → user review → execute_admin_plan
Example prompt
“Find jane@example.com and every page tagged enterprise. Simulate adding her, show the exact targets and blockers, then wait for my approval before executing.”
The MCP acts as the signed-in LemCall user; it does not receive a hidden administrator or service-role bypass.
Every workspace-scoped tool resolves membership and the required permission. Row-level security remains active, and records outside the user's access are not returned.
Booking names, emails and phone numbers are returned only when the workspace grants the relevant permission. Tool audit records avoid storing prompts or attendee payloads.
Availability changes and booking mutations are recorded with the actor, OAuth client, target and outcome. Caller-supplied idempotency keys are stored only as hashes.
Availability checks, routing, connected-calendar conflicts, meeting links and notifications use the same booking services as LemCall's product UI.
Staffing, team-hours, coverage-policy, invitation and offboarding tools first create an immutable ten-minute preview. execute_admin_plan accepts only that server-minted plan ID and rechecks permissions and source state.
Large workspace reads return a stable cursor rather than silently truncating the result. Continue with the returned cursor until it is null before claiming an audit covers every page.
Actions that should always be confirmed
Replacing working hours, rescheduling and cancelling affect real people or future availability. Ask the assistant to show the exact proposed change and wait for your approval. Booking creation also requires the attendee's explicit acceptance of LemCall's Terms and Privacy Policy.
Most failures are resolved by reconnecting, selecting a workspace explicitly or refreshing availability before retrying.
unauthenticatedThe connection is missing or expired. Reconnect LemCall in the AI client's connector settings and sign in again.
permission_deniedThe signed-in user does not have the workspace permission required by that tool. Check the selected workspace and role.
workspace_requiredMore than one eligible workspace exists. Run list_workspaces and pass the intended workspace_id.
not_foundThe record is outside the selected workspace, no longer exists or is not visible to this user.
conflictThe time is no longer available, the booking changed, or an idempotency key was reused for a different action. Refresh the source data.
invalid_timezoneUse an IANA timezone such as Europe/London or America/New_York—not BST, EST or another abbreviation.
provider_unavailableA calendar or scheduling provider could not answer. Wait briefly, then retry the same safe read or reuse the same idempotency key for the same write.
Remove or disconnect only the LemCall connector inside the AI client, add the endpoint again and complete a fresh LemCall sign-in. Do not paste Supabase keys into the client.
Another event or booking may have taken the slot. Run suggest_available_times again; LemCall deliberately revalidates availability instead of forcing stale times through.
Send the client name and the error message—never a password, token or API key.