# Skedda MCP

> Skedda manages workspace scheduling and resource booking via your AI agent. You use it to read facility maps, check real-time availability, and instantly create or update reservations for desks, conference rooms, and special venues—all using plain language commands.

## Overview
- **Category:** operations-management
- **Price:** Free
- **Tags:** space-booking, desk-scheduling, resource-management, calendar-integration, occupancy-tracking

## Description

You're managing an office space, right? Skedda handles all the booking crap so you don't have to click through a dozen calendar grids just to secure a desk or a conference room. Your AI client uses this server to talk directly to your facility management system. It makes sure you never overbook anything and that you always know what's available.

To start, you can get a full rundown of everything in the building using `list_spaces`, which returns every single bookable area. You also gotta know where those areas are—`list_venues` gives you a list of all distinct physical locations managed by Skedda. If you need to filter those spaces by type, `list_space_categories` pulls up an organized list of everything from 'Hot Desks' to 'Boardrooms'. And if you gotta find a specific person for the reservation, use `list_users`; it gives you a directory of every employee or member associated with your account.

When you need to know what's open, you can check availability in two ways. First, `list_bookings` lets you pull up every single booking record in the system; you can even filter that list by specific date ranges if you want to see exactly when things are booked. If you're only looking at one spot—say, a specific boardroom for next Tuesday—you use `get_booking_details` to pull all the precise information about just that existing reservation. Knowing who's there and when is key.

Changing or making reservations is where it gets smooth. You don't have to manually input everything; your agent handles it using plain language commands. If you need a new spot booked, `create_booking` takes the necessary space ID, user ID, and start/end time to book that resource instantly. But if plans change, no sweat. Use `update_booking` to adjust details on an existing booking—you can move the entire slot or switch up who's assigned without having to delete and re-create it.

And listen, sometimes you gotta kill a reservation entirely. If a meeting gets canceled last minute, `delete_booking` permanently removes that entry from the system; remember, this action can't be undone.

Basically, your agent handles the whole lifecycle: listing all spaces and venues with `list_spaces`, getting a user directory with `list_users`, checking what’s already taken using filtered views via `list_bookings` or direct checks with `get_booking_details`, and then performing any action—creating, updating, or deleting bookings—using the dedicated functions.

## Tools

### create_booking
Books a new space by specifying the required space ID, user ID, and start/end time.

### delete_booking
Permanently removes an existing booking. This action can't be undone.

### get_booking_details
Pulls all specific information about one designated, existing reservation.

### list_bookings
Lists every booking in the system; you can filter this list by a specific date range.

### list_space_categories
Retrieves an organized list of all types of spaces available (e.g., 'Boardrooms', 'Hot Desks').

### list_spaces
Returns a full listing of every physical, bookable space in the facility.

### list_users
Provides a directory of all people (employees or members) associated with the Skedda account.

### list_venues
Lists every distinct venue location managed by Skedda.

### update_booking
Changes details for a booking that already exists, like moving the time or changing the user.

## Prompt Examples

**Prompt:** 
```
List all meeting room zones and internal spaces we have available.
```

**Response:** 
```
I've pulled the facility details. You currently have 4 spaces available:
1. Main Boardroom (ID: 151A, Category: Meeting Rooms)
2. Focus Pod 1 (ID: 21B, Category: Private Desks)
3. Hot Desk A (ID: 9X, Category: Open Floor)
4. Training Center (ID: 41C, Category: Event Venus)
Do you want me to list active bookings for any of these spaces?
```

**Prompt:** 
```
Can you book 'Focus Pod 1' for tomorrow from 10:00 AM to 12:00 PM for user Marc Smith?
```

**Response:** 
```
Successfully booked Focus Pod 1 for tomorrow (10:00 AM - 12:00 PM UTC) for Marc Smith. 
Booking ID: `185011XX`.
Let me know if you need to adjust or update the allocated timeframe.
```

**Prompt:** 
```
Cancel all bookings scheduled for the 'Training Center' on Friday.
```

**Response:** 
```
I've checked the bookings for Friday at the Training Center. There were 2 active events: 
1 - 09:00 AM (Booking ID `88V1`)
2 - 02:00 PM (Booking ID `91B3`)
Both have been successfully deleted from the platform.
```

## Capabilities

### Discovering available spaces
Lists all physical buildings, venues, and space categories in your organization.

### Managing reservations (CRUD)
Allows the agent to create, read, update, or permanently delete specific bookings for any resource.

### Checking current occupancy
Retrieves detailed booking records and filters them by date range to show what's booked when.

### Identifying users
Searches the internal directory for employees or external contacts needed for a reservation.

### Modifying bookings
Updates existing reservations, changing time slots or assigning different resources without creating a new entry.

## Use Cases

### Need to book a client meeting room quickly.
A coordinator needs a boardroom for tomorrow. They ask their agent, which runs `list_spaces` to find all boardrooms, then checks availability via `list_bookings`. Finally, the agent calls `create_booking`, securing the spot and confirming it with a booking ID.

### The team needs to reschedule an event.
An admin realizes a booked training session is moved. They use `get_booking_details` first to get the original ID, then run `update_booking` to change the time and assign a new space, avoiding manual calendar edits entirely.

### Checking campus-wide capacity for an expo.
An event planner runs `list_space_categories` to scope out all available venue types. They then use this list to filter reservations across multiple days via `list_bookings`, giving them a clear view of overall occupancy.

### Cleaning up old, unnecessary bookings.
An office manager notices several temporary desks were booked months ago but are empty. They run `list_venues` to scope the area, then use `list_bookings` with a date filter and finally trigger `delete_booking` for every expired reservation.

## Benefits

- **Instant Booking Confirmation:** Stop guessing if a spot is free. By using the server, your AI agent runs `list_bookings` first, then executes `create_booking`, confirming availability and booking ID instantly in the conversation.
- **Total Resource Visibility:** Instead of clicking through separate tabs for desks vs. rooms, use `list_space_categories` to see every type of resource available at a glance.
- **Zero-Click User Assignment:** Need to assign someone? Use `list_users` to find the person's ID, then pass that directly into `create_booking`. No manual lookups needed.
- **Flexible Booking Management:** Don't need to delete an entire event? You can use `update_booking` or `delete_booking` for granular control over specific time slots. It’s precise.
- **Daily Overview in Seconds:** Instead of running reports, ask the agent to run a filtered `list_bookings` query for 'tomorrow,' and you get an actionable list right away.

## How It Works

The bottom line is: your AI client handles all API calls, letting you manage complex office logistics using simple conversation.

1. First, subscribe to the Skedda server and provide your specific API Key from your venue settings.
2. Next, tell your AI client what you need—for example, 'Book a meeting room for three people tomorrow at 1 pm.'
3. The agent runs the necessary tools (like `list_spaces` then `create_booking`) and confirms the reservation instantly in chat.

## Frequently Asked Questions

**How do I find out what rooms are available using list_spaces?**
Running `list_spaces` shows you every single physical spot. This tool gives you the full inventory, including IDs and categories for all desks and meeting areas.

**What's the difference between list_bookings and get_booking_details?**
`list_bookings` provides a high-level overview, letting you filter by date range to see multiple events. `get_booking_details`, though, gives you every single piece of information about one specific reservation.

**Can I update a booking for someone else using update_booking?**
Yes, as long as your agent has the necessary permissions and you provide both the correct booking ID and the new details (like time or user). This keeps management centralized.

**Do I need to run list_users before creating a booking?**
It's best practice. Running `list_users` first ensures you have the correct, current User ID for the person who needs to be assigned to that new reservation.

**If I try to use `create_booking` and the space is already reserved, how should my agent handle the conflict?**
The system returns a specific conflict error code. This means the booking attempt failed because the requested time slot or resource ID was unavailable. Your client can then prompt me to select an alternative timeframe or different space.

**Before I use `list_spaces`, how does the `list_space_categories` tool help me validate which type of venue I need?**
It returns a definitive list of all defined categories (e.g., 'Boardrooms', 'Open Floor'). You can cross-reference these names to ensure your request targets a valid space group before running the full `list_spaces` query.

**When I use `delete_booking`, what precautions should I take since the action is irreversible?**
Always confirm the exact booking ID you intend to delete. The tool executes the deletion immediately upon confirmation of a valid, unique ID. Double-check that specific reservation before sending the request.

**What additional data points does `get_booking_details` return beyond just the space and time?**
It pulls comprehensive records for that single booking instance. This includes the associated user ID, the name of the person who booked it, and any notes or purpose details logged at the time of reservation.

**Can my AI automatically find an available room for tomorrow and book it?**
Yes. While your agent can list existing schedules across specific dates using ISO 8601 timeframes, it can dynamically cross-reference that with your list of available spaces. Once a gap is confirmed, the agent will prompt the booking creation tool linking your user ID to instantly reserve the room.

**How will my AI know which space ID to book if I only know its name?**
You can simply mention the plain name (e.g., 'Book the Innovation Boardroom'). The agent will intelligently call the 'list_spaces' tool in the background first, match your requested string to the correct internal resource ID, and generate the final reservation seamlessly.

**Can I bulk cancel multiple reservations if an event reschedules?**
Absolutely. You can request your AI to 'list all bookings for Monday', ask it to filter down to specific ones based on timeframe or assignee, and instruct it to execute a deletion for each matching reservation sequentially.