# mcp MCP server

Access Japan's finest Michelin-starred restaurants. Search, check availability, and browse menus.

## Links
- Registry page: https://www.getdrio.com/mcp/com-tableall-mcp

## Install
- Endpoint: https://mcp.tableall.com/sse
- Auth: Not captured

## Setup notes
- Remote endpoint: https://mcp.tableall.com/sse

## Tools
- search_restaurants - Browse restaurants by region, cuisine, or area. Returns a directory-style list with name, location, Michelin stars, and starting price. Does not include real-time availability — for date-based searches use search_available_restaurants, and for one restaurant's openings use check_availability.

For a specific named restaurant, use this tool to obtain its restaurant_id, then call get_restaurant_details for the full profile and get_restaurant_menu for courses and pricing. The description field returned here is trimmed to ~200 characters.

Each restaurant includes name (and name_ja), michelin_stars when present, area/location, and starting_price_display (e.g., "¥81,000〜", booking fee included). Returns up to 30 restaurants per call; total and has_more indicate whether more exist, retrievable with offset. Endpoint: https://mcp.tableall.com/sse
- get_restaurant_details - Get the full profile of one specific restaurant: untrimmed description, booking_rules, booking_tips, address, operating_hours, seating, and starting price.

Use when the user names a specific restaurant and wants its details, or when you have a restaurant_id and need fields that search_restaurants does not return.

Does not return menu or courses (use get_restaurant_menu), cancellation policy (use get_cancellation_policies), or real-time availability (use check_availability).

starting_price_display is preformatted (e.g., "¥65,000〜", booking fee included). Endpoint: https://mcp.tableall.com/sse
- get_restaurant_menu - Get the menu for a specific restaurant: an array of course names and their prices.

Use when the user asks about a specific restaurant's menu, courses, or course pricing.

This tool returns course names and prices only — not dish lists, course composition, number of pieces, or ingredients. For full course details, direct the user to the restaurant page (details_url in the response). The response itself returns this course content only; do not supplement it with assumptions. Endpoint: https://mcp.tableall.com/sse
- check_availability - Check real-time availability for one specific restaurant within a date range. Returns all openings for that restaurant; it does not filter by time of day.

Use when you already know which restaurant the user wants. If the user is browsing across multiple restaurants in a region or cuisine, use search_available_restaurants instead.

Use the exact parameter names start_date, end_date, restaurant_id, num_people, daily_or_minutes, and by_menu_item. Including restaurant_id is recommended; omitting it queries all restaurants and returns a large response. If the user specifies a time preference, do not pass time parameters — receive all openings for the date range and filter the display.

Date handling: if the user gives only month/day, use the current year, or next year if that date is already past.

Response: has_availability, summary, openings[], and alternative_openings[] (openings within ±3 days when the requested range has none). Each opening includes opening_id, date, time (JST), datetime_jst, seat_type ("fixed" or "flexible"), seat counts, course_id, course_name, and course_price. The response also includes guidance for the next step under usage_guidance. Endpoint: https://mcp.tableall.com/sse
- search_available_restaurants - Search across multiple restaurants for availability within a date range. Returns restaurants that have openings, filterable by prefecture, area, genre, and party size.

Use when the user does not yet have a specific restaurant in mind and is browsing or filtering by region or cuisine. If the user already has a specific restaurant, use check_availability instead.

Date handling: if the user gives only month/day, use the current year, or next year if that date is already past. For a single date, search from 2 days before to 3 days after, unless the user asks for that exact date only.

Parameters: start_date and end_date are required (YYYY-MM-DD); prefecture, area, genre, num_people, limit, and offset are optional.

Each restaurant entry includes basic info (name, cuisine, location, michelin stars, price_range, open_time, closed_days), starting_price_display (e.g., "¥39,000〜", booking fee included), and its available openings (date, time, seat type, course info). Pagination fields (limit, offset, has_more, total_restaurants) indicate whether more results exist; default limit is 20, max 100.

If no restaurants match, create_reservation_request can submit a request for a specific restaurant the user chooses. Endpoint: https://mcp.tableall.com/sse
- get_cancellation_policies - Read-only: retrieve a restaurant's cancellation policy. This tool only reads policy data; it does not cancel or modify any reservation. Safe to call repeatedly.

