# Picktime MCP

> Picktime lets your AI agent handle complex scheduling and availability across entire organizations. You can fetch global resource data, list staff rosters, check real-time openings, and manage reservations using a simple chat conversation. It connects deep business booking logic directly into your workflow.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** appointment-booking, class-reservations, staff-management, availability-tracking, scheduling

## Description

**Picktime lets your AI agent handle complex scheduling across whole organizations, so you don't gotta manually juggle calendars and staff rosters.**

Your agent hooks into deep business booking logic, letting you manage availability and resources just by chatting with it. It’s built for places that run on appointments—everything from spas to physical therapy offices. You can pull global resource data, check real-time openings across multiple locations, and process cancellations without needing a single spreadsheet open.

### **Knowing Your Assets: Locations and Staff**

You can get structural clarity on your whole company setup immediately. If you need to know which branches exist, just ask for them using `list_locations`, which returns every configured branch ID. Need the specific address or hours for one of those spots? Use `get_location` with a single ID.

When it comes to people, your agent handles staff rosters by listing all employees through `list_staff`. You get their role, email, working hours, and whether they’re active—perfect for checking who's clocked in today. For the services offered at any location, you can call `list_services` to see every standard bookable service available, along with which staff members are assigned to perform them and what the base price is. If you need the nitty-gritty on a specific offering—like how long it takes or if there's a capacity limit set—you use `get_service_details`. It pulls all that setup information for any single service.

### **Checking Availability and Handling Bookings**

This is where the real power is. Instead of guessing, your agent finds every open time slot for a specific service on a given date using `get_availability`. This calculation doesn't just look at one staff member; it considers everyone’s schedule and existing bookings to give you accurate openings.

If you need a full picture of what's booked at a location, run `list_bookings`. You can filter this list by date, and it spits out all the names, services, times, and statuses for every appointment on record. If someone asks about one specific slot—maybe they want to verify who’s coming or how much they paid—you use `get_booking_details` to pull comprehensive records: who booked it, what service they got, when it was, and the payment status.

For group sessions—think workshops or large-scale classes—your agent handles that too. You can see all multi-attendee bookings using `list_classes`, which tells you exactly how many people fit into those spots, along with the setup details for each class type.

### **Managing Changes and Cancellations**

Need to clear up a mess? If an appointment gets canceled, your agent handles it cleanly. You call `cancel_booking`, and it does three things: it removes the booking record, sends the required cancellation notice right to the customer, and instantly frees that time slot back into availability for new reservations.

Your whole workflow runs off of these facts. It's all about getting accurate resource data (using `list_staff` or `list_locations`), checking real-time service openings using `get_availability`, pulling full booking records with `get_booking_details`, managing group sessions via `list_classes`, and cleaning up mess with `cancel_booking`. You just chat, and the agent handles the heavy lifting.

## Tools

### cancel_booking
Cancels a specific booking, notifies the customer, and makes the time slot available again for new reservations.

### get_availability
Finds all open time slots for a service on a given date, considering staff schedules and existing bookings.

### get_booking_details
Retrieves every detail about one specific booking: who it's for, what they booked, when, and the payment status.

### get_location
Gets detailed configuration (address, hours, timezone) for a single business location by its ID.

### get_service_details
Retrieves the full setup information for one service, including price, duration, and staff limits.

### list_bookings
Lists all current bookings for a location, optionally filtered by date. Returns names, services, times, and statuses.

### list_classes
Shows all multi-attendee group classes (like workshops) set up at the location, including capacity limits.

### list_locations
Lists every configured branch or business location managed by Picktime.

### list_services
Shows all standard bookable services for a specific location, detailing staff assignments and prices.

### list_staff
Lists every employee at the location, including their role, email, working hours, and active status.

## Prompt Examples

**Prompt:** 
```
Find all of our active clinic locations in the Picktime registry.
```

**Response:** 
```
Based on the MCP query, you have 3 configured locations. The primary location is 'Central Manhattan Office' with the designated ID location_12345.
```

**Prompt:** 
```
Cancel the booking record identified as BK123456.
```

**Response:** 
```
Confirmed. I executed `cancel_booking` using ID BK123456. The status is now nullified and the slot returned to the public pool.
```

**Prompt:** 
```
Can you check the availability data for 'Hair Styling' next Monday?
```

**Response:** 
```
I queried `get_availability`. There are plenty of openings next Monday for 'Hair Styling', notably 10:00 AM, 11:30 AM, and 2:00 PM.
```

## Capabilities

### Check real-time service openings
Determines available appointment time slots for a specific service on a given date, accounting for staff schedules and existing bookings.

### List all organizational assets
Retrieves details about every configured business location or individual staff member at the site.

