
Phi Phi Islands Day Trip by Speedboat
prd_phi_phi_speedboat_day
8 hrs · Pickup: Patong, Kata, Karon

Agent commerce
Golda Trip is a direct-booking platform for Phuket island tours, yacht cruises, private charters, airport transfers and stays, run by a local team in Rawai. Beyond this website, the same catalog and booking engine are exposed through a scoped, audited agent API — approved AI agents can search real availability, validate day plans and get server-priced quotes on behalf of travelers. Every capability an agent has is listed on this page; if it is not listed, it does not exist yet.
The same catalog and booking engine that power this website are open to approved partners — every step below is validated on our servers, not taken on faith.

Island trips, cruises, charters and transfers — filtered by real dates, traveller ages and pickup zones. Only bookable inventory comes back.

Every price is calculated on our servers and carries an expiry — estimates never quietly become numbers.

Travel times, boat connections, age rules and flight buffers are checked before anyone commits.

A hold becomes a booking only when the traveller approves — payment happens on our hosted page, never inside the partner channel.
This table is generated at build time from public/agents.json — the same file machines read — so this page cannot overstate what is live.
| Tool | What it does | Scope | Risk | Status |
|---|---|---|---|---|
| search_toursPOST /agent/tours/search | Search the published tour catalog with hard filters (traveller ages, pickup zone, dates) and get availability-checked candidates. | catalog.read | Read-only | Live |
| get_productGET /agent/products/{id_or_slug} | Fetch one product's normalized detail: options, schedule summary, cancellation policy, suitability rules. | catalog.read | Read-only | Live |
| check_availabilityPOST /agent/availability/check | Authoritative availability per product/date: status, remaining quantity, booking cutoff, reason codes. | availability.read | Read-only | Live |
| price_previewPOST /agent/pricing/preview | Server-computed price estimate for a candidate item. Explicitly non-binding. | pricing.read | Read-only | Live |
| validate_itineraryPOST /agent/itineraries/validate | Deterministic validation of a draft day plan: time conflicts, transfer presence, flight buffers, age rules. | itinerary.create | Read-only | Live |
| create_quotePOST /agent/quotes | Create a server-priced, time-bounded quote — the binding commercial document. Idempotency-Key required. | quote.create | Commercial write | Live |
| get_quoteGET /agent/quotes/{id} | Read one quote this integration created: items, price, expiry, status. | quote.create | Read-only | Live |
| hold_inventoryPOST /agent/holds | Temporarily reserve quoted inventory (short expiry) before booking. | booking.create | Commercial write | Live |
| create_bookingPOST /agent/bookings | Convert a quote + hold into a confirmed booking. Requires a traveler approval reference. | booking.create | High | LiveRequires traveler approval |
| get_bookingGET /agent/bookings/{id} | Read bookings this integration created — public-safe subset only, no supplier or internal data. | booking.read | Customer data | Live |
| initiate_paymentPOST /agent/payments | Issue an approval-scoped hosted payment link for the traveler. Opaque authorization only — raw card data never passes through the agent channel. | payment.initiate | High | LiveRequires traveler approval |
| manage_itineraryGET/POST/PUT/DELETE /itineraries | Create, read, update and delete server-persisted trip itineraries — the same rows the website planner edits (parity). Optimistic-lock versioning; plans lock once quoted or booked. | itinerary.read + itinerary.write | Commercial write | Live |
| concierge_planPOST /concierge/plan | Plan-with-AI: an LLM orchestrator calls the agent tools (search → detail → availability → validate → quote) and returns a server-validated itinerary plus a server-computed quote. Product ids must come from tool results; invalid plans are never persisted. | concierge.plan | Read-only | Live |
| reschedule_bookingendpoint not finalized | Reschedule an existing booking within operator rules, with traveler approval. | booking.modify | High | Planned · v2Requires traveler approval |
| cancel_bookingendpoint not finalized | Cancel an existing booking under the applicable policy tier, with traveler approval. | booking.modify | High | Planned · v2Requires traveler approval |
| mcp_serverPOST /agent/mcp | MCP (Model Context Protocol) Streamable HTTP endpoint exposing the same tools to MCP clients. | multiple | Read-only | Live |
A family of 2 adults with children aged 6 and 9, staying in Patong, looking at mid-December dates.
POST https://goldatrip.com/api/v1/agent/tours/search
X-API-Key: <your key>
{
"date_from": "2026-12-14",
"date_to": "2026-12-18",
"travellers": {
"adults": 2,
"children_ages": [
6,
9
]
},
"hotel_zone": "Patong",
"preferences": [
"islands",
"comfortable_boat"
],
"avoid": [
"very_early_start"
],
"limit": 10
}{
"data": {
"items": [
{
"product_id": "prd_phi_phi_speedboat_day",
"title": "Phi Phi Islands Day Trip by Speedboat",
"hard_constraints": {
"child_age_min": 4,
"pickup_zones": [
"Patong",
"Kata",
"Karon"
],
"duration_hours": 8
},
"availability": {
"status": "available",
"remaining": 6,
"cutoff_hours": 24
}
},
{
"product_id": "prd_phang_nga_canoe",
"title": "Phang Nga Bay Sea Cave Canoe",
"hard_constraints": {
"child_age_min": 4,
"pickup_zones": [
"Patong"
],
"duration_hours": 7
},
"availability": {
"status": "sold_out",
"reason_code": "SOLD_OUT"
}
}
]
},
"request_id": "req_a1b2c3d4"
}
prd_phi_phi_speedboat_day
8 hrs · Pickup: Patong, Kata, Karon
prd_phang_nga_canoe
7 hrs · Pickup: Patong
Illustrative example — the response shows a subset of fields. The OpenAPI document above is authoritative.
One base URL, one header, scoped keys — the details machines need.
https://goldatrip.com/api/v1
Same origin as this website; a versioned /api/v1 surface.
X-API-Key
API key in the X-API-Key header. Keys are scoped per integrator and minted by Golda Trip — request only the scopes you need.
Idempotency-Key
Every write tool requires an Idempotency-Key header. Replaying the same key returns the original result instead of creating a duplicate.
Each milestone ships only after the one before it — this page and the manifest update as each tier goes live. This is a sequence, not a set of dates.
Catalog search, product detail, availability, price preview and itinerary validation — plus server-priced quotes.
Inventory holds, booking creation from a quote + hold with traveler approval, and scoped booking reads.
Approval-scoped hosted payment links. The traveler completes payment themselves; raw card data never passes through the agent channel.
Reschedule or cancel an existing booking with traveler approval, within operator rules.
A Model Context Protocol endpoint exposing these tools natively, plus an AI concierge built on the same validated services.
Travel agencies, concierges and AI product teams. We review each request and mint a scoped API key per integrator — start through the contact page. There is no self-serve signup today.
No. Pricing is server-authoritative: agents propose, the backend validates. price_preview is an explicitly non-binding estimate, and create_quote produces a server-priced, time-bounded quote. No agent can override a price.
No. When payment ships (M4), initiate_payment returns an approval-scoped hosted payment link that the traveler completes themselves. The agent channel only ever handles an opaque authorization — never raw card data.
Every write tool requires an Idempotency-Key header. Replaying the same key returns the original result instead of creating a duplicate quote or booking.
Yes — every endpoint, including read tools, is rate-limited per client. Exceeding the limit returns a RATE_LIMITED error code. Limits are agreed per integrator when keys are issued.
No. Catalog search, availability, price previews, itinerary validation and quotes are live. Holds and bookings ship in M3 and payment in M4 — always announced on this page and in agents.json first.
We mint scoped API keys per integrator. Tell us who you are, what you are building and which tools you need, and we issue a key with the minimum scopes required. Reads are for discovery; a quote is the first binding step.