# com.pricetik/mcp-server (remote · mcp.pricetik.com)

Travel & commerce intelligence for AI agents: search, book & price-track hotels, events, retail.

- Trust score: 64/100 (medium)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.pricetik.com`: 64/100 (this document), [markdown](https://verifymcp.io/servers/com-pricetik-mcp-server/mcp.md), [page](https://verifymcp.io/servers/com-pricetik-mcp-server/mcp)

## Channel facts

- Endpoint: `https://mcp.pricetik.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.33.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 11/100
  - TLS not yet verified: we couldn't open a connection to check the certificate.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS not yet verified: we couldn't read the response headers to check for it.
  - DNSSEC not yet verified: we couldn't validate it against a resolver.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but we couldn't connect to verify it.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 4 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add --transport http com-pricetik-mcp-server https://mcp.pricetik.com/mcp
```

### Codex

```toml
[mcp_servers.com-pricetik-mcp-server]
url = "https://mcp.pricetik.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-pricetik-mcp-server": {
      "type": "remote",
      "url": "https://mcp.pricetik.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-pricetik-mcp-server --url https://mcp.pricetik.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-pricetik-mcp-server:
    url: "https://mcp.pricetik.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-pricetik-mcp-server": {
      "type": "http",
      "url": "https://mcp.pricetik.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-01 (score 64, 0)

- [security regression] Endpoint reachability: reachable → unreachable

### 2026-07-31 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 63, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 62)

First indexed and scored.

## MCP tools (27)

### `pricetik_search` (~378 tokens)

Search

Discovery search across PriceTik travel surfaces (hotels/events) — see the `surface` param for what each value returns. For a SPECIFIC intent prefer the dedicated tool (`pricetik_hotel_search`, `pricetik_activity_search`) for richer, date-accurate results in their own widget; use `pricetik_search` when exploratory or the surface is unknown. For a multi-surface trip ("a hotel AND a show"), do NOT use `surface=all` to commingle — fire parallel dedicated calls or use `pricetik_trip_plan` (includeTickets=true for a ticketed show) instead. To compare multiple candidate destinations, fire one `pricetik_hotel_search` per destination in parallel with the same dates/guests and summarize the results side by side. The events surface also returns a separate labeled "Event tickets" section when live-event tickets match (city, eventDate, a pricetik_ticket_details drill-in); call pricetik_ticket_search directly for ticket-specific city/date filtering. Each result carries a `drillDownTool` for the next call. For "best deals right now" with nothing specific in mind use pricetik_trending_deals.

Input parameters:

- `limit` (number): Max results to return (tier-limited)
- `maxPrice` (number): Maximum price filter
- `q` (string, required): Search query text
- `surface` (string): Which surface(s) to search. `hotels` = hotel matches for the resolved destination + PriceTik UUIDs; `events` = bookable activities (plus a labeled live-event-ticket section) for the matched destinati…

### `pricetik_status` (~134 tokens)

Status

Check Intel API health and feature flag state. Use before making calls to verify the API is available. Returns current status, resolved tier, and active feature flags. For an authenticated caller it also returns an `account` block — `tokenBalance` and `tokensInCooldown`. The block is omitted for anonymous callers. Pass `surface` for a per-vertical health view instead (cache freshness, rate-history coverage, refresh-worker status for that surface).

Input parameters:

- `surface` (string): Optional per-vertical health view — hotels, events (activities/tickets), or transfers. Omit for the platform-wide status + feature flags.

### `pricetik_hotel_search` (~642 tokens)

Hotel Search

Search hotels by DESTINATION (city, region, or landmark) + dates + guest count — `destination` is geographic, NOT a hotel name. For a SPECIFIC named hotel ("the Wynn"), resolve it first with pricetik_destinations (returns a providerPropertyId) and pass that to pricetik_hotel_get_booking_url / _details. Returns properties with the lowest available nightly rate cached on PriceTik; filter by lifestyle segment, hotel chain, accommodation type, and resort-fee/breakfast/pet flags (see params). `destinationResolved: false` means the destination matched no known place — ask the user to confirm it; never retry with a guessed city. Use the returned providerPropertyId with pricetik_hotel_price_check for live rates. Direct REST callers can append `?stream=ndjson` for incremental per-property frames. Hotels only; for a single-call hotel + activity stitch use pricetik_trip_plan instead.

Input parameters:

- `accommodationType` (string): Filter by accommodation type. Use ALL (default behavior when omitted) to disable the filter.
- `chainCode` (string): Filter by hotel chain affiliation code (e.g. MARR for Marriott, HYAT for Hyatt). Uppercase alphanumeric, 2-20 characters.
- `checkIn` (string, required): Check-in date (YYYY-MM-DD)
- `checkOut` (string, required): Check-out date (YYYY-MM-DD)
- `destination` (string, required): City, region, or landmark name
- `excludeChainCodes` (array): Inverse of chainCode — exclude properties affiliated with any of the listed chains (e.g. ["WYN","MGM"]).
- `excludeResortFees` (boolean): Drop properties whose cached paid amenities include a resort fee. SQL-level filter against `hotel_property_content.paid_amenities` — not a heuristic.
- `freeBreakfast` (boolean): Show only properties tagged with a breakfast amenity.
- `guests` (number): Number of guests (default: 2)
- `limit` (number): Max results (default: 10, max: 50)
- `maxPrice` (number): Maximum nightly rate filter
- `minNightlyRate` (number): Floor on the lowest nightly rate. Pair with maxPrice for a "between $150 and $250" band.
- `nearPoiLat` (number): Latitude of a point of interest. Pair with nearPoiLng (and optional nearPoiRadiusKm) to override the destination centroid.
- `nearPoiLng` (number): Longitude of a point of interest. Required alongside nearPoiLat.
- `nearPoiRadiusKm` (number): Radius around the POI in km (default 5, max 50).
- `petFriendly` (boolean): Show only properties tagged as pet-friendly.
- `rooms` (number): Number of rooms (default: 1)
- `segments` (array): Filter by lifestyle segment codes (e.g. BEACH, BUSINESS, FAMILY, ROMANCE, ECO, GOLF). Properties match when any of their tagged segments overlaps the request.
- `starRating` (number): Minimum star rating (1-5)

### `pricetik_hotel_price_check` (~245 tokens)

Hotel Price Check

Check current rates across all hotel providers for a specific property and date range. Returns per-provider pricing with availability status. Pass EITHER propertyId (PriceTik UUID) OR providerPropertyId (the handle from a hotel search or destination lookup) — exactly one — so you can price a property straight off a search result without a UUID round-trip. This is cache-first and never calls the provider on read, so for a valid property with no warmed rates it returns `dataAvailable:false` with a `note` + `nextStep` (not an error) — follow the nextStep to pricetik_hotel_get_booking_url's stay-based form, which resolves a fresh live rate, or retry shortly.

Input parameters:

- `checkIn` (string, required): Check-in date (YYYY-MM-DD)
- `checkOut` (string, required): Check-out date (YYYY-MM-DD)
- `propertyId` (string): PriceTik hotel property UUID. Pass exactly one of propertyId / providerPropertyId.
- `providerPropertyId` (string): Provider-side property handle from a hotel search or destination lookup, resolved to the UUID server-side. Pass exactly one of propertyId / providerPropertyId.

### `pricetik_hotel_details` (~246 tokens)

Hotel Details

Get full property content for a PriceTik hotel — name, description, star rating, amenities, paid extras, nearby points of interest, address, contact, segments, and gallery imagery. Look up by PriceTik UUID (propertyId) or providerPropertyId returned from a hotel search; exactly one is required. Use the optional include array (rooms, issues, voucherFacilities, fullDescription) to opt into expanded sections — Pro tier unlocks rooms and issues, Scale tier and above unlock voucherFacilities and fullDescription. Open tier responses cap amenities at 8, points of interest at 3, and the description at 240 characters.

Input parameters:

- `include` (array): Opt-in expansion sections. rooms and issues require Pro tier; voucherFacilities and fullDescription require Scale tier or above. Fields above the caller tier are dropped from the response.
- `language` (string): ISO 639-1 language code for resolving segment and category labels (default: en).
- `propertyId` (string): PriceTik hotel property ID (UUID)
- `providerPropertyId` (string): Provider-side property identifier returned by a hotel search. Pass exactly one of propertyId or providerPropertyId.

### `pricetik_hotel_get_booking_url` (~457 tokens)

Hotel Get Booking Url

Generate a one-click signed PriceTik checkout URL for a hotel stay. Stay-based form (preferred for agents): pass providerPropertyId + checkIn/checkOut + guests/rooms (+ optional roomCode) and the server resolves the best live rate itself. Or pass a rateKey from pricetik_hotel_price_check directly; it auto-refreshes near expiry or when rateType is "RECHECK". URLs are pricetik.com/go/ affiliate redirects — pass to the user's browser unchanged, never fetch server-side. On 410 RateKeyExpired, re-call pricetik_hotel_price_check for a fresh rateKey. On 422 PackagingDenied, the rate is package-only and can't be booked hotel-only. currentBest surfaces nightlyRate, totalStayCost, currency, paymentType, rateType, freeCancellation only — no margin fields. When a stored loyalty program matches the property's chain, the response carries loyaltyApplied ({ program, memberId }) and the URL is member-stamped — tell the user which program linked.

Input parameters:

- `checkIn` (string, required): Stay window start (YYYY-MM-DD)
- `checkOut` (string, required): Stay window end (YYYY-MM-DD)
- `children` (number): Optional number of children sharing the room (0-8). Defaults to 0.
- `childrenAges` (array): Required when children > 0; length must equal children. Each age in [0, 17].
- `guests` (number, required): Number of guests (1-10)
- `holderEmail` (string): Optional contact email for voucher delivery.
- `providerPropertyId` (string, required): Provider-side hotel property identifier returned by a hotel search (not the PriceTik UUID).
- `rateKey` (string): OPTIONAL rate handle returned by a prior pricetik_hotel_price_check call. Omit it to use the stay-based form: the server resolves the best live rate for the stay itself (matching roomCode when given).
- `roomCode` (string): Optional Hotelbeds room-type code (from pricetik_room_types) for the stay-based form — resolves to that room's cheapest live rate. Ignored when rateKey is supplied.
- `rooms` (number, required): Number of rooms (1-5)

### `pricetik_activity_search` (~269 tokens)

Activity Search

Search bookable tours, attractions, and excursions by destination + dates via Hotelbeds Activities. Returns activities with price-from in the requested display currency (USD by default), plus the source EUR price for transparency. Use a 3-letter Hotelbeds destination code (e.g. PMI, BCN, NYC, LON). Free at every tier — no API key required.

Input parameters:

- `adults` (number): Number of adult guests (1–10). Default 2.
- `children` (number): Number of child guests aged 3–12 (0–10). Default 0.
- `destination` (string, required): 3-letter Hotelbeds destination code (e.g. PMI, BCN, NYC).
- `from` (string, required): Start date, ISO yyyy-mm-dd.
- `language` (string): ISO 639-1 language code for descriptions. Default `en`.
- `pageNumber` (number): 1-based page index. Default 1.
- `pageSize` (number): Results per page (1–50). Default 25.
- `targetCurrency` (string): ISO 4217 display currency. Default USD. Auto-converts EUR quotes from Hotelbeds.
- `to` (string, required): End date, ISO yyyy-mm-dd. Same as `from` for single-day activities.

### `pricetik_ticket_search` (~314 tokens)

Ticket Search

Search LIVE-EVENT TICKETS — concerts, theater, sports, comedy — by name, type, city, and date window (to attend a specific event). DISTINCT from pricetik_activity_search (tours/attractions) and pricetik_search (broad discovery), neither of which return event tickets on their own. Each result carries venue, city, date, a from-price, and a pricetik.com/go/ checkout link the user opens on the ticket seller — affiliate inventory, no auto-purchase or on-site checkout. Recurring dates of the same event collapse into one result with a `moreDates` count; call pricetik_ticket_details for the others. To bundle tickets WITH a hotel in one call, use pricetik_trip_plan with includeTickets=true instead.

Input parameters:

- `city` (string): Filter to events in a city (case-insensitive substring match, e.g. "Las Vegas").
- `dateFrom` (string): Earliest event date, ISO YYYY-MM-DD. Pair with dateTo to constrain to trip dates.
- `dateTo` (string): Latest event date, ISO YYYY-MM-DD.
- `eventType` (string): Narrow to a top-level event type.
- `limit` (number): Max events to return (1–25). Default 10.
- `maxPrice` (number): Maximum "from" price in USD.
- `q` (string): Free-text match on the event, performer, or team name (e.g. "Yankees", "Hamilton").

### `pricetik_ticket_details` (~118 tokens)

Ticket Details

Full detail for one LIVE-EVENT TICKET listing (by `id` or slug from pricetik_ticket_search): venue, date, performers/teams, the from-price, a pricetik.com/go/ checkout link, and OTHER upcoming dates for the same event so you can offer alternatives. Affiliate inventory — surface the checkout link to the user unchanged; PriceTik never auto-purchases. Companion to pricetik_ticket_search.

Input parameters:

- `id` (string, required): The event's PriceTik id (UUID) or slug, from pricetik_ticket_search.

### `pricetik_activity_details` (~208 tokens)

Activity Details

Full content for one activity — description, highlights, gallery (XL images), meeting point, redemption type, and bookable rates with rateKeys. Hand the activity code from `pricetik_activity_search` to this tool to get everything needed to compare modalities and surface a checkout link via `pricetik_activity_get_booking_url`. Free at every tier.

Input parameters:

- `activityCode` (string, required): Hotelbeds activity code returned by `pricetik_activity_search` (e.g. E-E10-A1GMNO0125).
- `adults` (number): Number of adult guests. Default 2.
- `children` (number): Number of child guests. Default 0.
- `from` (string, required): Start date, ISO yyyy-mm-dd.
- `language` (string): ISO 639-1 language code. Default `en`.
- `targetCurrency` (string): ISO 4217 display currency. Default USD.
- `to` (string, required): End date, ISO yyyy-mm-dd.

### `pricetik_activity_get_booking_url` (~179 tokens)

Activity Get Booking Url

Return a pricetik.com/tickets/... checkout URL pre-filled with the trip parameters. Verifies a bookable rate exists for the requested dates before handing the URL back. The user — not the agent — completes the booking on the URL (matches the hotel certification boundary). Free at every tier. Pass an `Idempotency-Key` header on retries to avoid duplicate redirects (24-hour cache window).

Input parameters:

- `activityCode` (string, required): Hotelbeds activity code.
- `adults` (number): Number of adult guests. Default 2.
- `children` (number): Number of child guests. Default 0.
- `from` (string, required): Start date, ISO yyyy-mm-dd.
- `targetCurrency` (string): ISO 4217 display currency. Default USD.
- `to` (string, required): End date, ISO yyyy-mm-dd.

### `pricetik_trip_plan` (~634 tokens)

Trip Plan

Single-call orchestrated trip planner — stitches top hotels + recommended activities + estimated spend into one response (skips the manual "search hotels → search activities → stitch" fan-out). Pass destination + dates (optional budget, interests, star rating, no-resort-fees). See the `includeTickets`, `groupByDay`, and `includeTransfer` params for optional event-ticket, daily-itinerary, and ground-transfer attachments. Free at every tier; stricter rate limit than single-surface tools (10/min) since it fans out parallel searches. Direct REST callers can append ?stream=ndjson for incremental frames. Use this for a single-call hotel + activity (+ ticket) stitch; for hotels only use pricetik_hotel_search, for tickets only use pricetik_ticket_search.

Input parameters:

- `activitiesPerDay` (number): Cap activities per day (0–5). Default 2.
- `activityDestinationCode` (string): 3-letter destination code for activities (e.g. LAS, NYC). Resolved from the destination string when omitted.
- `adults` (number): Adult guests (1–10). Default 2.
- `budgetUsd` (number): Total trip budget in USD (hotel + activities). Split ~70/30 hotel/activities by default.
- `checkIn` (string, required): Check-in date (YYYY-MM-DD).
- `checkOut` (string, required): Check-out date (YYYY-MM-DD).
- `children` (number): Child guests (0–10). Default 0.
- `destination` (string, required): Free-text destination — a city name or "lat,lng" coordinates.
- `groupByDay` (boolean): When true, include a dailyItinerary array (rest-day placeholders + 4h+ conflict avoidance). Default false.
- `hotelCount` (number): Hotel results to return (1–5). Default 3.
- `includeTickets` (boolean): When true, bundle live-event TICKETS (concerts, theater, sports) matched to the destination and stay window into an eventTickets[] block. Affiliate inventory — checkout links open on the ticket selle…
- `includeTransfer` (object): Optional ground-transfer attachment. An uncovered or same-type terminal route (IATA→IATA, PORT→PORT, STATION→STATION) yields a non-fatal transferUnavailable note instead.
- `interests` (array): Themes to bias activity picks: "food", "nature", "nightlife", etc.
- `noResortFees` (boolean): Exclude hotels with mandatory resort fees (SQL-backed filter).
- `rooms` (number): Rooms (1–5). Default 1.
- `segments` (array): Lifestyle segments to bias hotel picks.
- `starRating` (number): Hotel star-rating floor (1–5).
- `ticketQuery` (string): Optional free-text bias for the bundled tickets (performer, team, or show — e.g. "Cirque du Soleil"). Only meaningful with includeTickets=true; when omitted, tickets are matched from the destination.

### `pricetik_destinations` (~200 tokens)

Destinations

Resolve free-text into the canonical shape other PriceTik tools need. Two cases: (1) a DESTINATION ("Las Vegas", "Mallorca") → hotel-search-friendly text + the Hotelbeds activity destination code (for pricetik_activity_search) + country + subtitle (kind:"destination"); (2) a SPECIFIC NAMED HOTEL ("the Wynn Las Vegas") → kind:"hotel" with a providerPropertyId, passable straight to pricetik_hotel_get_booking_url / _details (no UUID round-trip) — this is how you turn a hotel NAME into a bookable handle, since pricetik_hotel_search only accepts a city/landmark. Call this first so you never have to ask the user for a code. Cache-backed, no API key required.

Input parameters:

- `limit` (number): Max suggestions to return (1–15, default 5).
- `q` (string, required): Free-text destination (min 2 chars).

### `pricetik_my_trips` (~209 tokens)

My Trips

List the authenticated user's trips — bookings grouped by destination + overlapping date window. Each trip carries the hotel + all activities, total spend, days-until-departure countdown, and per-member manage URLs. Status filter: 'upcoming' | 'past' | 'all' (default). Requires a bearer API key minted from the dashboard; Open-tier requests get 401. SCOPE: reflects PriceTik order-book fills and agent-assisted direct bookings only — trips the user finished by clicking a pricetik.com/go/ checkout handoff are NOT yet tracked here. An empty result is therefore normal for handoff bookings, not an error; the response carries a `note` field explaining where those bookings live (https://pricetik.com/my-account/bookings) — relay it instead of implying the user has no trips.

Input parameters:

- `limit` (number): Max trips to return (1–25, default 10).
- `status` (string): Trip status filter (default 'all').

### `pricetik_room_types` (~338 tokens)

Room Types

Filtered, ranked room catalog for a property. Pass checkIn/checkOut to get LIVE per-room nightly rates for the stay (rooms with no live availability are dropped; cached-rate fallback when the live look fails). Filter by bedType (KING/QUEEN/DOUBLE/TWIN/SOFA), suite, kitchenette, accessible, minAdults.

Input parameters:

- `accessible` (boolean): When true, only accessible rooms.
- `bedType` (array): Filter rooms by bed-type tokens. Best-effort match against name/description.
- `checkIn` (string): Optional check-in date for rate join (YYYY-MM-DD).
- `checkOut` (string): Optional check-out date for rate join (YYYY-MM-DD).
- `guests` (number): Optional guest count (1–30) — carried into each room’s bookingUrl so the checkout page keeps the party size.
- `kitchenette` (boolean): When true, only rooms with kitchenette.
- `limit` (number): Max rooms to return (1–50, default 15).
- `minAdults` (number): Required adult capacity (1–10).
- `propertyId` (string): PriceTik hotel property UUID. Pass exactly one of propertyId / providerPropertyId.
- `providerPropertyId` (string): Provider-side property handle from a hotel search or destination lookup, resolved to the UUID server-side. Pass exactly one of propertyId / providerPropertyId.
- `rooms` (number): Optional room count (1–8) — carried into each room’s bookingUrl so the checkout page keeps the party size.
- `suite` (boolean): When true, only suite rooms.

### `pricetik_resolve_activity` (~154 tokens)

Resolve Activity

Resolve a free-text activity/event NAME ("the Sphere show", "Grand Canyon helicopter tour") into a Hotelbeds activityCode. Returns ranked candidates {activityCode, name, destinationCode, fromPrice}; hand the activityCode to pricetik_activity_details (rates + rateKeys) or pricetik_activity_search. Optionally scope with destinationCode. Coverage is lazy — a name never surfaced via search may miss until first searched. Free at every tier, no API key required.

Input parameters:

- `destinationCode` (string): Optional Hotelbeds destination code to scope the match.
- `limit` (number): Max candidates to return (1–25, default 10).
- `q` (string, required): Free-text activity or event name.

### `pricetik_trending_deals` (~248 tokens)

Trending Deals

Today's best travel deals ranked 0-100, across every vertical, with nothing specific in mind ("what are the best deals right now?"). Pass `surface` explicitly: hotels (biggest 7-day nightly-rate drops), events (activity rate drops), tickets (live-event tickets below their 30-day median, with a reasons[] breakdown), or all (labeled per-surface sections: hotels, things to do, event tickets). Rows carry a drillDownTool for the next call (hotel_details / activity_details / ticket_details) and a dealScore. Optional minDealScore floor. URLs are pricetik.com/go/ affiliate redirects — pass to the user's browser unchanged, never fetch server-side. No API key required. For a specific query use pricetik_search instead.

Input parameters:

- `limit` (number): Max deals to return (1–25, default 10)
- `minDealScore` (number): Minimum 0–100 deal score (surfaces are unfiltered unless provided)
- `surface` (string): Which inventory to rank. "all" returns labeled per-surface sections. Pass it explicitly — the former `shopping` default retired with the vertical.

### `pricetik_itinerary_export` (~208 tokens)

Itinerary Export

Export the authenticated user's bookings as an RFC-5545 .ics calendar string plus a structured events array, ready to drop onto a calendar app. Upcoming-only by default; pass includePast=true for the full history. The capstone to pricetik_trip_plan / pricetik_my_trips. Requires a bearer API key; Open-tier requests get 401. Pass tripSessionId to export a group trip session's PROPOSED plan before anything is booked — share the .ics with the whole group.

Input parameters:

- `includePast` (boolean): Include past bookings too (default false)
- `limit` (number): Max events (1–100, default 50)
- `tripSessionId` (string): Optional group trip session UUID — export the PROPOSED plan (the session's candidate options; finalized sessions export only the winning options) instead of bookings. Caller must be a session member…

### `pricetik_group_trip_create` (~283 tokens)

Group Trip Create

Start a shared GROUP trip-planning session that friends join by share code — the multi-user counterpart to pricetik_trip_plan. Pass destination (plus optional checkIn/checkOut/title). Returns the session, a shareCode, and a shareUrl (pricetik.com/trips/<code>) — give BOTH to the user so companions can join from their own agent (pricetik_group_trip_join) or vote on the web page without one. Choreography: create → search hotels/activities/tickets as usual → pricetik_group_trip_add_option for the strongest candidates → members vote → organizer finalizes. The creator becomes the session organizer. Requires an authenticated API key; pass an Idempotency-Key header to make retries safe. Sessions are coordinate-only — booking stays per-traveler via the booking-url tools; PriceTik never books on anyone's behalf.

Input parameters:

- `checkIn` (string): Proposed check-in date (YYYY-MM-DD). Optional.
- `checkOut` (string): Proposed check-out date (YYYY-MM-DD). Optional.
- `destination` (string, required): Free-text destination — a city name or region.
- `displayName` (string): The organizer's name as shown to other members, e.g. "Alex". Optional.
- `title` (string): Display title for the session, e.g. "Vegas bachelor party". Optional.

### `pricetik_group_trip_get` (~139 tokens)

Group Trip Get

Fetch a group trip session — status, members (display names only), candidate options with per-option vote tallies (upvotes / downvotes / score), and the caller's own votes. Look up by sessionId or shareCode (exactly one). Poll this after adding options or between conversations to see how the group is converging before the organizer finalizes. Requires an authenticated API key; non-members get 403 (join first via pricetik_group_trip_join). Pure read.

Input parameters:

- `sessionId` (string): Group trip session UUID.
- `shareCode` (string): The 8-character share code (alternative to sessionId).

### `pricetik_group_trip_join` (~122 tokens)

Group Trip Join

Join a group trip session by share code (idempotent — joining twice is safe). Pass an optional displayName so other members see who voted. After joining, the caller can read the session, add candidate options, and vote. Requires an authenticated API key (the membership is owned by the PriceTik account). Pass an Idempotency-Key header to make retries safe.

Input parameters:

- `displayName` (string): Name shown to other members, e.g. "Alex". Optional.
- `shareCode` (string, required): The share code from the session organizer.

### `pricetik_group_trip_add_option` (~241 tokens)

Group Trip Add Option

Propose a candidate to the group — a hotel, activity, live-event ticket, or transfer found via the normal search tools. Pass the surface plus a ref object carrying the surface identifier (hotel: propertyId or providerPropertyId; activity: activityCode; ticket: the event id from pricetik_ticket_search; transfer: the rateToken) and display snapshot fields (name, priceUsd, currency, photoUrl, bookingUrl) copied from the search result so other members see what they are voting on. Member-only (403 otherwise); sessions cap at 25 options. Add 2–4 strong candidates per surface rather than dumping every search result.

Input parameters:

- `note` (string): Optional pitch shown with the option, e.g. "walkable to the venue".
- `ref` (object, required): Surface identifier + display snapshot: { propertyId | providerPropertyId | activityCode | ticketId | rateToken, name, priceUsd, currency, photoUrl, bookingUrl }. Copy values from the search result un…
- `sessionId` (string, required): Group trip session UUID.
- `surface` (string, required): Which vertical this candidate belongs to.

### `pricetik_group_trip_vote` (~122 tokens)

Group Trip Vote

Record the caller's vote on a candidate option: 1 (up) or -1 (down). One vote per member per option — voting again replaces the previous vote (upsert), so changing one's mind is safe. Member-only (403 otherwise). After voting, read pricetik_group_trip_get for the updated tallies.

Input parameters:

- `optionId` (string, required): The candidate option UUID to vote on.
- `sessionId` (string, required): Group trip session UUID.
- `vote` (number, required): 1 = upvote, -1 = downvote.

### `pricetik_group_trip_finalize` (~201 tokens)

Group Trip Finalize

Lock in the group's plan (organizer-only; 403 for other members). Pass optionIds to finalize the winning subset — read pricetik_group_trip_get first and pick the top-voted options; when optionIds is omitted, ALL candidate options are locked in. Returns the finalized plan grouped by surface with vote tallies and handoffPolicy "user_completes_booking". Prices in option snapshots are display-only — re-check live rates via the surface read tools before booking. Finalizing is irreversible for the session (it moves to "finalized", 409 on repeat); PriceTik never books on anyone's behalf.

Input parameters:

- `optionIds` (array): Optional subset of option UUIDs to lock in. Omit to lock in ALL candidate options (it does NOT auto-pick the top-voted — read pricetik_group_trip_get and pass the winners explicitly if you want a sub…
- `sessionId` (string, required): Group trip session UUID.

### `pricetik_group_trip_cancel` (~131 tokens)

Group Trip Cancel

Cancel a group trip session (organizer-only; 403 OrganizerOnly for other members). Closes a still-planning session — status moves to "cancelled". A finalized session cannot be cancelled (409 AlreadyFinalized); a re-cancel returns 409 SessionNotOpen. Coordinate-only: cancelling never touches a booking (PriceTik never auto-purchases), so there is nothing to refund. Use this when the group abandons the trip; to lock a plan instead, use pricetik_group_trip_finalize. Requires an authenticated API key.

Input parameters:

- `sessionId` (string, required): Group trip session UUID.

### `pricetik_my_group_trips` (~111 tokens)

My Group Trips

List the authenticated user's group-trip sessions (as organizer or member), newest activity first. Each row carries the sessionId + shareCode (plus title, destination, status, your role, and memberCount) needed to RESUME a trip — vote, add options, or finalize. Call this when a returning user references a group trip but you don't have its sessionId in context (create/join are the only other places that hand one back). Auth required (OAuth account or bearer API key).

### `pricetik_flight_search` (~506 tokens)

Flight Search

Search flights and get the top offers with price signals. One-way, round-trip, and multi-city (up to 6 legs) in ONE call: pass EITHER the compact legs string — comma-separated ORIG-DEST-YYYY-MM-DD triples, e.g. "JFK-LHR-2026-09-01,LHR-JFK-2026-09-08" — OR the flat origin/destination/departure_date (+ return_date) params, never both. Airports are 3-letter IATA codes; dates within 330 days. Passengers and cabin apply to the whole itinerary: adults (1-6), children with children_ages, lap infants (never more than adults), optional cabin. A live fare search takes 10-20 seconds — make ONE call per itinerary and reuse the returned offers. Returns the cheapest fare per journey with signals (fare options, refundable-upgrade delta, seats remaining, bag inclusions) plus best/price/duration/stops winners. Free at every tier — no API key required.

Input parameters:

- `adults` (integer): Adult passengers (default 1).
- `cabin` (string): Cabin class for the whole itinerary. Omit for any cabin.
- `children` (integer): Child passengers (default 0). Pair with children_ages.
- `children_ages` (array): One age (0-17) per child. Length must equal children when both are present.
- `departure_date` (string): Flat sugar: departure date, YYYY-MM-DD (today to +330 days).
- `destination` (string): Flat sugar: 3-letter IATA destination airport (e.g. "LHR").
- `infants` (integer): Lap infants (default 0). Must not exceed adults.
- `legs` (string): Compact itinerary: comma-separated ORIG-DEST-YYYY-MM-DD triples (1-6 legs, dates non-decreasing), e.g. "JFK-LHR-2026-09-01,LHR-CDG-2026-09-05". Mutually exclusive with origin/destination/departure_da…
- `origin` (string): Flat sugar: 3-letter IATA origin airport (e.g. "JFK"). Use with destination + departure_date.
- `return_date` (string): Flat sugar: return date (YYYY-MM-DD, on/after departure_date) — makes it a round trip. Omit for one-way.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-pricetik-mcp-server/mcp#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 64
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 64
- 2026-07-29: 64
- 2026-07-28: 64
- 2026-07-27: 63
- 2026-07-26: 62

## Links

- Remote endpoint: https://mcp.pricetik.com/mcp
- Website: https://pricetik.com/mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/com-pricetik-mcp-server/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-pricetik-mcp-server/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-pricetik-mcp-server/mcp
