← WebMCP Directory

Tool tree

parleywebmcp.vercel.app

Productivity & BusinessTools verified
Website
Win more direct hotel bookings with offers made on your terms, while you keep control of every important decision.
Explore capabilities

    page: Home

    get_parley_overviewAnswer

    Explains how Parley makes a hotel website negotiable for guest agents, what is live today, and which onboarding action to take next. Use it when a hotelier or their agent first reaches this page; it changes nothing.

    View tool JSON
    {
      "name": "get_parley_overview",
      "kind": "answer",
      "impl": "imperative",
      "description": "Explains how Parley makes a hotel website negotiable for guest agents, what is live today, and which onboarding action to take next. Use it when a hotelier or their agent first reaches this page; it changes nothing.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    get_hotel_onboarding_contextAnswer

    Reads the hotel profile, generated integration asset, and pilot-signup state currently visible in the shared setup studio. Use it before changing the setup; it changes nothing and never submits a signup.

    View tool JSON
    {
      "name": "get_hotel_onboarding_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads the hotel profile, generated integration asset, and pilot-signup state currently visible in the shared setup studio. Use it before changing the setup; it changes nothing and never submits a signup.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    estimate_direct_booking_upsideSensitive Action

    Estimates how much OTA commission a hotel could recover by shifting a stated share of annual OTA revenue to direct bookings. Use it for an indicative business case; it changes nothing and returns transparent assumptions, not a guarantee.

    View tool JSON
    {
      "name": "estimate_direct_booking_upside",
      "kind": "transact",
      "impl": "imperative",
      "description": "Estimates how much OTA commission a hotel could recover by shifting a stated share of annual OTA revenue to direct bookings. Use it for an indicative business case; it changes nothing and returns transparent assumptions, not a guarantee.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "annual_ota_revenue_eur": {
            "type": "number",
            "minimum": 1000,
            "maximum": 1000000000
          },
          "ota_commission_pct": {
            "type": "number",
            "minimum": 0,
            "maximum": 40
          },
          "shift_to_direct_pct": {
            "type": "number",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": [
          "annual_ota_revenue_eur",
          "ota_commission_pct",
          "shift_to_direct_pct"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    set_hotel_profileAction

    Fills the visible setup studio with a hotel's public profile and commercial baseline. Use it when the hotelier supplies these details; it changes only shared page fields, stores nothing, and does not enroll the hotel.

    View tool JSON
    {
      "name": "set_hotel_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Fills the visible setup studio with a hotel's public profile and commercial baseline. Use it when the hotelier supplies these details; it changes only shared page fields, stores nothing, and does not enroll the hotel.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "hotel_name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120
          },
          "website": {
            "type": "string",
            "format": "uri",
            "maxLength": 500
          },
          "city": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120
          },
          "rooms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000
          },
          "ota_commission_pct": {
            "type": "integer",
            "minimum": 0,
            "maximum": 40
          },
          "contact_email": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          }
        },
        "required": [
          "hotel_name",
          "website",
          "city",
          "rooms",
          "ota_commission_pct"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    configure_negotiation_rulesAction

    Turns the hotelier's plain-language deal preferences into the rule fields visible on this page. Use it after discussing their floors, discounts, perks, group limits, prepayment, and tone; it changes only the setup preview and does not activate the rules.

    View tool JSON
    {
      "name": "configure_negotiation_rules",
      "kind": "act",
      "impl": "imperative",
      "description": "Turns the hotelier's plain-language deal preferences into the rule fields visible on this page. Use it after discussing their floors, discounts, perks, group limits, prepayment, and tone; it changes only the setup preview and does not activate the rules.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "min_hotel_uplift_pct": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20
          },
          "quiet_dates_max_discount_pct": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25
          },
          "preferred_perks": {
            "type": "array",
            "maxItems": 5,
            "items": {
              "type": "string",
              "enum": [
                "breakfast",
                "late_checkout",
                "early_checkin",
                "upgrade",
                "parking"
              ]
            }
          },
          "owner_review_above_rooms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "prepay_required_over_discount_pct": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25
          },
          "voice": {
            "type": "string",
            "minLength": 2,
            "maxLength": 160
          }
        },
        "required": [
          "min_hotel_uplift_pct",
          "quiet_dates_max_discount_pct",
          "preferred_perks",
          "owner_review_above_rooms",
          "prepay_required_over_discount_pct",
          "voice"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    set_guest_enquiry_inboxAction

    Sets the visible hotel inbox for guest follow-up requests and fixes the privacy rule to ask each guest before any contact details are shared. Use it when the hotelier names their reservations inbox; it changes only this setup and does not contact a guest or send email.

    View tool JSON
    {
      "name": "set_guest_enquiry_inbox",
      "kind": "act",
      "impl": "imperative",
      "description": "Sets the visible hotel inbox for guest follow-up requests and fixes the privacy rule to ask each guest before any contact details are shared. Use it when the hotelier names their reservations inbox; it changes only this setup and does not contact a guest or send email.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "enquiry_inbox": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          },
          "guest_contact_policy": {
            "type": "string",
            "const": "ask_each_time"
          }
        },
        "required": [
          "enquiry_inbox",
          "guest_contact_policy"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    show_level0_manifestAction

    Generates and reveals a copy-ready /.well-known/negotiate.json manifest from the hotel profile shown on this page. Use it for immediate agent discovery; it changes the visible code preview but does not publish or modify the hotel's website.

    View tool JSON
    {
      "name": "show_level0_manifest",
      "kind": "act",
      "impl": "imperative",
      "description": "Generates and reveals a copy-ready /.well-known/negotiate.json manifest from the hotel profile shown on this page. Use it for immediate agent discovery; it changes the visible code preview but does not publish or modify the hotel's website.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    show_install_snippetAction

    Generates and reveals the one-script Parley installation snippet for the hotel profile shown on this page. Use it to prepare developer handoff; it changes the visible code preview but does not install code or activate a property.

    View tool JSON
    {
      "name": "show_install_snippet",
      "kind": "act",
      "impl": "imperative",
      "description": "Generates and reveals the one-script Parley installation snippet for the hotel profile shown on this page. Use it to prepare developer handoff; it changes the visible code preview but does not install code or activate a property.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    prepare_pilot_signupAction

    Fills the visible pilot-access form with the hotel's contact details and scrolls it into view. Use it when the hotelier asks to join; it changes only page fields and never submits—an authorized person must check consent and press Request pilot access.

    View tool JSON
    {
      "name": "prepare_pilot_signup",
      "kind": "act",
      "impl": "imperative",
      "description": "Fills the visible pilot-access form with the hotel's contact details and scrolls it into view. Use it when the hotelier asks to join; it changes only page fields and never submits—an authorized person must check consent and press Request pilot access.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "hotel_name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120
          },
          "website": {
            "type": "string",
            "format": "uri",
            "maxLength": 500
          },
          "city": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120
          },
          "rooms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000
          },
          "ota_commission_pct": {
            "type": "integer",
            "minimum": 0,
            "maximum": 40
          },
          "contact_email": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          }
        },
        "required": [
          "hotel_name",
          "website",
          "city",
          "rooms",
          "ota_commission_pct",
          "contact_email"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_pilot_signup_statusAnswer

    Reads whether the pilot form is prepared or has been submitted by a human on this page. Use it after helping with setup; it changes nothing and reiterates that enrollment requires the visible human consent and button.

    View tool JSON
    {
      "name": "get_pilot_signup_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads whether the pilot form is prepared or has been submitted by a human on this page. Use it after helping with setup; it changes nothing and reiterates that enrollment requires the visible human consent and button.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }

    page: Demo

    get_negotiation_policyAnswer

    Reads the hotel's direct-deal rules, available perks, group threshold, round limit, and offer timing. Use it before proposing a negotiation strategy; it changes nothing and explains that acceptance and payment remain human-only.

    View tool JSON
    {
      "name": "get_negotiation_policy",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads the hotel's direct-deal rules, available perks, group threshold, round limit, and offer timing. Use it before proposing a negotiation strategy; it changes nothing and explains that acceptance and payment remain human-only.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/demo"
    }
    get_stay_contextAnswer

    Reads the stay, room, active hold, and current negotiated offer visible in the Parley panel. Use it before acting or when the human refers to this page; it changes nothing and explains that acceptance is human-only.

    View tool JSON
    {
      "name": "get_stay_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads the stay, room, active hold, and current negotiated offer visible in the Parley panel. Use it before acting or when the human refers to this page; it changes nothing and explains that acceptance is human-only.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/demo"
    }
    set_datesAction

    Updates the dates, room count, and guests shown in the Parley panel. Use it when the guest specifies a stay; it visibly changes the shared page state and returns the updated context.

    View tool JSON
    {
      "name": "set_dates",
      "kind": "act",
      "impl": "imperative",
      "description": "Updates the dates, room count, and guests shown in the Parley panel. Use it when the guest specifies a stay; it visibly changes the shared page state and returns the updated context.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "check_in": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "check_out": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "rooms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "guests_per_room": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          }
        },
        "required": [
          "check_in",
          "check_out",
          "rooms",
          "guests_per_room"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    search_availabilityAnswer

    Checks live Standard-room availability and direct prices for a specified stay. Use it before holding rooms; it performs a read only and returns flexible, non-refundable, tax, and breakfast figures.

    View tool JSON
    {
      "name": "search_availability",
      "kind": "answer",
      "impl": "imperative",
      "description": "Checks live Standard-room availability and direct prices for a specified stay. Use it before holding rooms; it performs a read only and returns flexible, non-refundable, tax, and breakfast figures.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "check_in": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "check_out": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "rooms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "guests_per_room": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          }
        },
        "required": [
          "check_in",
          "check_out",
          "rooms",
          "guests_per_room"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    hold_roomsAction

    Places a temporary 15-minute hold on Standard rooms for the requested stay. Use it only after availability is checked; it reserves inventory, starts the visible countdown, and does not book or charge anything.

    View tool JSON
    {
      "name": "hold_rooms",
      "kind": "act",
      "impl": "imperative",
      "description": "Places a temporary 15-minute hold on Standard rooms for the requested stay. Use it only after availability is checked; it reserves inventory, starts the visible countdown, and does not book or charge anything.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "check_in": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "check_out": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "rooms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "guests_per_room": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          }
        },
        "required": [
          "check_in",
          "check_out",
          "rooms",
          "guests_per_room"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    request_offerAction

    Asks the hotel's deterministic policy engine for a direct offer against an active hold. Use it after hold_rooms, including when a guest supplies a refundable OTA booking to beat; it opens a negotiation and returns eligibility or an offer, but cannot accept, book, pay, receive card data, or cancel the other booking. Always tell rebooking guests to confirm direct first and cancel elsewhere only afterward.

    View tool JSON
    {
      "name": "request_offer",
      "kind": "act",
      "impl": "imperative",
      "description": "Asks the hotel's deterministic policy engine for a direct offer against an active hold. Use it after hold_rooms, including when a guest supplies a refundable OTA booking to beat; it opens a negotiation and returns eligibility or an offer, but cannot accept, book, pay, receive card data, or cancel the other booking. Always tell rebooking guests to confirm direct first and cancel elsewhere only afterward.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "hold_id": {
            "type": "string",
            "format": "uuid"
          },
          "asks": {
            "type": "array",
            "maxItems": 6,
            "items": {
              "type": "string",
              "enum": [
                "breakfast",
                "late_checkout",
                "early_checkin",
                "upgrade",
                "parking",
                "other"
              ]
            }
          },
          "payment_preference": {
            "type": "string",
            "enum": [
              "flexible",
              "prepaid_ok"
            ],
            "description": "Use flexible when the guest cannot prepay or requires refundable terms; prepaid_ok only requests conditional prepaid/non-refundable terms for review and never accepts or pays."
          },
          "notes": {
            "type": "string",
            "maxLength": 200
          },
          "existing_booking": {
            "type": "object",
            "description": "The guest's existing booking facts. Only refundable bookings with more than 24 hours before the cancellation deadline are eligible; Parley never cancels it.",
            "properties": {
              "channel": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80,
                "description": "Booking channel, such as Booking.com."
              },
              "rate_per_night_cents": {
                "type": "integer",
                "minimum": 1,
                "description": "Existing room rate per night in integer cents."
              },
              "total_cents": {
                "type": "integer",
                "minimum": 1,
                "description": "Existing booking room total in integer cents."
              },
              "check_in": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              "check_out": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              "refundable": {
                "type": "boolean",
                "description": "Whether the existing booking can still be cancelled without charge."
              },
              "cancellation_deadline": {
                "type": "string",
                "format": "date-time",
                "description": "UTC ISO date-time for free cancellation expiry."
              }
            },
            "required": [
              "channel",
              "rate_per_night_cents",
              "total_cents",
              "check_in",
              "check_out",
              "refundable",
              "cancellation_deadline"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "hold_id",
          "asks",
          "payment_preference"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    counter_offerAction

    Submits one price counter to the open hotel negotiation. Use prepaid_ok to request the lowest conditional quote when the guest asks for the best deal; it only lets the hotel quote prepaid, non-refundable terms for review and does not consent, accept, or pay. Use flexible when the guest says they cannot prepay or require refundable terms.

    View tool JSON
    {
      "name": "counter_offer",
      "kind": "act",
      "impl": "imperative",
      "description": "Submits one price counter to the open hotel negotiation. Use prepaid_ok to request the lowest conditional quote when the guest asks for the best deal; it only lets the hotel quote prepaid, non-refundable terms for review and does not consent, accept, or pay. Use flexible when the guest says they cannot prepay or require refundable terms.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "target_total_cents": {
            "type": "integer",
            "minimum": 1
          },
          "target_per_night_cents": {
            "type": "integer",
            "minimum": 1
          },
          "keep_inclusions": {
            "type": "boolean"
          },
          "payment_preference": {
            "type": "string",
            "enum": [
              "flexible",
              "prepaid_ok"
            ],
            "description": "Use prepaid_ok for a lowest-price conditional quote unless the guest says they cannot prepay or require refundable terms; this only returns an offer for review and does not consent, accept, or pay."
          },
          "message": {
            "type": "string",
            "maxLength": 200
          }
        },
        "required": [
          "session_id",
          "keep_inclusions",
          "payment_preference"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    get_offer_statusAnswer

    Reads the latest offer, expiry, round, and hold state for one negotiation. Use it before relaying or countering an offer; it changes nothing and states that the guest must use the visible Accept & pay button.

    View tool JSON
    {
      "name": "get_offer_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads the latest offer, expiry, round, and hold state for one negotiation. Use it before relaying or countering an offer; it changes nothing and states that the guest must use the visible Accept & pay button.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "session_id"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    get_bookingAnswer

    Reads a confirmed booking made by this visitor from its Parley reference. Use it after the human completes visible checkout; it changes nothing and returns dates, rooms, inclusions, total, and terms without personal data.

    View tool JSON
    {
      "name": "get_booking",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reads a confirmed booking made by this visitor from its Parley reference. Use it after the human completes visible checkout; it changes nothing and returns dates, rooms, inclusions, total, and terms without personal data.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "booking_ref": {
            "type": "string",
            "pattern": "^CZ-[A-Z0-9]{4,12}$"
          }
        },
        "required": [
          "booking_ref"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }