mcp

Book hotels over MCP. Pay over x402. 3M+ properties in 200+ countries, USDC on Base.

사용해야 할까요

품질 및 안전성

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

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

컨텍스트 비용

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

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

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "mcp": {
      "url": "https://trip1.com/api/mcp"
    }
  }
}

원격 엔드포인트

https://trip1.com/api/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (5)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_hotels(destination, check_in, check_out, sort_by, sort_order, ...)

Search for available hotels by destination and dates. Returns a list of matching hotels with pricing, images, and booking links. Occupancy is fixed at 2 adults in one room and cannot be set. If the user asked for a different party size, tell them these prices are for 2 adults rather than presenting them as a quote for their group. Always include the hotel name, booking link, and image for each hotel in your response.

입력 스키마

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Destination name (e.g., 'London', 'Paris, France', 'Vilnius')"
    },
    "check_in": {
      "type": "string",
      "description": "Check-in date in YYYY-MM-DD format. Must be today or later in the destination's own timezone. Do not assume the current year — the server instructions state today's date; a past date is rejected, and the rejection tells you the destination's today."
    },
    "check_out": {
      "type": "string",
      "description": "Check-out date in YYYY-MM-DD format. Must be after check_in."
    },
    "sort_by": {
      "type": "string",
      "description": "Sort results by: price, rating, distance, or relevance (default)",
      "enum": [
        "relevance",
        "price",
        "rating",
        "distance"
      ]
    },
    "sort_order": {
      "type": "string",
      "description": "Sort order: asc (default) or desc",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "context": {
      "type": "string",
      "maxLength": 200,
      "description": "Why are you calling this tool? Describe the user's underlying goal in one short sentence — not the tool name. Never include names, emails, phones, or prices. Always pass this. Used for analytics only; never shown to the user."
    }
  },
  "required": [
    "destination",
    "check_in",
    "check_out"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "total_results": {
      "type": "integer"
    },
    "hotels": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Hotel id to pass to get_hotel_details"
          },
          "name": {
            "type": "string"
          },
          "star_rating": {
            "type": "integer"
          },
          "image_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": "number",
            "description": "Cheapest total stay price for 2 adults"
          },
          "currency": {
            "type": "string"
          },
          "booking_link": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "star_rating",
          "image_url",
          "price",
          "currency",
          "booking_link"
        ]
      }
    }
  },
  "required": [
    "total_results",
    "hotels"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_hotel_details(id, context)

Get rooms and rates for a hotel. Pass the hotel id from search_hotels results. Returns rate IDs needed for purchase_hotel. Each rate states its refundability and, when refundable, the cancellation deadline — quote these rather than inferring refund terms. When prices_changed is true, the price search_hotels quoted for this hotel is no longer the one on offer — tell the user prices changed rather than presenting these rates as the same quote.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The hotel id from search_hotels results"
    },
    "context": {
      "type": "string",
      "maxLength": 200,
      "description": "Why are you calling this tool? Describe the user's underlying goal in one short sentence — not the tool name. Never include names, emails, phones, or prices. Always pass this. Used for analytics only; never shown to the user."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "star_rating": {
      "type": "integer"
    },
    "address": {
      "type": [
        "string",
        "null"
      ]
    },
    "check_in": {
      "type": "string",
      "description": "Earliest check-in time, HH:MM"
    },
    "check_out": {
      "type": "string",
      "description": "Latest check-out time, HH:MM"
    },
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "rates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Rate id to pass to purchase_hotel"
                },
                "board_type": {
                  "type": "string"
                },
                "price": {
                  "type": "number"
                },
                "currency": {
                  "type": "string"
                },
                "refundability": {
                  "type": "string",
                  "enum": [
                    "fully_refundable",
                    "partially_refundable",
                    "non_refundable"
                  ]
                },
                "cancellation_deadline": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Free cancellation until this time for fully_refundable rates, partial refund until it for partially_refundable; null for non_refundable"
                }
              },
              "required": [
                "id",
                "board_type",
                "price",
                "currency",
                "refundability",
                "cancellation_deadline"
              ]
            }
          }
        },
        "required": [
          "name",
          "rates"
        ]
      }
    },
    "prices_changed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "true when these rates come from a different provider than the search_hotels quote; null when the search recorded no winner"
    }
  },
  "required": [
    "name",
    "star_rating",
    "address",
    "check_in",
    "check_out",
    "rooms",
    "prices_changed"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ask_about_hotel(id, question, context)

Answer a yes-or-no question about a hotel from what its guests said, such as "is it quiet at night?" or "is the breakfast good?". Ask one thing per call, and turn an open question into a yes-or-no one ("what is the breakfast like?" becomes "is the breakfast good?"). Pass the hotel id from search_hotels results. Returns how many guest review summaries say yes, no or mixed, with a few of them. Report it as what guests found, with the counts. When enough_evidence is false, say few guests mentioned it rather than drawing a conclusion. It knows only what guests reported, not the hotel's facilities or policies.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The hotel id from search_hotels results"
    },
    "question": {
      "type": "string",
      "maxLength": 200,
      "pattern": "\\S",
      "description": "One yes-or-no question about the hotel, such as \"is it quiet at night?\""
    },
    "context": {
      "type": "string",
      "maxLength": 200,
      "description": "Why are you calling this tool? Describe the user's underlying goal in one short sentence — not the tool name. Never include names, emails, phones, or prices. Always pass this. Used for analytics only; never shown to the user."
    }
  },
  "required": [
    "id",
    "question"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "question": {
      "type": "string"
    },
    "summaries_read": {
      "type": "integer",
      "description": "Guest review summaries read to answer"
    },
    "yes": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 5
        }
      },
      "required": [
        "count",
        "sentiments"
      ]
    },
    "no": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 5
        }
      },
      "required": [
        "count",
        "sentiments"
      ]
    },
    "mixed": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 5
        }
      },
      "required": [
        "count",
        "sentiments"
      ]
    },
    "enough_evidence": {
      "type": "boolean",
      "description": "false when too few guests mentioned it to draw a conclusion"
    }
  },
  "required": [
    "name",
    "question",
    "summaries_read",
    "yes",
    "no",
    "mixed",
    "enough_evidence"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴purchase_hotel(rate_id, first_name, last_name, email, phone, ...)

Book a hotel room by providing guest details and a rate ID from get_hotel_details. Creates a guest profile, adds the room to a cart, and initiates checkout. Returns a payment_url and an x402 payment challenge by default (USDC on Base). Set payment_service to 'coingate' to return a browser-based crypto payment URL instead. The booking is confirmed once payment settles; poll get_order_details to check status.

입력 스키마

{
  "type": "object",
  "properties": {
    "rate_id": {
      "type": "string",
      "description": "Signed rate ID from get_hotel_details response"
    },
    "first_name": {
      "type": "string",
      "description": "Guest's first name"
    },
    "last_name": {
      "type": "string",
      "description": "Guest's last name"
    },
    "email": {
      "type": "string",
      "description": "Guest's email address"
    },
    "phone": {
      "type": "string",
      "description": "Guest's phone number (e.g., +44123456789)"
    },
    "nationality": {
      "type": "string",
      "description": "Guest's nationality as ISO 3166-1 alpha-2 code (default: GB)"
    },
    "title": {
      "type": "string",
      "description": "Guest's title: MR, MRS, MS, or MISS (default: MR)",
      "enum": [
        "MR",
        "MRS",
        "MS",
        "MISS"
      ]
    },
    "price_currency": {
      "type": "string",
      "description": "Payment currency (default: USD for x402, EUR for coingate). Supported: EUR, USD, GBP, PLN, CZK, HUF, SEK, NOK, DKK"
    },
    "payment_service": {
      "type": "string",
      "description": "Payment method: x402 (USDC on Base, default) or coingate (browser-based crypto)",
      "enum": [
        "x402",
        "coingate"
      ]
    },
    "context": {
      "type": "string",
      "maxLength": 200,
      "description": "Why are you calling this tool? Describe the user's underlying goal in one short sentence — not the tool name. Never include names, emails, phones, or prices. Always pass this. Used for analytics only; never shown to the user."
    }
  },
  "required": [
    "rate_id",
    "first_name",
    "last_name",
    "email",
    "phone"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "cart_id": {
      "type": "string",
      "description": "Pass to get_order_details to poll the booking"
    },
    "booking_reference": {
      "type": [
        "string",
        "null"
      ]
    },
    "payment_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "message": {
      "type": "string",
      "description": "How to complete payment for the chosen payment_service"
    }
  },
  "required": [
    "cart_id",
    "booking_reference",
    "payment_url",
    "message"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_order_details(cart_id, context)

Get the current state of an order. Returns payment status, booking state, and item details. Poll until ready is true to confirm the booking is complete.

입력 스키마

{
  "type": "object",
  "properties": {
    "cart_id": {
      "type": "string",
      "description": "The cart_id from purchase_hotel response"
    },
    "context": {
      "type": "string",
      "maxLength": 200,
      "description": "Why are you calling this tool? Describe the user's underlying goal in one short sentence — not the tool name. Never include names, emails, phones, or prices. Always pass this. Used for analytics only; never shown to the user."
    }
  },
  "required": [
    "cart_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "ready": {
      "type": "boolean",
      "description": "true once payment settled and the booking is purchased — stop polling"
    },
    "cart_url": {
      "type": "string"
    },
    "payment": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "state": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        },
        "transaction_hash": {
          "type": "string"
        }
      },
      "required": [
        "state",
        "service",
        "amount"
      ]
    },
    "booking": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "state": {
          "type": "string"
        },
        "booking_reference": {
          "type": [
            "string",
            "null"
          ]
        },
        "contact": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "first_name": {
              "type": "string"
            },
            "last_name": {
              "type": "string"
            },
            "email": {
              "type": "string"
            }
          },
          "required": [
            "first_name",
            "last_name",
            "email"
          ]
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "state": {
                "type": "string"
              },
              "hotel_name": {
                "type": "string"
              },
              "room_name": {
                "type": "string"
              },
              "price": {
                "type": "number"
              },
              "currency": {
                "type": "string"
              },
              "provider_reference": {
                "type": "string"
              }
            },
            "required": [
              "state",
              "price"
            ]
          }
        }
      },
      "required": [
        "state",
        "booking_reference",
        "contact",
        "items"
      ]
    }
  },
  "required": [
    "ready",
    "cart_url",
    "payment",
    "booking"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

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