Trip1

com.trip1由 trip1.com 發布官方發布者v1.0.2更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行位置與生活金融

概覽

AI 產生的概覽

遠端 MCP 伺服器,讓助理搜尋飯店、比較房價並完成訂房,透過 x402 或 CoinGate 以 Base 上的 USDC 付款。

可以做什麼
  • 依目的地與日期搜尋飯店,回傳價格、圖片與訂房連結
  • 查看飯店的房型與房價,包含可否退款及取消期限
  • 開啟已預填已知旅客資料的訂房表單,表單無法使用時也可直接在對話中訂房
  • 透過 x402 錢包流程或 CoinGate 結帳頁面發起付款
  • 查詢訂單狀態並輪詢直到訂房確認
適用情境
當使用者想尋找、比較或預訂飯店房間,且願意以加密貨幣付款時使用:可透過 x402 錢包全自動支付,也可透過 CoinGate 手動完成。
執行需求
需要遠端 Streamable HTTP 端點;不需帳號、API 金鑰或 OAuth。僅支援 stdio 的用戶端需透過 mcp-remote 之類的橋接。全自動付款需要支援 x402 的錢包 MCP 或帶 EVM 私鑰的 x402 SDK;否則需用瀏覽器完成 CoinGate 結帳。
安裝前請注意
訂房會產生實際費用,以 Base 上的 USDC 支付;x402 SDK 預設單筆 1 美元上限需調高才能涵蓋房價,並應固定收款地址。purchase_hotel 會建立旅客檔案、加入購物車並發起結帳,旅客資料會傳送到伺服器。入住人數固定為 2 位成人,搜尋與訂房之間價格可能變動。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Trip1,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.trip1%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

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

README

[trip1 logo]

trip1 agent skills and MCP server

[smithery badge]

A plugin that lets agents book hotels on trip1 through the trip1 MCP server: about 3 million properties in 200+ countries, paid in USDC on Base over x402.

  • Endpoint: https://trip1.com/api/mcp (Streamable HTTP)
  • Auth: none, no account, API key or OAuth
  • Docs: https://trip1.com/agents
  • MCP Registry: com.trip1/mcp

Ships one skill, hotel-booking, which activates when the user wants to find, compare, or book a hotel.

What's in the box

  • .claude-plugin/plugin.json — Claude Code / Claude Desktop plugin manifest
  • .mcp.json — wires the trip1 remote MCP server so the plugin is self-contained
  • plugin.json and mcp.json — the same plugin in the Agent Plugins format, for Cursor and other compatible clients
  • skills/hotel-booking/SKILL.md — the skill that orchestrates the full booking flow
  • server.json — the official MCP Registry entry
  • llms-install.md — install instructions for agents such as Cline that set servers up themselves

Install

Claude Code

bash
/plugin marketplace add trivial-corp/agents/plugin install trip1@trivial-corp/agents

The MCP server and the skill come in together. Restart the session so Claude Code picks up the new MCP connection.

Claude Desktop

Two options.

As a local plugin. Download agents.zip from the latest release, then in Claude Desktop go to Customize → Personal plugins → Upload local plugin and drop the zip in.

As a connector. If you only want the MCP server without the skill, add the connector directly:

json
{  "mcpServers": {    "trip1": {      "type": "http",      "url": "https://trip1.com/api/mcp"    }  }}

Cursor, Windsurf, Cline

Add the server to the client's MCP config (~/.cursor/mcp.json for Cursor; MCP Servers → Configure → Remote Servers in Cline):

json
{  "mcpServers": {    "trip1": {      "type": "streamable-http",      "url": "https://trip1.com/api/mcp"    }  }}

Cursor also loads this repo as a plugin through plugin.json and mcp.json. Clients that only speak stdio can bridge with npx -y mcp-remote https://trip1.com/api/mcp.

VS Code

bash
code --add-mcp '{"name":"trip1","type":"http","url":"https://trip1.com/api/mcp"}'

Codex CLI, Gemini CLI, any SKILL.md-compatible agent

bash
npx skills add trivial-corp/agents

This installs the skill. Add the MCP server separately via your client's MCP config (same JSON as above).

ChatGPT

Search for trip1 in the ChatGPT apps directory. Or add it as a custom connector in Settings → Connectors → Add, pointing at:

https://trip1.com/api/mcp

The skill doesn't apply here; ChatGPT doesn't load SKILL.md files. The tool descriptions in the MCP server carry enough intent for ChatGPT to drive the flow on its own.

Cowork and other MCP-aware clients

Any client that speaks remote MCP (Streamable HTTP) can add trip1 as a connector. Paste the same mcpServers block above, or the bare URL https://trip1.com/api/mcp if the client accepts URLs directly.