Use when the user asks about the cancellation policy, refund terms, or no-show fee, or before calling create_reservation or create_reservation_request.

get_restaurant_details returns booking_rules and booking_tips, which describe when bookings open and how to book — not cancellation terms.

Returns: cancel_policies (array of { days_before, penalty_percentage, description }), policy_type, message, booking_fee_note, and important_note. Display the booking_fee_note: the booking fee is non-refundable regardless of cancellation timing. For reservation requests, the policy applies after the request is confirmed by the restaurant. Endpoint: https://mcp.tableall.com/sse
- create_reservation - Create a direct reservation for a specific available opening (opening_id required).

Use after check_availability has returned an opening and the user has chosen which opening_id to book. If check_availability returned no openings, use create_reservation_request instead.

Flow (summary — see resource tableall://flow/direct-reservation for full details):
1. Call get_cancellation_policies and explain cancellation terms (include: the booking fee is non-refundable regardless of cancellation timing).
2. Collect the user's email first; if the response returns USER_NOT_FOUND, collect full name, country, and phone, then call again.
3. Show a summary (restaurant, date/time, guests, course, email) and confirm before calling with the final args.

Seat rules: for fixed seats, party_size must equal fixed_seats; for flexible seats, party_size must be within min_seats and max_seats.

Response: store data.access_token (required by get_reservation_status). If user.is_new_user is true, display the password_reset_url notice (24-hour validity, also emailed) before the payment_url. The payment_url is valid for 30 minutes and is also emailed. Endpoint: https://mcp.tableall.com/sse
- get_reservation_status - Check the status of a reservation by session ID.

Requires the access_token that was returned in the create_reservation response.
You MUST have stored the access_token from the create response to use this tool.
Without a valid access_token, the API will return 403 Forbidden.

IMPORTANT - PRICE DISPLAY:
The "price" field already INCLUDES the "booking_fee". Do NOT add them together.
When displaying to the user, show: price (total) and booking_fee (included in price, non-refundable).
Example: "Total: ¥30,000 (includes ¥1,000 non-refundable booking fee)" Endpoint: https://mcp.tableall.com/sse
- create_reservation_request - Submit a reservation request for a selected restaurant, dates, time range, and party size. Use after check_availability or search_available_restaurants has been run and the user confirms they want to submit a request.

Use this when the user prefers dates or times other than the available openings, or when no openings were found and the user wants to request one. The user's use of the word "request" signals intent to try, not consent to skip the availability check — check availability and show the result first.

Flow (summary — see resource tableall://flow/reservation-request for full details):
1. Explain that the card is charged only if the restaurant confirms; the request can be cancelled before confirmation.
2. Call get_cancellation_policies and explain it applies after confirmation (include the non-refundable booking fee notice).
3. Confirm adults vs children count.
4. Collect the user's email first; if the response returns USER_NOT_FOUND, collect full name, country, and phone, then call again.
5. Summarize and confirm before calling with the final args.

Date handling: "any day in [month]" includes all days of that month; "any day from X to Y" includes every day in the range.

Response: store data.access_token (required by get_reservation_request_status). If user.is_new_user is true, display the password_reset_url notice (24-hour validity, also emailed) before the payment_url. The payment_url is for card registration only; a charge occurs only if the restaurant approves. Valid 30 minutes; also emailed. Endpoint: https://mcp.tableall.com/sse
- get_reservation_request_status - Check the status of a reservation request by session ID.

Requires the access_token that was returned in the create_reservation_request response.
You MUST have stored the access_token from the create response to use this tool.
Without a valid access_token, the API will return 403 Forbidden.

IMPORTANT - PRICE DISPLAY:
The "price" field already INCLUDES the "booking_fee". Do NOT add them together.
When displaying to the user, show: price (total) and booking_fee (included in price, non-refundable).
Example: "Total: ¥30,000 (includes ¥1,000 non-refundable booking fee)" Endpoint: https://mcp.tableall.com/sse

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: com.tableall
- Version: 1.0.0
- Runtime: Sse
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Sep 25, 2025
- Source: https://registry.modelcontextprotocol.io
