GoTable MCP by usefulapi
Read availability, reservations, guests; create, change, cancel bookings; add notes in GoTable.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWgotable_create_reservation_note에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"gotable": {
"url": "https://gotable.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://gotable.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (21)
🟢gotable_list_restaurants(page, per_page)
List the restaurants this API key can access (id, name, address, time zone, currency). Call this first: every other tool needs a restaurant_id. GoTable API: GET /api/v1/restaurants.
입력 스키마
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_restaurant(restaurant_id)
Get one restaurant by id. GoTable API: GET /api/v1/restaurants/{restaurant_id}.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_accounts(restaurant_id, page, per_page)
List the staff accounts that have access to a restaurant (id, name, e-mail). The account id is the author_id that gotable_create_reservation_note needs. GoTable API: GET /api/v1/restaurants/{restaurant_id}/accounts.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_availability(restaurant_id, from, till)
Get the real-time availability of a restaurant per date: closed flag and the time slots with the minimum and maximum party size. The range is capped at 3 months after `from`. GoTable API: GET /api/v1/restaurants/{restaurant_id}/availability.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"from": {
"description": "Start date yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"till": {
"description": "End date yyyy-mm-dd (max 3 months after from).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_offer_availability(restaurant_id, offer_id, from, till)
Get the availability per date of one offer (for example a tasting menu). GoTable API: GET /api/v1/restaurants/{restaurant_id}/offers/{offer_id}/availability.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"offer_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Offer id (from gotable_list_offers)."
},
"from": {
"description": "Start date yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"till": {
"description": "End date yyyy-mm-dd (max 3 months after from).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"restaurant_id",
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_offers(restaurant_id, page, per_page)
List the offers of a restaurant (deposit per guest, visibility, booking window, translations). GoTable API: GET /api/v1/restaurants/{restaurant_id}/offers.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_offer(restaurant_id, offer_id)
Get one offer by id. GoTable API: GET /api/v1/restaurants/{restaurant_id}/offers/{offer_id}.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"offer_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Offer id."
}
},
"required": [
"restaurant_id",
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_reservations(restaurant_id, query, page, per_page)
Search the reservations of a restaurant. `query` mixes free text with filters: fields type, offer_id, date, time, starts_at, ends_at, state, party_size, guest_name, guest_email, guest_telephone, comments, duration_in_minutes; operators <= < >= > != = == : ~ !: !~. Example: "John date>=2026-10-19 state=confirmed party_size=2". States: pending, rejected, confirmed, checked_in, checked_out, cancelled, expired, reconfirmed, skipped and others. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reservations.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"query": {
"description": "Free text and filters, see the tool description.",
"type": "string"
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_reservation(restaurant_id, reservation_id)
Get one reservation with state, guest data, tables, payment and notes. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_reservation_notes(restaurant_id, reservation_id)
List the internal notes of a reservation. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}/notes.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_guests(restaurant_id, query, page, per_page)
Search the guests of a restaurant. `query` mixes free text with filters: fields name, email, telephone, last_visit, visits, reservations; operators <= < >= > != = == : ~ !: !~. Example: "visits>=5". GoTable API: GET /api/v1/restaurants/{restaurant_id}/guests.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"query": {
"description": "Free text and filters, see the tool description.",
"type": "string"
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_guest(restaurant_id, guest_id)
Get one guest with visits, last visit, diets, allergies and tags. GoTable API: GET /api/v1/restaurants/{restaurant_id}/guests/{guest_id}.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"guest_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Guest id."
}
},
"required": [
"restaurant_id",
"guest_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_tables(restaurant_id, page, per_page)
List the tables of a restaurant (label, section, minimum and maximum party size). GoTable API: GET /api/v1/restaurants/{restaurant_id}/tables.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_combinations(restaurant_id, page, per_page)
List the table combinations of a restaurant (groups of tables that seat one larger party). GoTable API: GET /api/v1/restaurants/{restaurant_id}/combinations.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_reviews(restaurant_id, page, per_page)
List the guest reviews of a restaurant (rating, text, state). Needs the `reviews` feature in the GoTable plan; else the API returns an error. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reviews.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_create_reservation(restaurant_id, party_size, date, time, type, ...)
WRITE: create a reservation as the restaurant (skips most availability checks, so check gotable_get_availability first). Needs date and time, or type WalkIn for a guest at the door. By default GoTable e-mails and texts the guest: set skip_email / skip_sms to stop that. Not idempotent: a repeat call creates a second reservation. GoTable API: POST /api/v1/restaurants/{restaurant_id}/reservations.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"party_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Number of guests."
},
"date": {
"description": "Date yyyy-mm-dd (required unless type is WalkIn).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"time": {
"description": "Time HH:MM (required unless type is WalkIn).",
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"type": {
"description": "WalkIn = guest at the door; date and time default to now.",
"type": "string",
"enum": [
"Reservation",
"WalkIn"
]
},
"offer_id": {
"description": "Offer to book (from gotable_list_offers).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"guest_name": {
"type": "string"
},
"guest_email": {
"type": "string"
},
"guest_telephone": {
"description": "International format, e.g. +31612345678.",
"type": "string"
},
"comments": {
"description": "Guest comments, e.g. a diet.",
"type": "string"
},
"duration_in_minutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"table_ids": {
"description": "Tables to assign (from gotable_list_tables).",
"type": "array",
"items": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"table_lock": {
"description": "true = pin the tables, no auto-assignment.",
"type": "boolean"
},
"skip_email": {
"description": "true = do not send the e-mail to the guest.",
"type": "boolean"
},
"skip_sms": {
"description": "true = do not send the text message to the guest.",
"type": "boolean"
}
},
"required": [
"restaurant_id",
"party_size"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_update_reservation(restaurant_id, reservation_id, date, time, party_size, ...)
WRITE: change the details of a reservation (date, time, party size, guest data, comments, duration, tables). Send only the fields to change. GoTable API: PUT /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"party_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"guest_name": {
"type": "string"
},
"guest_email": {
"type": "string"
},
"guest_telephone": {
"type": "string"
},
"comments": {
"type": "string"
},
"duration_in_minutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"table_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"table_lock": {
"type": "boolean"
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_cancel_reservation(restaurant_id, reservation_id, skip_email, skip_sms)
WRITE: cancel a reservation as the restaurant. By default GoTable e-mails and texts the guest: set skip_email / skip_sms to stop that. GoTable API: POST /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}/cancel.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
},
"skip_email": {
"description": "true = do not send the e-mail to the guest.",
"type": "boolean"
},
"skip_sms": {
"description": "true = do not send the text message to the guest.",
"type": "boolean"
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_create_reservation_note(restaurant_id, reservation_id, content, author_id)
WRITE: add an internal note to a reservation. author_id is a staff account id (from gotable_list_accounts). Not idempotent. GoTable API: POST /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}/notes.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
},
"content": {
"type": "string",
"minLength": 1,
"description": "Note text."
},
"author_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Staff account id (from gotable_list_accounts)."
}
},
"required": [
"restaurant_id",
"reservation_id",
"content",
"author_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_create_guest(restaurant_id, name, email, telephone, subscribed)
WRITE: add a guest to the guest book of a restaurant. Not idempotent. GoTable API: POST /api/v1/restaurants/{restaurant_id}/guests.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Guest name."
},
"email": {
"type": "string"
},
"telephone": {
"type": "string"
},
"subscribed": {
"description": "true = the guest accepts marketing e-mail.",
"type": "boolean"
}
},
"required": [
"restaurant_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡gotable_update_guest(restaurant_id, guest_id, name, email, telephone, ...)
WRITE: change the name, e-mail, telephone or marketing consent of a guest. Send only the fields to change. GoTable API: PATCH /api/v1/restaurants/{restaurant_id}/guests/{guest_id}.
입력 스키마
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"guest_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Guest id."
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"telephone": {
"type": "string"
},
"subscribed": {
"type": "boolean"
}
},
"required": [
"restaurant_id",
"guest_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거