_ registry / mcp streamable-http · checked 57m ago

phi-phi-paradise-travel

https://phiphiparadise.travel

Registry code: 54cc9a1bc94568e5

api record

Phi Phi Paradise Travel (Phi Phi Paradise Travel Co., Ltd., a Thai travel agency based on Koh Phi Phi) lets you plan and book a southern Thailand trip end to end: island tours and private boats (Koh Phi Phi, Krabi, Phuket, Koh Yao, plus Bangkok and Chiang Mai), ferry and speedboat transfers between islands, hotels (live Agoda rates), flight search links and a shareable day-by-day itinerary with PDF.

How to use it:

endpoint
https://phiphiparadise.travel/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is phi-phi-paradise-travel live?
Yes — it answered the hub's last check (checked 57m ago). It answered 100% of checks over the last 30 days.
Is phi-phi-paradise-travel free to use?
Yes — the hub reached it with no key and no payment.
What tools does phi-phi-paradise-travel have?
10 tools: get_experience_details, check_availability, ask_travel_guides, book_experience, search_transfers, book_transfer, search_hotels, search_flights, ….
Is phi-phi-paradise-travel safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
2,286ms

last good check

priced tools
0

of 10 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 10 tools
10 never probed 0 of 10 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_experience_details unknown never probed

    Full live sheet of one tour: price tiers (per person or per whole boat), child price, dated price periods, duration, schedule, meeting point, what is included, national park fee, page link. Call it before quoting any price.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "experience"
      ],
      "properties": {
        "experience": {
          "type": "string",
          "maxLength": 160,
          "minLength": 2,
          "description": "Tour id 'destination/slug' from search_experiences, or its name."
        }
      }
    }
    arguments 15 lines
  • check_availability unknown 56m ago

    Live availability and exact party price of one tour on one date (seats left, blocked dates, 48h notice rule, dated prices). If the date does not work, it proposes the next open dates. Always call it before quoting a total or booking.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "experience",
        "date",
        "adults"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "Trip date, YYYY-MM-DD."
        },
        "adults": {
          "type": "integer",
          "maximum": 60,
          "minimum": 1,
          "description": "Adults and children 12+."
        },
        "option": {
          "type": "string",
          "maxLength": 200,
          "description": "Exact option label (boat type, duration...) when the tour has several priced options."
        },
        "children": {
          "type": "integer",
          "maximum": 40,
          "minimum": 0,
          "description": "Children 4-11 (child rate)."
        },
        "toddlers": {
          "type": "integer",
          "maximum": 20,
          "minimum": 0,
          "description": "Babies 0-3 (free)."
        },
        "experience": {
          "type": "string",
          "maxLength": 160,
          "minLength": 2,
          "description": "Tour id 'destination/slug' or name."
        }
      }
    }
    arguments 44 lines
  • ask_travel_guides unknown 56m ago

    Search our own Thailand travel guides: how to get from A to B, last boats, weather and monsoon by month, Maya Bay rules, how many days per island, budgets, safety. Returns excerpts and links.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "question"
      ],
      "properties": {
        "question": {
          "type": "string",
          "maxLength": 300,
          "minLength": 3,
          "description": "The traveller's question, any language."
        }
      }
    }
    arguments 15 lines
  • book_experience unknown never probed

    Create a booking for a tour and get the secure payment page for the traveller. Only after check_availability and after the traveller explicitly approved the restated tour, date, party, total and payment. Payment is online: 'full' (default) or 'deposit' when the tour offers it (private tours: balance online before the trip; shared tours: balance in cash on the day). Nothing is secured until the traveller pays on the returned page.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "experience",
        "date",
        "adults",
        "traveller_name",
        "traveller_email",
        "traveller_confirmed"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "Trip date, YYYY-MM-DD."
        },
        "hotel": {
          "type": "string",
          "maxLength": 200,
          "description": "Hotel name, needed for tours with hotel pickup (Phuket, Krabi)."
        },
        "notes": {
          "type": "string",
          "maxLength": 1500,
          "description": "Kids ages, allergies, special requests."
        },
        "adults": {
          "type": "integer",
          "maximum": 60,
          "minimum": 1,
          "description": "Adults and children 12+."
        },
        "option": {
          "type": "string",
          "maxLength": 200,
          "description": "Exact option label when the tour has several priced options."
        },
        "payment": {
          "enum": [
            "full",
            "deposit"
          ],
          "type": "string",
          "description": "'full' (default) or 'deposit'."
        },
        "children": {
          "type": "integer",
          "maximum": 40,
          "minimum": 0,
          "description": "Children 4-11 (child rate)."
        },
        "language": {
          "type": "string",
          "maxLength": 8,
          "description": "Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language."
        },
        "toddlers": {
          "type": "integer",
          "maximum": 20,
          "minimum": 0,
          "description": "Babies 0-3 (free)."
        },
        "experience": {
          "type": "string",
          "maxLength": 160,
          "minLength": 2,
          "description": "Tour id 'destination/slug'."
        },
        "traveller_name": {
          "type": "string",
          "maxLength": 120,
          "minLength": 2,
          "description": "Full name of the lead traveller."
        },
        "traveller_email": {
          "type": "string",
          "format": "email",
          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
          "description": "Email: receives the confirmation and e-ticket after payment."
        },
        "traveller_phone": {
          "type": "string",
          "maxLength": 40,
          "description": "WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day."
        },
        "confirm_duplicate": {
          "type": "boolean",
          "description": "Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer."
        },
        "traveller_confirmed": {
          "type": "boolean",
          "const": true,
          "description": "Must be true: you restated product, date, party, total and payment and the traveller explicitly said yes."
        }
      }
    }
    arguments 96 lines
  • search_transfers unknown never probed

    Boat transfers between Phuket, Krabi, Ao Nang, Railay, Koh Phi Phi, Koh Lanta, Koh Yao, Koh Lipe and the Gulf islands: departure times, operator, piers, hotel pickup policy and price per person. Suggests a connection when there is no direct boat.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 40,
          "minLength": 2,
          "description": "Arrival place."
        },
        "date": {
          "type": "string",
          "description": "Travel date YYYY-MM-DD (checks the 48h booking notice)."
        },
        "from": {
          "type": "string",
          "maxLength": 40,
          "minLength": 2,
          "description": "Departure place, e.g. Phuket, Krabi, Ao Nang, Phi Phi, Koh Lanta."
        },
        "type": {
          "enum": [
            "Ferry",
            "Speedboat"
          ],
          "type": "string",
          "description": "Only ferries or only speedboats."
        },
        "passengers": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Number of passengers (for totals)."
        }
      }
    }
    arguments 40 lines
  • book_transfer unknown never probed

    Book one ferry or speedboat departure listed by search_transfers and get the secure payment page. Only after the traveller explicitly approved the restated route, date, time, passengers and total. Transfers are paid online in full; nothing is secured until paid.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "from",
        "to",
        "type",
        "date",
        "departure_time",
        "company",
        "passengers",
        "traveller_name",
        "traveller_email",
        "traveller_confirmed"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 40,
          "minLength": 2
        },
        "date": {
          "type": "string",
          "description": "YYYY-MM-DD"
        },
        "from": {
          "type": "string",
          "maxLength": 40,
          "minLength": 2
        },
        "type": {
          "enum": [
            "Ferry",
            "Speedboat"
          ],
          "type": "string"
        },
        "hotel": {
          "type": "string",
          "maxLength": 200,
          "description": "Hotel name, for pickup."
        },
        "notes": {
          "type": "string",
          "maxLength": 1500,
          "description": "Kids ages, allergies, special requests."
        },
        "company": {
          "type": "string",
          "maxLength": 80,
          "description": "Operator exactly as listed by search_transfers."
        },
        "language": {
          "type": "string",
          "maxLength": 8,
          "description": "Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language."
        },
        "passengers": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1
        },
        "hotel_pickup": {
          "type": "boolean",
          "description": "Only for departures listed 'hotel pickup on request, +100 THB/person'."
        },
        "departure_time": {
          "type": "string",
          "maxLength": 5,
          "description": "HH:MM exactly as listed by search_transfers."
        },
        "traveller_name": {
          "type": "string",
          "maxLength": 120,
          "minLength": 2,
          "description": "Full name of the lead traveller."
        },
        "traveller_email": {
          "type": "string",
          "format": "email",
          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
          "description": "Email: receives the confirmation and e-ticket after payment."
        },
        "traveller_phone": {
          "type": "string",
          "maxLength": 40,
          "description": "WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day."
        },
        "confirm_duplicate": {
          "type": "boolean",
          "description": "Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer."
        },
        "traveller_confirmed": {
          "type": "boolean",
          "const": true,
          "description": "Must be true: you restated product, date, party, total and payment and the traveller explicitly said yes."
        }
      }
    }
    arguments 99 lines
  • search_hotels unknown never probed

    Hotels for a destination. With check-in and check-out dates: live Agoda nightly rates, stars, guest scores and booking links. Without dates: our editorial shortlist. Destinations: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "destination"
      ],
      "properties": {
        "adults": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1
        },
        "check_in": {
          "type": "string",
          "description": "YYYY-MM-DD"
        },
        "children": {
          "type": "integer",
          "maximum": 10,
          "minimum": 0
        },
        "language": {
          "type": "string",
          "maxLength": 8
        },
        "check_out": {
          "type": "string",
          "description": "YYYY-MM-DD"
        },
        "destination": {
          "type": "string",
          "maxLength": 40,
          "minLength": 2
        }
      }
    }
    arguments 36 lines
  • search_flights unknown never probed

    Flights to and within Thailand (e.g. Paris CDG to Bangkok BKK, Bangkok to Krabi KBV or Phuket HKT). Returns live fares when our search has them, and always ready-made Google Flights and Skyscanner links. The traveller books flights with the airline.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "from",
        "to",
        "date"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 3,
          "minLength": 3,
          "description": "Arrival IATA airport code, e.g. KBV (Krabi), HKT (Phuket), USM (Koh Samui)."
        },
        "date": {
          "type": "string",
          "description": "Outbound date YYYY-MM-DD."
        },
        "from": {
          "type": "string",
          "maxLength": 3,
          "minLength": 3,
          "description": "Departure IATA airport code, e.g. CDG, BKK."
        },
        "cabin": {
          "enum": [
            "ECONOMY",
            "PREMIUM_ECONOMY",
            "BUSINESS",
            "FIRST"
          ],
          "type": "string"
        },
        "adults": {
          "type": "integer",
          "maximum": 9,
          "minimum": 1
        },
        "infants": {
          "type": "integer",
          "maximum": 8,
          "minimum": 0
        },
        "children": {
          "type": "integer",
          "maximum": 8,
          "minimum": 0
        },
        "return_date": {
          "type": "string",
          "description": "Return date YYYY-MM-DD for a round trip."
        }
      }
    }
    arguments 55 lines
  • plan_trip unknown never probed

    Build a multi-stop Thailand itinerary (stops in travel order) and get a shareable page plus a PDF: day-by-day plan, map, transport between stops with prices, hotel picks and tours. Use it for any trip of several days or several places.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "destinations"
      ],
      "properties": {
        "adults": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1
        },
        "children": {
          "type": "integer",
          "maximum": 20,
          "minimum": 0
        },
        "end_date": {
          "type": "string",
          "description": "Last day YYYY-MM-DD."
        },
        "language": {
          "type": "string",
          "maxLength": 8,
          "description": "Page language code."
        },
        "start_date": {
          "type": "string",
          "description": "First day YYYY-MM-DD."
        },
        "destinations": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 40
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "Stops in travel order, from: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk."
        }
      }
    }
    arguments 42 lines
  • search_experiences unknown 56m ago

    Search our tours: island hopping, Maya Bay, private boats, snorkeling, diving, boat parties, cultural day trips. Covers Koh Phi Phi, Krabi (Ao Nang, Railay), Phuket, Koh Yao, Bangkok and Chiang Mai. Returns ids, prices from, durations and page links. Titles are in French; translate them for the traveller.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "Max results (default 8)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "description": "What the traveller wants, any language, e.g. 'Maya Bay sunrise', 'private longtail', 'elephant sanctuary'."
        },
        "destination": {
          "type": "string",
          "maxLength": 40,
          "description": "koh-phi-phi, krabi, phuket, koh-yao, bangkok or chiang-mai."
        },
        "private_only": {
          "type": "boolean",
          "description": "true = private boats/tours only, false = shared group tours only."
        },
        "max_price_thb": {
          "type": "number",
          "description": "Budget cap on the starting price, in THB.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 31 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 54cc9a1bc94568e5.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/54cc9a1bc94568e5/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/54cc9a1bc94568e5/badge.svg)](https://brick.blue/agent/54cc9a1bc94568e5?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.