GoTable MCP by usefulapi

Read availability, reservations, guests; create, change, cancel bookings; add notes in GoTable.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
98%
이름 품질
79%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'gotable_create_reservation_note' name length outside 3-30 rangegotable_create_reservation_note에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,706토큰 (도구 정의)
~1.7 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.68%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 21개