From trip1
Use this skill when the user wants to book a hotel, search for accommodations, check hotel prices or availability, or asks about staying somewhere for specific dates. The skill guides Claude through the Trip1 MCP tools and the x402 payment flow, including the CoinGate fallback for agents without an x402-capable wallet.
How this skill is triggered — by the user, by Claude, or both
Slash command
/trip1:hotel-bookingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Landing page: <https://trip1.com/en/agents>
Landing page: https://trip1.com/en/agents
Trip1 is an MCP server that exposes roughly 3 million hotels across 200+ countries. Agents search inventory, fetch rates, and book rooms through four tools. Payment runs inline over x402 on Base (USDC), with a CoinGate fallback URL for any client that lacks an x402-capable wallet.
Activate this skill any time the user intent involves lodging:
Do not activate for flights, rental cars, restaurants, or activities. Trip1 only sells hotels.
The user must have Trip1's MCP server connected. If the four tools (search_hotels, get_hotel_details, purchase_hotel, get_order_details) are not visible in the current session, stop and tell the user to add this to their MCP client config:
{
"mcpServers": {
"trip1": {
"type": "http",
"url": "https://trip1.com/api/mcp"
}
}
}
For the agent to pay on its own without a browser redirect, an x402-capable wallet MCP also needs to be loaded. The simplest option is Coinbase Payments MCP (npx @coinbase/payments-mcp). Without it, purchase_hotel will return a CoinGate URL the human finishes in a browser.
The happy path is five tool calls in order. Do not skip or reorder.
Call search_hotels with:
check_in and check_out in YYYY-MM-DD.If the user is vague on dates ("sometime in July"), pick a reasonable default (first weekend of the month) and state the assumption explicitly. If the user is vague on destination, ask one clarifying question before searching. Do not guess the destination.
Sort by price for budget-driven asks, rating for quality-driven, or distance when the user names a landmark or neighborhood.
Present results as a short list, typically 3 to 6, with name, price per night, rating, and a one-line location hint. Do not dump the full response.
When the user picks or narrows down, call get_hotel_details for that hotel ID. This returns rooms, rates, cancellation terms, and live availability.
Show the user a compact room list with nightly rate, total, refund policy, and the rate_id you will use for booking. Flag non-refundable rates explicitly.
If the user is still choosing between multiple hotels, call get_hotel_details for each and compare. Do not call purchase_hotel until the user has picked both a hotel and a specific rate.
Before calling purchase_hotel, collect every guest field from the user. All of them are required:
+44123456789) — always ask, never default or inventMR, MRS, MS, or MISS)GB, US, LT)Do not invent values, do not reuse details from earlier in the conversation, and do not silently accept defaults. If a field is missing, ask.
Once all fields are collected, show the user a complete booking summary and get explicit confirmation before calling purchase_hotel:
Only call purchase_hotel after the user confirms with something like "yes", "confirm", or "book it." If they push back on any field, correct it and re-confirm.
Pass rate_id from step 2 and the confirmed guest details. The response is one of two shapes:
payment_url that returns HTTP 402 with a payment challenge. This is for agents with an x402-capable wallet.x402 path. Hand the payment_url to the loaded payments MCP tool. Do not ask the user to approve the transfer, and do not open a wallet UI. The payment completes inside the same request. If the payments MCP tool returns an error, surface the raw error to the user and stop. Do not retry blindly.
CoinGate path. Present the URL to the user with a short instruction to complete the payment in their browser. Do not try to pay on their behalf.
After payment, poll get_order_details with the order ID until ready is true. Backoff: 2 seconds, then 5, then 10, capped at 30. The supplier reservation reference appears in the response when the booking has cleared.
Report to the user with:
get_hotel_details returns, including currency. Prices in search results can drift from final rates.get_hotel_details verbatim. Do not paraphrase.get_hotel_details and let the user pick a new rate. Do not auto-substitute.purchase_hotel response.ready to true: after roughly a minute of polling, report the order ID to the user and tell them to check status at https://trip1.com/en/cart/<signed id> or email support.| Tool | Purpose | Key inputs |
|---|---|---|
search_hotels | Find hotels for a destination and date range | destination, check_in, check_out, guests, sort |
get_hotel_details | Rooms, rates, availability for one hotel | hotel_id |
purchase_hotel | Create reservation, return payment challenge | rate_id, guest details |
get_order_details | Poll order status | order_id |
com.trip1)npx claudepluginhub trivial-corp/agents --plugin trip1Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.