# Timekit MCP

> Timekit connects your AI client to a white-label booking API. It handles resource availability, time zones, and appointment workflows through natural conversation. Your agent can check slots for specific people or rooms, create new bookings, confirm tentative meetings, or reschedule existing appointments—all without you touching a dashboard.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** scheduling-api, resource-management, booking-system, availability-tracking, appointment-booking, timekit

## Description

Timekit connects your AI client straight to a white-label booking API. Your agent handles the whole scheduling mess—resource availability, time zones, appointment workflows—just by talking naturally. You don't touch a dashboard; you just chat with it.

**Resource Management:**

Your agent manages every asset on your books first. It can pull a complete list of all managed resources using `list_resources`, showing everything from people to rooms or specialized equipment. If you need to track something new, the server lets you add it via `create_resource`. You also have the option to run `list_bookings` anytime to get a full manifest of every single appointment currently scheduled.

**Checking Availability & Getting Details:**

Before anything else, your agent checks what’s open. It uses `check_availability` to find out which resources are free for specific times and time durations within a given date range. Need details on one person or room? You can run `get_resource` to pull all the metadata—like capacity or owner—for any single asset. For existing appointments, if you know the unique ID, running `get_booking` retrieves every piece of detailed information about that specific slot.

**Creating and Modifying Bookings:**

When it's time to schedule something new, your agent handles the creation process. It uses `create_booking` to set up an entirely fresh appointment record between two or more parties. If you’re just making a rough plan, it first generates a temporary request; then, when that slot works for everyone, the server finalizes it with `confirm_booking`. Conversely, if the proposed time is shot, your agent can reject the idea using `decline_booking`. You don't want to move an appointment? No problem. The system lets you automatically shift an already confirmed meeting to a new date and time slot via `reschedule_booking`.

**Cleaning Up:**

When plans fall through, your agent handles the cleanup too. It can cancel any appointment that's already been confirmed in the system using `cancel_booking`. The server manages the entire booking lifecycle—from initial check to final cancellation—all without you needing manual input into a dashboard.

## Tools

### cancel_booking
Cancels an appointment that has already been confirmed in the system.

### check_availability
Queries the server to see which resources are free for a specific date and time duration.

### confirm_booking
Changes a temporary, pending booking request into a finalized appointment slot.

### create_booking
Schedules and creates a brand new appointment record in the system.

### create_resource
Adds a new asset—like a person, room, or piece of equipment—to your managed list.

### decline_booking
Rejects a temporary booking request when the proposed slot doesn't work.

### get_booking
Pulls specific, detailed information about one individual appointment using its unique ID.

### get_resource
Retrieves all metadata for a single asset (e.g., the capacity or owner of 'Room 3').

### list_bookings
Generates a complete list of every booking currently on file.

### list_resources
Lists all managed resources (people, rooms, etc.) that the server tracks.

### reschedule_booking
Moves an existing confirmed appointment to a new date and time slot automatically.

## Prompt Examples

**Prompt:** 
```
List all resources available in my account.
```

**Response:** 
```
I've retrieved your resources. You have: 'Main Office' (Room), 'Projector A' (Equipment), 'Alex Rivera' (Person), and 'Sarah Chen' (Person). Which one would you like to check availability for?
```

**Prompt:** 
```
Find 30-minute slots for 'Alex Rivera' (ID: res_10293) for tomorrow afternoon.
```

**Response:** 
```
I've checked Alex's availability. There are 3 available 30-minute slots tomorrow afternoon: 2:00 PM, 3:30 PM, and 4:00 PM UTC. Shall I book one of these for you?
```

**Prompt:** 
```
Confirm the tentative booking #88231.
```

**Response:** 
```
Success! I've confirmed booking 88231. The resource and the customer have been notified. Your schedule is now up-to-date.
```

## Capabilities

### List All Resources
Retrieves a full list of all managed assets, including people, rooms, and equipment.

### Check Open Slots
Finds specific available time slots for one or more resources within a given date range.

### Create New Booking
Schedules and creates an entirely new appointment instance between two parties or resources.

### Manage Pending Requests
Confirms a temporary booking request to finalize the slot, or declines it if necessary.

### Move Existing Meetings
Changes the date and time of an already confirmed appointment without manual dashboard entry.

### Get Specific Details
Retrieves full metadata for a particular booking or resource ID so you know exactly what's on the books.

## Use Cases

### The Overbooked Office Manager
An office manager needs to schedule a multi-department training session. Instead of checking three different calendars and booking room capacity manually, they ask their agent: 'Book 10 people and the main theater for next Tuesday.' The agent uses `check_availability` and then executes `create_booking`, solving the whole thing instantly.

### The Late-Stage Client Change
A client needs to push their meeting back by a week. Instead of emailing an assistant, they tell their agent: 'Move my appointment with Sarah Chen next Thursday.' The agent runs `reschedule_booking` and updates all parties automatically.

### The Internal Product Test
A product team is testing a new feature that requires booking resources. They first use `list_resources` to verify the IDs of all available equipment, then they run `create_booking` multiple times using those specific IDs to simulate usage patterns.

### The Vague Request
A user asks for a meeting next week but doesn't specify time. The agent uses `check_availability` with broad parameters, returning three distinct 30-minute slots (e.g., 1 pm, 2:30 pm, 4 pm). This narrows the scope and gets the conversation moving.

## Benefits

- Stop juggling calendars. Running `check_availability` gives you real-time open slots for any number of people or rooms, eliminating guesswork before you even start a meeting.
- Don't manually enter data. You can use `create_booking` to schedule complex appointments—like three team members and one conference room—in a single chat command.
- No more forgotten follow-ups. Use `get_booking` or `list_bookings` to quickly check the status of an appointment, making sure no critical meeting slips through the cracks.
- Handling changes is easy. If plans change, running `reschedule_booking` moves the event cleanly without requiring you to open a dashboard and click six times.
- Building new capacity? Use `create_resource` first. This ensures that when your agent tries to book something, it knows exactly what assets are available in the system.

## How It Works

The bottom line is: Your agent handles all the complex scheduling calls to Timekit; you just tell it what you want in plain English.

1. Subscribe to this server and grab your Timekit API Key from the developer settings.
2. Input that API key into your AI client (Claude, Cursor, etc.).
3. Your agent can then execute booking commands—like running `check_availability`—using natural language prompts.

## Frequently Asked Questions

**How do I check availability with Timekit MCP Server using `check_availability`?**
You provide the tool with the resource IDs and the date range. For example: 'Check 60-minute slots for Alex Rivera between Monday and Wednesday.' The agent returns all available options.

**What is the difference between `create_booking` and `confirm_booking`?**
`create_booking` creates a brand new slot. If you receive a pending request (a 'tentative' booking), you must use `confirm_booking` to finalize it.

**Can I add equipment that isn't in the system? Which tool do I use?**
No, you can't. You have to run `create_resource` first. This adds the new piece of gear (or person) to your master list before any booking tool can reference it.

**What happens if I use `reschedule_booking` for a meeting that doesn't exist?**
The server will fail and tell you the specific resource ID or booking ID is invalid. You must always verify the existing booking using `get_booking` before attempting to move it.

**How do I use `list_bookings` to see all appointments across my system?**
`list_bookings` returns a comprehensive list of every booking associated with your Timekit account. This includes both confirmed and pending reservations, letting you quickly audit the full state of your schedule.

**What specific details does the `get_resource` tool provide for an existing resource?**
The `get_resource` function retrieves detailed metadata for a single resource ID. You'll get information like its type (person, room, equipment), capacity limits, and owner, which helps contextualize scheduling decisions.

**When should I use `cancel_booking` instead of `decline_booking`?**
You use `cancel_booking` for a confirmed appointment that must be removed immediately. Conversely, `decline_booking` handles tentative requests you need to reject before they are finalized.

**What information do I need to set up and authenticate the Timekit MCP Server?**
You only need your unique Timekit API Key for authentication. This key is found in your developer settings, allowing your AI client to manage all scheduling actions on your behalf.

**Can I check availability for multiple resources at once?**
Yes! Use the `check_availability` tool and provide a JSON array of Resource IDs. The agent will return time slots where all specified resources are available.

**How do I confirm a tentative booking request?**
Use the `confirm_booking` action and provide the unique Booking ID. This will transition the request from 'tentative' to 'confirmed' in your Timekit account.

**Is it possible to reschedule an existing appointment via AI?**
Absolutely. Use the `reschedule_booking` tool. Provide the Booking ID and the new start and end times to update the appointment instantly.