### Retrieve full booking records
Pulls comprehensive data for any single appointment, including customer info, services booked, and payment status.

### Manage group sessions
Lists all multi-attendee bookings (like workshops or yoga classes) configured at the location.

### Process cancellations
Removes a booking record, sends a cancellation notice to the customer, and immediately frees up the time slot for new appointments.

## Use Cases

### The Receptionist needs a quick check on staff.
A client calls needing an appointment. Instead of opening the scheduling portal and clicking 'Staff' then 'Filter by Role,' the agent runs `get_availability` for that specific service. It instantly replies: 'Yes, Sarah is free at 2 PM.' The booking happens in chat.

### The Director needs a daily workload report.
At the end of the day, the agent runs `list_bookings` for all locations. It compiles names, services, and times into a bulleted summary for the director’s briefing, eliminating manual data compilation.

### The Tech Team needs to validate an integration.
Before deploying a webhook handler, the developer runs `get_location` against the target ID. This confirms all necessary operational parameters—like timezone and working hours—are correctly configured in the system.

### A client needs to change or cancel a booking.
Instead of emailing customer service, an authorized agent runs `get_booking_details` using the ID. If the cancellation is confirmed, they call `cancel_booking`, and the entire process—from verification to confirmation—is done in a single conversational thread.

## Benefits

- Check instant availability without clicking. Using `get_availability` means your agent immediately tells you if a service is open at 10:30 AM, saving minutes of manual calendar checks.
- Audit staff capacity in bulk. Running `list_staff` or `list_services` lets you instantly see who works where and what they can book, eliminating the need to check individual employee profiles.
- Control reservations with precision. You use `get_booking_details` to pull up a client's full file—payment status, notes, staff assigned—all in one go before making a change.
- Handle multi-branch complexity. The `list_locations` tool lets your agent manage bookings across all corporate sites without you having to remember which location ID to use.
- Process changes immediately. If plans shift, calling `cancel_booking` handles the entire lifecycle: removing the record, notifying the customer, and freeing up the slot.

## How It Works

The bottom line is your AI agent talks directly to Picktime's backend logic without you ever having to open the web portal.

1. Subscribe to this server on Vinkius and enter your Enterprise Picktime API Key.
2. Your AI client uses that connection to query data, such as checking staff schedules or listing locations.
3. The agent receives structured JSON output describing the requested resource details, which it then presents in a conversational format.

## Frequently Asked Questions

**How do I find out what services are offered at a location using list_services?**
You run `list_services` for the specific location ID. It returns every bookable service name, its duration, and how many staff members are assigned to it.

**Can I check if multiple locations have a certain service available? Use get_availability.**
You must run `get_availability` separately for each location ID you want to check. The tool only processes one location at a time, so loop through your desired site IDs.

**What is the difference between list_bookings and get_booking_details?**
`list_bookings` gives you a summary view of many bookings (customer name, service type). `get_booking_details` pulls up every single data point for one booking ID only.

**How do I check staff availability for a specific date? Use get_availability.**
The tool calculates availability by referencing the schedules stored in Picktime. You must pass the desired service and date parameters to `get_availability`.

**What happens after I execute `cancel_booking`?**
The time slot becomes available immediately for new bookings, and a cancellation notification goes directly to the customer. The system handles both status updates and communication automatically.

**If I use `list_locations`, do I get data for every single branch in my network?**
No; each location operates independently with its own set of services and staff. You must specify the Location ID using `get_location` to pull configuration details for a specific site.

**When I run `list_classes`, is that different from listing standard services?**
Yes, class bookings are multi-attendee sessions. The tool lists group trainings or workshops and includes the designated capacity limits for those larger reservations.

**What do I need to ensure my AI client can run `list_staff` successfully?**
You must first connect your Enterprise Picktime API Key. The key authorizes access, allowing your agent to pull staff names, roles, and real-time working hours for accurate scheduling.

**Can the AI find an available slot for a specific service next Friday?**
Yes. Upon providing the location and service ID along with the desired date, your agent invokes `get_availability`. The connector reads Picktime's master block array, isolating the open time windows seamlessly against existing rules (like business hours and buffers).

**If a customer cancels on the phone, can the AI remove their booking?**
Absolutely. Just provide the booking ID to the agent and it will utilize the `cancel_booking` function. Picktime will release the blocked slot immediately back to the customer-facing booking page.

**Can I grab all upcoming appointments for a specific staff member?**
Yes, by matching the staff member's ID from `list_staff` with the broader fetch generated by `list_bookings`. Alternatively, your agent can sort and filter the returned array natively in its reasoning stream, showing you only Dr. Silva's schedule.