# TheFork MCP

> TheFork MCP Server connects your AI client to Europe's largest restaurant reservation platform. Use it to search for restaurants by location or cuisine, check real-time table availability across multiple dates, view menus and reviews, and book/cancel reservations—all through natural conversation.

## Overview
- **Category:** travel-hospitality
- **Price:** Free
- **Tags:** restaurant-reservations, dining, food-discovery, booking, european-cuisine

## Description

**This server connects your AI client directly to TheFork, Europe's major restaurant booking network.** You won't have to juggle half a dozen tabs just trying to figure out where you wanna eat. Your agent handles it all in one chat thread.

**Finding the Spot**
Your AI client starts by pinpointing the right area or vibe. It uses `search_locations` to list dining neighborhoods across Europe, letting you narrow down the general zone first. You can then use `list_cuisines` to see every type of food available—Italian, Thai, whatever—so you know what's playing in that market. To get a shortlist, you fire up `search_restaurants`, and it spits back a list of spots matching your criteria, complete with their general ratings and real-time availability status right away.

**Getting the Details Right**
Once you've got a few names, you need to know if they actually deliver. You can use `get_restaurant` to pull up the basics on any place—its address, operating hours, everything you need to show your ride-share driver. For deep research, it’s clutch: run `get_restaurant_menus` to get the current menu and see what special offers they're running right now. Before you commit, you can check out `get_restaurant_reviews`, which pulls in recent guest feedback so you know if the hype is real or if people are complaining about slow service. You also have access to general restaurant information via `get_restaurant` that covers details beyond just location.

**Checking Availability and Booking**
Before booking, you gotta check if they even have seats for your crew. You run `check_availability`, telling the agent exactly how many people there are and which date you’re looking at; it confirms if specific tables are open. If everything checks out, you use `create_reservation` to lock in a table at that spot for a set time. That's done. The booking is yours.

**Managing Your Table**
If plans crap out, or you need proof of what you booked, your agent has your back. You can run `get_reservation` anytime to pull up the full details of any existing booking, including those crucial confirmation numbers. And if you gotta bail? Just fire off `cancel_reservation`, and it permanently cancels that reservation for you.

This server gives your AI client complete control over the entire process, from initial search through final cancellation. It's everything you need in one place.

## Tools

### cancel_reservation
Permanently cancels an existing restaurant reservation.

### check_availability
Checks if a specific restaurant has open tables for the required number of people and date.

### create_reservation
Books a new table at a specified restaurant for a set time.

### get_reservation
Retrieves the full details of an existing booking, including confirmation numbers.

### get_restaurant
Gets general information about a specific restaurant, like its address or hours.

### get_restaurant_menus
Retrieves the current menu and any special offers for a restaurant.

### get_restaurant_reviews
Fetches recent guest reviews, providing insight into the dining experience.

### list_cuisines
Lists all cuisine types available in the network for filtering searches.

### search_locations
Searches and lists dining areas or neighborhoods within Europe.

### search_restaurants
Returns a list of restaurants matching criteria, along with their ratings and real-time availability.

## Prompt Examples

**Prompt:** 
```
Find Italian restaurants near the Eiffel Tower with availability for 4 people tonight.
```

**Response:** 
```
I found 3 Italian restaurants near the Eiffel Tower with tables available tonight! 'Ristorante Tosca' (9.2 rating) has a 20:00 slot, 'Il Carpaccio' (8.8 rating) has 19:30 and 21:00 available. Want me to book one?
```

**Prompt:** 
```
Show me the reviews for restaurant ID 45892.
```

**Response:** 
```
Here are the latest reviews for this restaurant. Average rating: 8.7/10. Most guests praise the 'exceptional pasta dishes and attentive service'. Recent concern: 'wait times on weekends can exceed 20 minutes'. Would you like to check availability?
```

## Capabilities

### Find Restaurants
Search for dining spots across Europe by location, cuisine type, or rating.

### Check Table Slots
Verify if a specific restaurant has open tables for a given number of people and date.

### Book Reservations
Create a confirmed reservation at a selected venue.

### Get Venue Details
Retrieve detailed information, including menus or guest reviews, for any listed restaurant.

### Manage Bookings
Check the status of an existing reservation or cancel it entirely.

## Use Cases