Local development

bash
git clone https://github.com/trivial-corp/agentscd agentsclaude --plugin-dir .

What the skill does

The skill is instructions, not code. It tells the agent:

  • when a hotel-booking intent is present and the skill should activate
  • which trip1 MCP tools to call, in what order, with which arguments
  • how to handle the x402 payment handshake and the CoinGate fallback
  • how to report results and recover from rate drops, payment failures, and polling timeouts

Paying on the agent's behalf

For fully hands-off agent payments, load an x402-capable wallet MCP alongside trip1. The simplest option:

bash
npx @coinbase/payments-mcp

Paying from code with the x402 SDK

@x402/fetch refuses any payment above $1 by default, and a hotel booking always costs more, so raise the cap. Pin the recipient too, so the client only ever pays trip1:

ts
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";import { ExactEvmScheme } from "@x402/evm";import { privateKeyToAccount } from "viem/accounts";
const TRIP1_PAY_TO = "0x4eD818663D9040461Ee1f6E8f618Df1770dddDc1"; // see https://trip1.com/.well-known/x402.json
const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, {  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(process.env.EVM_PRIVATE_KEY)) }],  spendControls: { maxAmountPerPayment: "$2000" },  policies: [(_version, reqs) => reqs.filter((r) => r.payTo.toLowerCase() === TRIP1_PAY_TO.toLowerCase())],});
const response = await fetchWithPayment(paymentUrl); // payment_url from purchase_hotel

Then poll get_order_details until ready is true.

Without a wallet

Call purchase_hotel with payment_service: "coingate". It returns a CoinGate checkout URL that a human finishes in a browser. CoinGate takes 120+ cryptocurrencies, including USDC.

Publishing to the MCP Registry

Bump version in server.json, then run mcp-publisher publish after mcp-publisher login dns --domain trip1.com. The DNS key lives with the trip1 team.

Releasing

Bump version in .claude-plugin/plugin.json and merge to main. The release.yml workflow tags vX.Y.Z, packages agents.zip (full plugin bundle) plus one zip per skill under skills/, and publishes them to a GitHub release.

To cut a release from an existing commit instead, push a tag manually: git tag -a vX.Y.Z -m "..." && git push origin vX.Y.Z. The same workflow handles it.

Links

License

MIT

來源:README.md,提交 62867ab

工具

6

search_hotels

Search Hotels

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.

輸入參數contextsort_bycheck_in必填check_out必填sort_orderdestination必填

get_hotel_details

Get Hotel Details

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. When the user picks a rate, call start_checkout with its id next -- it opens the booking form, so do not ask for guest details in chat.

輸入參數id必填context

start_checkout

Start Checkout

Open the booking form for a rate the user picked from get_hotel_details. Shows the stay and the price, and lets the user enter the guest details and choose how to pay. On the first call, pass the user's own details you already know -- from this conversation or your memory of them -- so the form opens prefilled, and only those: never invent or guess any; the form asks for the rest and the user reviews every field before booking. If the user has not stated a title, pass title_suggestion instead: your best guess from their first name, which the form labels as a suggestion. If the user submits the form, it books the room itself (purchase_hotel) and tells you the booking reference: do not call purchase_hotel again for it. Call this again with more details to refill the form.

輸入參數emailphonetitlecontextrate_id必填last_namefirst_namenationalitypayment_servicetitle_suggestion

purchase_hotel

Purchase Hotel

Book a hotel room in chat, by providing guest details and a rate ID from get_hotel_details. Use start_checkout instead, which opens a booking form; call this only when the user says they cannot see or use that form. Creates a guest profile, adds the room to a cart, and initiates checkout. Ask the user how they want to pay before calling, and pass it as payment_service: 'x402' (USDC on Base, paid by an x402 payments tool you have) or 'coingate' (a checkout page the user pays in their browser, any crypto). If you have no x402 payments tool, use coingate. Returns a payment_url and the cart_url where the order can also be paid in a browser. The booking is confirmed once payment settles; poll get_order_details to check status.

輸入參數email必填phone必填titlecontextrate_id必填last_name必填first_name必填nationalityprice_currencypayment_service

pay_order

Pay Order

Open CoinGate's checkout page for an unpaid CoinGate booking, so the user can pay in their browser. Pass the cart_id from purchase_hotel or the booking form. Where the client supports it, this asks the client to open the page for the user (URL elicitation); otherwise, and once the page has been offered, it returns the order with its payment link. Not for x402 bookings, which your payments tool pays.

輸入參數cart_id必填context

get_order_details

Get Order Details

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.

輸入參數cart_id必填context

版本歷史

2
  1. v1.0.2最新Sep 29, 2026
  2. v1.0.0Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分