Skip to main content
Glama

Homejourney Singapore property listings

Quote a Homejourney service booking

quote_service_booking
Read-only

Use this after search_services with the selected provider and package identifiers. Returns the exact server-revalidated price before confirmation and does not create a booking row. A quote needs no name, email, or phone. A provider package also returns the assignment deadline, after which an unaccepted booking is cancelled at no charge; it needs an exact start at least 2 hours away. An operator price quoted with the service address also returns slots, the open arrival times there on scheduled_date with the total for each; book one of those times. Without the address no time is checked, and the quote leads with requested_time_open: unknown. When none is open, slotsUnavailableReason says whether the address has no postal code, the postal code matches no address, or the provider does not serve it; otherwise the date is full, and nextOpenDates names the next dates with open times in the 14 days after it (empty when none opens), so quote one of those dates. availableExtras lists the extras the provider sells with the job, such as sofa steaming; quote again with the ones the customer wants in extras to get the total with them, and book with the same extras. A package named for a unit count ("3 wall units") is refused for another number_of_units with reason package_unit_count; quote the package for the asked count instead. Other refusals say what to change: start_too_soon names the first open start after the window when the quote has the service address and asks for the address otherwise, price_changed the new price, invalid_catalog_version the current catalog_version_id, and quote_required means the package cannot be booked on Homejourney.

Input Schema

