# DaySchedule API and MCP Skills

Use DaySchedule to build [appointment-booking assistants](https://dayschedule.com/docs/t/dayschedule-mcp-server-ai-appointment-booking-and-scheduling/570), scheduling agents, calendar automations, and customer engagement workflows. DaySchedule supports both a REST API for application integrations and a Model Context Protocol (MCP) server for AI assistants.

## Connection details

### MCP server

```text
https://api.dayschedule.com/mcp?apiKey=xxxxx
```

Replace `xxxxx` with a DaySchedule API key. The complete URL contains a credential and must be treated like a password.

Example MCP configuration:

```json
{
  "mcpServers": {
    "dayschedule": {
      "url": "https://api.dayschedule.com/mcp?apiKey=xxxxx"
    }
  }
}
```

### REST API

```text
https://api.dayschedule.com/v1
```

Authenticate REST requests by adding the API key as an `apiKey` query parameter:

```http
GET https://api.dayschedule.com/v1/bookings?apiKey=xxxxx
```

API keys are available in **DaySchedule → Settings → API keys**. Never commit a real key to source control, include it in screenshots, or expose it in browser code.

## MCP tools

### Resource types

| Tool | Capability |
| --- | --- |
| `get_resource_types` | List event, webinar, one-to-one, group, and round-robin resource types. |
| `get_resource_type` | Get one resource type and its booking configuration. |
| `create_resource_type` | Create an event or webinar resource type. |
| `update_resource_type` | Replace a resource type and its booking configuration. |
| `delete_resource_type` | Delete a resource type. |

### Schedules and availability

| Tool | Capability |
| --- | --- |
| `get_schedules` | List availability schedules. |
| `get_schedule` | Get a schedule with its timezone, hours, and rules. |
| `create_schedule` | Create an availability schedule. |
| `update_schedule` | Replace working hours, rules, timezone, and date overrides. |
| `get_default_schedule` | Get the account's default schedule. |
| `get_available_slots` | Find open booking times for a resource and date range. |

### Booking pages

| Tool | Capability |
| --- | --- |
| `get_pages` | List booking pages. |
| `create_page` | Create an organization, group, or business booking page. |

### Bookings and attendees

| Tool | Capability |
| --- | --- |
| `get_bookings` | List upcoming bookings with pagination. |
| `get_booking` | Get complete booking details. |
| `create_booking` | Book a resource for an attendee at an available time. |
| `reschedule_booking` | Move a booking to a different available time. |
| `cancel_booking` | Cancel a booking, optionally with a reason. |
| `confirm_booking` | Confirm a pending booking. |
| `mark_booking_noshow` | Mark an attendee or booking as a no-show. |
| `add_booking_invitee` | Add an attendee to an existing booking. |

## REST API capabilities

The uploaded DaySchedule OpenAPI specification defines the following endpoint groups. Paths below are relative to `https://api.dayschedule.com`.

### Resources

| Method | Path | Purpose |
| --- | --- | --- |
| `GET`, `POST` | `/v1/resources` | List or create resources. |
| `GET`, `PUT`, `PATCH`, `DELETE` | `/v1/resources/:id` | Read, replace, update, or delete a resource. |
| `GET` | `/v1/availability/:id` | Check a resource's available dates and times. |

### Bookings and invitees

| Method | Path | Purpose |
| --- | --- | --- |
| `GET`, `POST` | `/v1/bookings` | Search bookings or create an appointment. |
| `GET`, `PUT`, `PATCH`, `DELETE` | `/v1/bookings/:id` | Read, replace, update, or delete a booking. |
| `PATCH` | `/v1/bookings/:id/confirm` | Confirm a booking. |
| `PATCH` | `/v1/bookings/:id/reschedule` | Reschedule a booking. |
| `PATCH` | `/v1/bookings/:id/cancel` | Cancel a booking. |
| `PATCH` | `/v1/bookings/:id/assignee` | Change a booking assignee. |
| `PATCH` | `/v1/bookings/:id/attendees` | Update booking attendees. |
| `GET`, `POST` | `/v1/invitees` | List or create invitees. |
| `GET`, `PUT`, `DELETE` | `/v1/invitees/:id` | Read, replace, or delete an invitee. |
| `PATCH` | `/v1/invitees/:id/status` | Update an invitee's status. |
| `PATCH` | `/v1/invitees/:id/checkin` | Check in an invitee. |

### Pages and schedules

| Method | Path | Purpose |
| --- | --- | --- |
| `GET`, `POST` | `/v1/pages` | List or create booking pages. |
| `GET`, `PUT`, `DELETE` | `/v1/pages/:id` | Read, replace, or delete a booking page. |
| `GET`, `POST` | `/v1/schedules` | List or create schedules. |
| `GET`, `PUT`, `PATCH`, `DELETE` | `/v1/schedules/:id` | Read, replace, update, or delete a schedule. |

### Workflows and CRM

| Method | Path | Purpose |
| --- | --- | --- |
| `GET`, `POST` | `/v1/workflows` | List or create workflows. |
| `GET` | `/v1/workflows/automations` | List workflow automations. |
| `GET`, `PUT`, `PATCH`, `DELETE` | `/v1/workflows/:id` | Manage a workflow. |
| `GET`, `POST` | `/v1/contacts` | List or create contacts. |
| `GET`, `PUT`, `PATCH`, `DELETE` | `/v1/contacts/:id` | Manage a contact. |
| `POST` | `/v1/contacts/bulk` | Create contacts in bulk. |
| `PUT` | `/v1/contacts/assignee` | Update contact assignees. |
| `GET`, `POST` | `/v1/activities` | List or create activities. |
| `GET`, `PUT`, `PATCH`, `DELETE` | `/v1/activities/:id` | Manage an activity. |

### Short links and analytics

| Method | Path | Purpose |
| --- | --- | --- |
| `GET`, `POST` | `/v1/links` | List or create short links. |
| `POST` | `/v1/links/bulk` | Create short links in bulk. |
| `GET`, `PUT`, `DELETE` | `/v1/links/:key` | Read, replace, or delete a short link. |
| `GET` | `/v1/analytics` | Get analytics. |
| `GET` | `/v1/analytics/top` | Get top analytics results. |
| `GET` | `/v1/analytics/referer` | Group analytics by referrer. |
| `GET` | `/v1/analytics/country` | Group analytics by country. |
| `GET` | `/v1/analytics/city` | Group analytics by city. |
| `GET` | `/v1/analytics/browser` | Group analytics by browser. |
| `GET` | `/v1/analytics/os` | Group analytics by operating system. |
| `GET` | `/v1/analytics/device` | Group analytics by device. |
| `GET` | `/v1/analytics/clicks` | Get click analytics. |

### Teams, users, and operations

| Method | Path | Purpose |
| --- | --- | --- |
| `GET`, `POST` | `/v1/teams` | List or create teams. |
| `GET`, `PUT`, `DELETE` | `/v1/teams/:id` | Read, replace, or delete a team. |
| `POST` | `/v1/teams/:id/add` | Add a member to a team. |
| `GET`, `POST` | `/v1/users` | List or create users. |
| `GET`, `PUT`, `DELETE` | `/v1/users/:id` | Read, replace, or delete a user. |
| `GET` | `/v1/dashboard` | Get dashboard data. |
| `GET` | `/v1/jobs` | List jobs. |
| `GET` | `/v1/jobs/reports` | Get job reports. |
| `GET` | `/v1/jobs/:id` | Get a job. |

## Recommended AI workflow

1. Identify the resource, booking, schedule, or page by listing or reading it first.
2. Resolve dates in the user's timezone and repeat the exact date and time before a write action.
3. Call `get_available_slots` before creating or rescheduling a booking.
4. Ask for missing required attendee fields rather than inventing values.
5. Request confirmation before cancellations, deletions, or broad updates.
6. Read the changed object after an action and summarize its new status.

## Example prompts

```text
Find the available 30-minute slots for Vikash's meeting next Tuesday.
```

```text
Book a  meeting with Vikash for Priya Sharma at 10:30 AM on September 22, 2026. Her email is priya@example.com.
```


## Error handling

- **Unauthorized:** Verify that the `apiKey` value is valid and has not been revoked.
- **No available slot:** Check availability again with an explicit resource, date range, and timezone.
- **Missing information:** Read the relevant resource or booking configuration and request only the required missing fields.
- **Not found:** Confirm the resource or booking ID by listing records before retrying.
- **Validation error:** Match the request body and parameter types defined in the DaySchedule OpenAPI specification.
- **Exposed key:** Revoke it immediately, create a replacement in DaySchedule, and update the MCP or REST integration.