### Client Dinner Planning
An executive needs to book a dinner for six next Thursday near their office. They ask the agent: 'Find me an Italian restaurant for 6 people next Thursday.' The agent runs `search_restaurants` and then targets `check_availability`, presenting three options that fit both criteria, saving hours of manual searching.

### Last-Minute Trip Pivot
A traveler lands in Rome and realizes they want a highly rated seafood spot. They ask the agent to 'Find great Mediterranean places.' The agent uses `list_cuisines` to confirm the category, then runs `search_restaurants`, giving them enough options to decide instantly.

### Checking for Problems
A user needs to change a dinner date. Instead of calling the restaurant and remembering confirmation codes, they ask the agent to 'What's my reservation status?' The agent runs `get_reservation` and provides all necessary details.

### Pre-Booking Research
Before booking a client dinner, a user wants to vet the location. They use the agent to run `get_restaurant_reviews` on a potential spot, reading recent feedback about service and wait times before finalizing the `create_reservation`.

## Benefits

- Stop guessing if a table is open. Use `check_availability` to confirm real-time slots instantly, eliminating the back-and-forth email chain with restaurant managers.
- Go deeper than just booking. Access full menus and guest reviews using `get_restaurant_menus` and `get_restaurant_reviews`. You can plan your meal based on what people are actually saying.
- Manage complex group bookings effortlessly. Use `search_restaurants` to filter by multiple criteria—like 'Italian' *and* 'near the city center'—to narrow down options fast.
- Keep a clean record of everything. If you need to know when or where an old reservation was, run `get_reservation` instead of digging through emails.
- Don't forget the basics. You can always start broad by using `list_cuisines` or running `search_locations` if your initial idea is too vague.

## How It Works

The bottom line is: Your AI handles the entire dining workflow, from initial discovery to booking confirmation, without you touching another app or website.

1. You subscribe to this server and provide your TheFork Partner API key.
2. Your AI client receives your natural language request (e.g., 'Find me a Thai place for four tonight').
3. The agent executes the necessary tools (`search_restaurants`, `check_availability`) and presents you with actionable choices.

## Frequently Asked Questions

**How do I find restaurants in a specific area using search_locations?**
You use `search_locations` first to confirm the neighborhood or district name. Then, you run `search_restaurants` and include that location as a filter to get relevant results.

**Can I check if a restaurant is open using check_availability?**
Yes. You must specify the date, time, and number of people when running `check_availability`. This tool confirms real-time table inventory for you.

**What's the difference between get_restaurant and search_restaurants?**
`search_restaurants` gives you a list of options based on criteria. `get_restaurant` pulls all static details (address, general info) about one specific restaurant ID.

**How do I cancel a booking? Do I use the cancel_reservation tool?**
Yes, you use `cancel_reservation`. Remember that this action is irreversible, so always confirm your details before letting the agent run it.

**Before I use create_reservation, what do I need to know about authentication?**
You must provide a valid TheFork Partner API key in your request headers. The server cannot book anything without this credential. If the key is expired or missing, you'll receive an HTTP 401 Unauthorized error.

**If I use get_restaurant_menus and it returns empty data, does that mean the restaurant has no menu?**
No, it usually means the API hasn't indexed current menu items for that location. The tool confirms the restaurant exists but lacks specific digital menu details. Try checking back later or using search_restaurants first.

**What should I do if my search_restaurants query comes back with no results?**
The response will contain a 'No Results' payload, which is standard behavior and not an error. You need to adjust your parameters—check the date range or try broadening your location input. It just means nothing matched all criteria.

**How do I check details for a booking using get_reservation if I don't know the confirmation number?**
You must pass at least the reservation ID and the associated client email address to guarantee accuracy. If you only provide the name, the tool will fail because names aren't unique identifiers.

**Can I book a table at a specific restaurant for tonight?**
Yes! Use the `check_availability` tool to verify open time slots, then `create_reservation` to book directly. You can specify the date, time, party size, and any special requests.

**What information do I get when searching for restaurants?**
Search results include restaurant names, ratings, cuisine types, locations, and real-time availability. You can then drill into any listing for full menus, reviews, and booking options.

**Can I cancel a reservation through the AI agent?**
Yes. The `cancel_reservation` tool lets you cancel any existing booking by providing the reservation ID. Note that cancellation policies vary by restaurant.