NameRequiredDescriptionDefault
extrasNoOptional extras from the quote's availableExtras, each id once with a quantity up to its maxQuantity. Each is charged at the operator's price and leaves the visit's length and start as quoted.
base_priceNo
provider_idNoThe chosen package's providerId from search_services.
total_priceNo
price_sourceYesThe chosen package's priceSource from search_services.
service_typeYes
customer_infoNoOptional. The service address (pickup_address for moving), only to list the open arrival times of an operator price.
property_sizeNoHome size, for an offering priced by home size. A quote without it names the sizes the provider prices.
scheduled_dateYes
singapore_timeYesExact customer-selected Singapore start time in 24-hour HH:mm format. Do not send a time range.
discount_amountNo
number_of_hoursNoHours booked, for an offering priced per hour. The provider may charge a minimum number of hours.
number_of_unitsNo
service_detailsYesThe chosen package's serviceId from search_services, such as leak-repair. Put the customer's own words in issue_description.
issue_descriptionNo
service_frequencyNoone-time
catalog_version_idYesThe chosen package's catalogVersionId from search_services.
platform_unit_countNoRetired: Homejourney no longer offers its own catalog prices, so a launch_guide selection is refused. Leave it out.
provider_package_idNoThe chosen package's providerPackageId from search_services.
special_instructionsNo

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / nextOpenDates
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "scheduledDate": {
      +        "type": "string"
      +      },
      +      "singaporeTimes": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "scheduledDate",
      +      "singaporeTimes"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / url
      Added value: +{
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / data / properties / estimatedDurationMinutes / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "null"
      +]
  4. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / nearestOpenTimes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / requestedTimeOpen
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
  5. Changed5 schema fields changed
    • addedInput schema / properties / catalog_version_id / description
      Added value: +"The chosen package's catalogVersionId from search_services."
    • addedInput schema / properties / price_source / description
      Added value: +"The chosen package's priceSource from search_services."
    • addedInput schema / properties / provider_id / description
      Added value: +"The chosen package's providerId from search_services."
    • addedInput schema / properties / provider_package_id / description
      Added value: +"The chosen package's providerPackageId from search_services."
    • addedInput schema / properties / service_details / description
      Added value: +"The chosen package's serviceId from search_services, such as leak-repair. Put the customer's own words in issue_description."
  6. Changed3 schema fields changed
    • addedInput schema / properties / extras
      Added value: +{
      +  "description": "Optional extras from the quote's availableExtras, each id once with a quantity up to its maxQuantity. Each is charged at the operator's price and leaves the visit's length and start as quoted.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "maxLength": 40,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "quantity": {
      +        "maximum": 10,
      +        "minimum": 1,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "quantity"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / availableExtras
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "currency": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "maxQuantity": {
      +        "type": "integer"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "unitAmount": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "name",
      +      "unitAmount",
      +      "maxQuantity",
      +      "currency"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / extras
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "type": "number"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "quantity": {
      +        "type": "number"
      +      },
      +      "unitAmount": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "name",
      +      "quantity",
      +      "unitAmount",
      +      "amount"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  7. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / providerConfirmsTime
      Added value: +{
      +  "type": "boolean"
      +}
  8. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / slotsUnavailableReason
      Added value: +{
      +  "enum": [
      +    "missing_postal_code",
      +    "unknown_postal_code",
      +    "outside_service_area",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  9. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / gst
      Added value: +{
      +  "enum": [
      +    "provider_included",
      +    "not_charged",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / properties / invoicedBy
      Added value: +{
      +  "enum": [
      +    "homejourney"
      +  ],
      +  "type": "string"
      +}
  10. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / cancellationTerms
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  11. Changed1 schema field changed
    • changedInput schema / properties / platform_unit_count / description
      Previous value: -"The platformUnitCount of a launch_guide search result. Omit provider_id and provider_package_id with it."New value: +"Retired: Homejourney no longer offers its own catalog prices, so a launch_guide selection is refused. Leave it out."
  12. Changed11 schema fields changed
    • addedInput schema / properties / customer_info / description
      Added value: +"Optional. The service address (pickup_address for moving), only to list the open arrival times of an operator price."
    • removedInput schema / properties / customer_info / properties / delivery_address
      Removed value: -{
      -  "maxLength": 300,
      -  "minLength": 5,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / properties / delivery_unit_number
      Removed value: -{
      -  "maxLength": 40,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / properties / email
      Removed value: -{
      -  "format": "email",
      -  "maxLength": 254,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / properties / name
      Removed value: -{
      -  "maxLength": 120,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / properties / phone
      Removed value: -{
      -  "maxLength": 40,
      -  "minLength": 8,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / properties / pickup_unit_number
      Removed value: -{
      -  "maxLength": 40,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / properties / unit_number
      Removed value: -{
      -  "maxLength": 40,
      -  "type": "string"
      -}
    • removedInput schema / properties / customer_info / required
      Removed value: -[
      -  "name",
      -  "email",
      -  "phone"
      -]
    • changedInput schema / required
      Previous value: -[
      -  "service_type",
      -  "service_details",
      -  "catalog_version_id",
      -  "price_source",
      -  "scheduled_date",
      -  "singapore_time",
      -  "customer_info"
      -]New value: +[
      +  "service_type",
      +  "service_details",
      +  "catalog_version_id",
      +  "price_source",
      +  "scheduled_date",
      +  "singapore_time"
      +]
    • addedOutput schema / properties / data / properties / slots
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "endSingaporeTime": {
      +        "type": "string"
      +      },
      +      "remaining": {
      +        "type": "integer"
      +      },
      +      "singaporeTime": {
      +        "type": "string"
      +      },
      +      "totalAmount": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "singaporeTime",
      +      "endSingaporeTime",
      +      "totalAmount",
      +      "remaining"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  13. Changed2 schema fields changed
    • addedInput schema / properties / number_of_hours
      Added value: +{
      +  "description": "Hours booked, for an offering priced per hour. The provider may charge a minimum number of hours.",
      +  "maximum": 24,
      +  "minimum": 1,
      +  "type": "number"
      +}
    • addedInput schema / properties / property_size
      Added value: +{
      +  "description": "Home size, for an offering priced by home size. A quote without it names the sizes the provider prices.",
      +  "maxLength": 40,
      +  "minLength": 1,
      +  "type": "string"
      +}
  14. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with them ('does not create a booking row', nothing is charged). It goes well beyond the annotations by disclosing the 2-hour minimum start, the assignment deadline and no-charge cancellation, the refusal codes (start_too_soon, price_changed, invalid_catalog_version, package_unit_count, quote_required), and the slotsUnavailableReason/nextOpenDates branching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the primary instruction and packed with rules that each earn their place, but it is a single dense block with no separators, making the refusal-code and slot-branching sections hard to scan. Slightly longer than necessary given some points are restated (extras quoted twice).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists, the description explains the non-obvious result fields an agent must act on (requested_time_open: unknown, slotsUnavailableReason categories, nextOpenDates window, availableExtras with maxQuantity) and how to recover from each refusal. Nothing needed to call this correctly in either price_source mode appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 55% across 20 parameters, but the description compensates for the highest-risk ones: it explains what customer_info.address unlocks (slot listing), why singapore_time must be an exact start, why number_of_units triggers package_unit_count refusals, and how extras must match availableExtras. Pricing inputs (base_price, total_price, discount_amount) and free-text fields are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (quote a service booking) plus the key scoping fact that it returns a server-revalidated price and 'does not create a booking row'. It also names the sibling it must follow (search_services) and implicitly separates itself from the checkout tools, so an agent can place it precisely in the flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete sequencing: 'Use this after search_services with the selected provider and package identifiers', and instructs re-quoting with extras and with a nextOpenDates date. It never states an explicit when-not (e.g. when to skip straight to checkout), so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources