Integration

OnSched integration

OnSched is an appointment scheduling API. Get bookable availability for a service at a location, then hold, reserve, book, confirm, reschedule or cancel appointments; manage customers, locations, services and resources (staff, rooms, equipment) with their links and weekly hours; set weekly and single-date allocations, weekly templates, one-off and recurring unavailability blocks and holidays; manage email templates and webhooks; read and update the company. Not exposed: company creation and user management, support tickets, V1 migration, the public booking-widget routes, external calendar connection flows (they need a browser consent step), domains, credential and key rotation routes, the health, geography and timezone lookups, and the deprecated filter and calendar-alias routes. Authentication is OAuth2 client credentials: the client ID and secret generated in the OnSched v3 dashboard are exchanged for a one-hour access token.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in OnSched.Built from the 91 OnSched tools below, on the connection you add once.

What you can do with OnSched

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Recurring block, 6 operations

  • create_recurring_blockCreate recurring blockPOSTCreate a new recurring block and assign it to an entity (Location, Resource, or Service).
  • delete_recurring_blockDelete recurring blockDELETEDeletes one recurring unavailability block by id.
  • delete_recurring_blocksDelete recurring blocksDELETEDelete all recurring blocks for a specific entity.
  • get_recurring_blockGet recurring blockGETReturns one recurring unavailability block by id with its repeat rule and times.
  • list_recurring_blocksList recurring blocksGETGet all recurring blocks for a specific entity (Location, Resource, or Service).
  • update_recurring_blockUpdate recurring blockPUTUpdates a recurring unavailability block: repeat rule, dates, wall-clock times or timezone.

Weekly availability, 6 operations

  • get_location_weekly_availabilityGet location weekly availabilityGETGet weekly availability for a location. Requires a valid ID.
  • get_resource_weekly_availabilityGet resource weekly availabilityGETGet weekly availability for a resource. Requires a valid ID.
  • get_service_weekly_availabilityGet service weekly availabilityGETGet weekly availability for a service. Requires a valid ID.
  • set_location_weekly_availabilitySet location weekly availabilityPOSTCreate weekly availability for a location using 24-hour time ranges. - `dayOfWeek`: 0 = Sunday, 1 = Monday, ..., 6 = Saturday
  • set_resource_weekly_availabilitySet resource weekly availabilityPOSTCreate weekly availability for a resource using 24-hour time ranges. - `dayOfWeek`: 0 = Sunday, 1 = Monday, ..., 6 = Saturday
  • set_service_weekly_availabilitySet service weekly availabilityPOSTCreate weekly availability for a service using 24-hour time ranges. - `dayOfWeek`: 0 = Sunday, 1 = Monday, ..., 6 = Saturday

Appointment, 5 operations

  • create_appointmentCreate appointmentPOSTCreates a booked appointment in one step for a service at a location (LocationId and ServiceId), for the slot in Unavailability (startTime, endTime) and duration. Use hold_appointment to hold a slot first.
  • delete_appointmentDelete appointmentDELETEPermanently deletes a hold (IN) or reservation (RS). Booked and historical appointments cannot be deleted; use cancel_appointment for a booked (BK) one.
  • get_appointmentGet appointmentGETReturns one appointment by id: status, times, location, service, resources, customer and custom fields.
  • list_appointmentsList appointmentsGETRetrieve a list of appointments with optional filtering.
  • update_appointmentUpdate appointmentPUTUpdate appointment metadata fields without altering schedule or resource assignments. `overridePadding` is supported for `IN`, `RS`, and `BK` appointments. Increasing effective padding revalidates availability; decreasing it does not.

Customer, 5 operations

  • create_customerCreate customerPOSTCreates a customer (email required; first and last name, phone, location, notification channel, SMS consent and custom fields optional). Returns the customer.
  • delete_customerDelete customerDELETEDeletes a customer by id (UUID, as returned by list_customers).
  • get_customerGet customerGETReturns one customer by id with name, email, phone, notification type and custom fields.
  • list_customersList customersGETLists the company's customers, one page at a time, optionally filtered by location.
  • update_customerUpdate customerPUTUpdates a customer: only the fields sent change (name, email, phone, location, notification type, custom fields).

Location, 5 operations

  • create_locationCreate locationPOSTCreate a location. - To associate resources or services, pass each ID as separate query params. - Example: `resources=uuid1&resources=uuid2`
  • delete_locationDelete locationDELETEDelete a location. Requires a valid ID.
  • get_locationGet locationGETReturns one location by id: name, contact details, address, timezone, hold expiration and notification settings.
  • list_locationsList locationsGETLists the company's locations, one page at a time, with their contact details and settings.
  • update_locationUpdate locationPUTUpdate a location. Requires a valid ID. - To associate resources or services, pass each ID as separate query params. - Example: `resources=uuid1&resources=uuid2`

Resource, 5 operations

  • create_resourceCreate resourcePOSTCreate a resource. - To associate locations or services, pass each ID as separate query params. - Example: `locations=uuid1&locations=uuid2`
  • delete_resourceDelete resourceDELETEDelete a resource. Requires a valid ID.
  • get_resourceGet resourceGETReturns one resource (staff, room or equipment) by id with its contact details, capacity and booking limits.
  • list_resourcesList resourcesGETGet all resources for the company. - Filter by associated service or location IDs.
  • update_resourceUpdate resourcePUTUpdates a resource: only the fields sent change. Pass locations or services as query lists to change its links.

Service, 5 operations

  • create_serviceCreate servicePOSTCreate a service. - To associate locations or resources, pass each ID as separate query params. - Example: `locations=uuid1&locations=uuid2`
  • delete_serviceDelete serviceDELETEDelete a service. Requires a valid ID.
  • get_serviceGet serviceGETReturns one service by id: duration and selectable lengths, padding, intervals, capacity, quotas and booking window.
  • list_servicesList servicesGETGet all services for the company. - Filter by associated location or resource IDs.
  • update_serviceUpdate servicePUTUpdates a service: only the fields sent change (duration, padding, intervals, capacity, quotas, booking window...).

Single allocation, 5 operations

  • create_single_allocationCreate single allocationPOSTCreate a single allocation for a resource or service.
  • delete_single_allocationDelete single allocationDELETEDeletes a single-date allocation by id.
  • get_single_allocationGet single allocationGETReturns one single-date allocation (extra availability on a date) by id.
  • list_single_allocationsList single allocationsGETGet all single allocations with optional filtering.
  • update_single_allocationUpdate single allocationPUTUpdates a single-date allocation: dates, resource, service, description or capacity.

Weekly template, 5 operations

  • create_weekly_templateCreate weekly templatePOSTCreate a named snapshot of open weekday intervals for the authenticated company. Templates do not affect availability until applied separately.
  • delete_weekly_templateDelete weekly templateDELETEHard-delete a weekly template. Allocations and operating hours are not changed.
  • get_weekly_templateGet weekly templateGETGet a weekly template by ID. Open weekday intervals only; no dates.
  • list_weekly_templatesList weekly templatesGETList weekly templates for the authenticated company. Responses include open weekday intervals only (no dates).
  • update_weekly_templateUpdate weekly templatePUTReplace open weekday intervals on a weekly template. Name may also be updated; duplicate names per company are rejected.

Weekly allocation, 4 operations

  • create_weekly_allocationCreate weekly allocationPOSTCreate weekly availability for a resource or service.
  • delete_weekly_allocationDelete weekly allocationDELETEDeletes a weekly allocation by id.
  • get_weekly_allocationGet weekly allocationGETReturns one weekly allocation (recurring availability window) by id.
  • list_weekly_allocationsList weekly allocationsGETGet all weekly allocations with optional filtering.

Add association, 3 operations

  • add_location_associationsAdd location associationsPUTAdd existing Service and/or Resource associations to a location. - All IDs passed must be valid.
  • add_resource_associationsAdd resource associationsPUTAdd Service and/or Location associations to a resource.
  • add_service_associationsAdd service associationsPUTAdd Resource and/or Location associations to a service. Requires valid IDs.

Bulk, 3 operations

  • create_locations_bulkCreate locations bulkPOSTCreate multiple locations in a single request. - Skips locations whose `legacyId` already exists. - Returns a summary of created, skipped, and error counts.
  • create_resources_bulkCreate resources bulkPOSTCreate multiple resources in a single request. - Skips resources whose `legacyId` already exists. - Returns a summary of created, skipped, and error counts.
  • create_services_bulkCreate services bulkPOSTCreate multiple services in a single request. - Skips services whose `legacyId` already exists. - Returns a summary of created, skipped, and error counts.

Company, 3 operations

  • get_companyGet companyGETReturns the company by id: name, contact details, booking URL slug, image and notification settings.
  • list_companiesList companiesGETReturns the companies the credentials can access; with OAuth client credentials this is the one company the token is bound to.
  • update_companyUpdate companyPUTUpdates the company: name, email, phone, website, booking URL slug, image and whether email or SMS notifications are disabled.

Remove association, 3 operations

  • remove_location_associationsRemove location associationsPUTRemove Service and/or Resource associations from a location.
  • remove_resource_associationsRemove resource associationsPUTRemove Service and/or Location associations from a resource.
  • remove_service_associationsRemove service associationsPUTRemove Resource and/or Location associations from a service.

Set association, 3 operations

  • set_location_associationsSet location associationsPOSTReplace all existing associations and set Service and/or Resource associations for a location.
  • set_resource_associationsSet resource associationsPOSTReplace all existing associations and set Service and/or Location associations for a resource.
  • set_service_associationsSet service associationsPOSTReplace all existing associations and set Resource and/or Location associations for a service.

Block, 2 operations

  • delete_unavailability_blockDelete unavailability blockDELETEDeletes one stored out-of-office unavailability block by id.
  • list_unavailability_blocksList unavailability blocksGETLists stored one-off unavailability (out-of-office) blocks for a location, resource or service within a date window.

Email template, 2 operations

  • list_email_templatesList email templatesGETRetrieve all email templates configured for the company.
  • set_email_templateSet email templatePOSTSet or update an email template for the company.

Holiday, 2 operations

  • list_holidaysList holidaysGETLists the holidays (closed dates, YYYY-MM-DD) of the company or of one location.
  • set_holidaysSet holidaysPOSTSets the holidays of the company or of one location; availability treats them as closed dates.

Unavailability, 2 operations

  • create_unavailability_blocksCreate unavailability blocksPOSTCreate one or more unavailability blocks (request body is a JSON array).
  • get_unavailability_calendarGet unavailability calendarGETReturns per-entity calendar intervals between startDate and endDate (weekly patterns, stored blocks, appointments, recurring rules, holidays). At least one of LocationIds, ResourceIds, or ServiceId must be provided.

Webhook, 2 operations

  • create_webhookCreate webhookPOSTCreates a webhook for a location: a public https URL notified on the chosen appointment events.
  • list_webhooksList webhooksGETLists the webhooks of a location with their URL, triggers and state. Their delivery headers are not returned.

Audit, 1 operation

  • list_appointment_audit_eventsList appointment audit eventsGETPrivate support query for append-only appointment audit events scoped to the company and appointment. Returns newest events first. Snapshot payloads exclude PII by design.

Availability, 1 operation

  • get_availabilityGet availabilityGETReturns bookable slots for a service at a location between startDate and endDate, as a flat list and per day, respecting hours, appointments, padding and quotas. Keep the window short.

Book, 1 operation

  • book_appointmentBook appointmentPUTBooks a held or reserved appointment, adding the customer details, notes or custom fields; status becomes BK and notifications, webhooks and calendar sync run. To change time or resources use reschedule_appointment.

Cancel, 1 operation

  • cancel_appointmentCancel appointmentPUTCancel an active appointment, updating status to `CN` (Cancelled). Clears availability cache and triggers notifications/webhooks. Cannot cancel past-dated or already-cancelled appointments.

Confirm, 1 operation

  • confirm_appointmentConfirm appointmentPUTSets confirmed to true on an appointment without changing its status (a hold stays IN until book_appointment). Sends confirmation notifications when applicable.

Cursor, 1 operation

  • list_appointments_cursorList appointments cursorGETEfficient forward-only traversal for exports and backend ingestion. The first request supplies filters, sort, order, and limit. Every continuation request must supply only the opaque `cursor` returned by the preceding response.

Custom field, 1 operation

  • list_appointment_custom_fieldsList appointment custom fieldsGETRetrieve custom fields for appointments, aggregated from associated Location, Service, and Resource. - Returns all by default; filter with query parameters - Example: `?LocationId=uuid&ServiceId=uuid`

Hold, 1 operation

  • hold_appointmentHold appointmentPOSTHolds a slot as an appointment with status IN; no notifications yet. Finish it with book_appointment. A hold expires after the location expirationDelay (900 seconds by default on new locations).

Reschedule, 1 operation

  • reschedule_appointmentReschedule appointmentPUTReschedule an existing appointment by adjusting its start/end times, resource assignments, or both.

Reserve, 1 operation

  • reserve_appointmentReserve appointmentPOSTReserves a slot with status RS: like a hold but without expiration. No notifications or external calendar events until book_appointment finalizes it; delete_appointment releases it.

Set single allocation, 1 operation

  • set_single_allocationsSet single allocationsPOSTSet multiple single allocations, replacing any existing ones for the specified resource or service.

Set unavailability block, 1 operation

  • set_unavailability_blocksSet unavailability blocksPOSTSet multiple unavailability blocks. Replaces all existing blocks for the specified resources, locations, or services.

Set webhook, 1 operation

  • set_webhooksSet webhooksPOSTReplaces every webhook of a location with the given list; an empty list removes them all (there is no update or delete). Headers are not returned by list_webhooks, so re-send each one you want to keep.

Set weekly allocation, 1 operation

  • set_weekly_allocationsSet weekly allocationsPOSTSet all weekly allocations for a resource or service, replacing any existing ones.

Validate resource, 1 operation

  • validate_appointment_resourcesValidate appointment resourcesPOSTChecks, without changing anything, whether an appointment's time is available for a new set of resources before rescheduling it with reschedule_appointment.

Use OnSched from Claude Code, Cursor or Codex

Connect OnSched in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its OnSched operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect OnSched

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect OnSched once

    Add your OnSched connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

OnSched integration FAQ

What can you do with the OnSched integration?

LiveContext exposes 91 operations on OnSched, covering recurring block, weekly availability, appointment and customer.

Popular integrations

Browse the whole catalog