Skip to main content
Glama

Server Details

Search and book verified independent vacation rentals directly from hosts, with no guest fees.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 17 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clearly distinct purposes across the booking lifecycle (search, availability, quote, request, cancel, retrieve). The one fuzzy boundary is ask_host vs send_message, which are both host-communication tools and could be confused despite descriptions hinting at different backing endpoints. Otherwise selection is unambiguous.

Naming Consistency5/5

All ten tools follow a strict verb_noun snake_case pattern (ask_host, cancel_booking, check_availability, get_booking, get_messages, get_property, get_quote, request_booking, search_stays, send_message). Verb choice is intuitive and predictable across the set.

Tool Count5/5

Ten tools is well within the ideal 3-15 range and each maps to a distinct step in the guest booking flow. No redundant or filler tools appear.

Completeness4/5

The set covers a full guest-side lifecycle: search, property detail, availability, binding quote, booking request, cancel, retrieval, and messaging. Minor gaps exist (no way to list a guest's bookings or modify an existing booking), but agents can work around these via known booking IDs.

Available Tools

10 tools
ask_hostAsk the host a questionAInspect

Send a question the property record and FAQ don't answer. The answer arrives later; tell the guest you'll follow up. Don't include the guest's contact details. Maps to POST /v1/properties/{id}/questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe guest's question, in plain words, up to 500 characters. The host's answer may be added to the listing's FAQ.
property_idYesThe property the question is about.

Output Schema

ParametersJSON Schema
NameRequiredDescription
answerNo
statusNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare a non-destructive write with open-world effects, but the description adds the crucial asynchronous trait (the answer arrives later), the required guest-facing follow-up behavior, and a privacy constraint on the payload. That is meaningful disclosure beyond the annotations, though it does not cover failure modes or what the host sees.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the use condition, then the async/follow-up behavior, then the privacy rule. Each sentence carries distinct, actionable information; even the endpoint mapping is a one-clause addition.

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?

With only two required parameters, an output schema present, and annotations covering the safety profile, the description supplies everything else the agent needs: why to choose this tool, that the result is deferred, and how to handle the guest in the interim.

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

Parameters3/5

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

Schema description coverage is 100%, so both property_id and question are already documented, including the 500-character limit and the note that answers may be added to the FAQ. The description's only added parameter-level guidance is the 'no contact details' content rule, so the baseline 3 applies.

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 (send a question to the host) and immediately scopes it: questions the property record and FAQ do not cover. An agent can distinguish this from send_message and get_property without opening any schema.

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 a clear triggering condition (only when the record and FAQ do not answer it) and two operational rules: tell the guest you will follow up, and exclude the guest's contact details. It stops short of explicitly naming the alternative routing (e.g., send_message for direct contact), so it is strong context rather than full when/when-not/alternative guidance.

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

cancel_bookingCancel a booking or requestA
DestructiveIdempotent
Inspect

Two-step. First call with confirm=false to see what the guest gets back if they cancel now (nothing changes). Tell the guest that refund and get their go-ahead, then call again with confirm=true and expected_refund_cents set to the refund amount from the first call. If the refund changed in between, the call fails with refund_changed instead of cancelling. Refunds go to the guest's card automatically. Pass guest_email (the email the booking was made with) unless you connect with an agent token.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesFalse to preview the refund without changing anything; true to cancel.
booking_idYesThe booking or request to cancel.
guest_emailNoThe email the booking was made with. Needed unless you connect with an agent token.
expected_refund_centsNoRequired when confirm is true: refund.amount from the confirm=false call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
refundNoAn amount in cents with its currency.
bookingNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (destructive, idempotent, openWorld), the description discloses the two-step safety pattern, that the preview is side-effect-free, that refunds go to the guest's card automatically, and a specific failure mode (refund_changed aborts the cancellation). It also covers the auth nuance around guest_email vs. agent token, which annotations do not convey.

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

Conciseness5/5

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

Five tight sentences, front-loaded with 'Two-step.' Every sentence carries operational weight: the preview semantics, the required handoff to the guest, the confirmation call, the failure mode, and the auth exception. No filler or repetition of schema text.

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?

An output schema exists, so return values need no explanation, and the description covers the remaining burden for a destructive mutation: sequencing, side effects, failure behavior, and authentication. Nothing an agent needs to invoke this safely and correctly appears to be 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 100%, so the baseline is 3, but the description adds real meaning: expected_refund_cents must be the refund.amount from the prior confirm=false call, and passing a stale value triggers refund_changed. It also clarifies guest_email is the email the booking was made with and is only skippable with an agent token.

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

Purpose4/5

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

The description states a specific verb+resource (cancel a booking or request) and immediately frames it as a two-step preview-then-commit operation. It is unambiguous about what the tool does, though it never explicitly contrasts itself with siblings like get_booking or request_booking, leaving that differentiation to the reader.

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?

It gives clear procedural when-to-use guidance: call first with confirm=false to preview (nothing changes), get the guest's go-ahead, then call with confirm=true. It also states the guest_email requirement and the agent-token exception. What's missing is any explicit routing against alternative tools (e.g., when to read a booking instead of cancelling it).

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

check_availabilityCheck a property's calendarA
Read-only
Inspect

Day-by-day availability and indicative nightly prices for up to 180 days. Cached; use get_quote to confirm. Useful when the guest's dates are flexible. Maps to GET /v1/properties/{id}/availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesExclusive
fromYesFirst night to check, YYYY-MM-DD.
property_idYesThe property's id, from search_stays.

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysNo
timezoneNo
property_idNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds genuinely new behavior: results are cached, prices are indicative rather than binding, and there is a 180-day ceiling. That cached/stale caveat is exactly the kind of operational detail annotations cannot express.

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

Conciseness5/5

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

Three short sentences, zero filler. Return content is front-loaded, followed by the usage trigger, the confirmation caveat, and the endpoint mapping last.

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?

An output schema exists, so return values need no explanation. Between the annotations, the 100%-covered schema, the caching/indicative-price caveat and the get_quote pointer, an agent has everything needed to call this correctly for a flexible-date search.

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 100%, so the baseline is 3, but the description adds a real parameter constraint not present in the schema: the from/to window cannot exceed 180 days. The schemas own notes (from = first night, to = exclusive) remain the source of truth for semantics.

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

Purpose4/5

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

The description names the resource (day-by-day availability plus indicative nightly prices) and scopes it precisely to 180 days, so an agent knows exactly what comes back. It partially differentiates from siblings by pointing at get_quote, but does not clarify its relationship to get_property or search_stays, which also touch the same property entity.

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?

'Useful when the guest's dates are flexible' gives a clear positive trigger, and 'use get_quote to confirm' routes the agent to the alternative for firm pricing. It stops short of an explicit when-not (e.g. 'do not use this for a confirmed booking price'), so 4 rather than 5.

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

get_bookingGet booking statusC
Read-only
Inspect

Status, amounts, refund schedule, guest ID verification link, and when arrival details will be sent. Maps to GET /v1/bookings/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_idYesThe booking's id, from request_booking (starts with bkg_).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
totalNoAn amount in cents with its currency.
statusNoe.g. awaiting_payment, pending_host_confirmation, confirmed, declined, cancelled.
check_inNo
check_outNo
property_idNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that responses include a guest ID verification link and the timing of arrival details—useful context—but these are return-value facts already carried by the existing output schema, so added value is limited.

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?

Two compact sentences/fragments with no filler, and the field list is front-loaded. It loses a point only because the leading fragment reads as a value list rather than an action, which forces the reader to reconstruct the purpose.

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

Completeness3/5

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

For a single-parameter read with an output schema and read-only annotations, the description is adequate but thin. Because the output schema already documents the returned fields it enumerates, the description should instead have spent its words on when to use it, whether the data is live/cached, and what happens for unknown or cancelled booking IDs.

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

Parameters3/5

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

Only one parameter, and the schema fully documents it (100% coverage) including the bkg_ prefix and its origin in request_booking. The description's endpoint mapping corroborates that booking_id is a path identifier but adds no new format or constraint detail.

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

Purpose3/5

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

The description never states a verb for the action; it is a list of returned fields plus the endpoint mapping GET /v1/bookings/{id}. That endpoint does imply retrieval of a single booking, but the agent must infer it, and there is no explicit differentiation from siblings like get_quote or check_availability beyond the endpoint path.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus alternatives such as get_quote, check_availability, or get_messages. The only implicit cue is the booking_id parameter description pointing back to request_booking, which suggests post-booking use but is not guidance.

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

get_messagesRead messages with the hostA
Read-only
Inspect

The conversation between the guest and the host about a booking, oldest first (including the guest's note with the request and the host's note when accepting or declining). Use it to relay the host's replies. Pass guest_email (the email the booking was made with) unless you connect with an agent token.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_idYesThe booking's id, from request_booking (starts with bkg_).
guest_emailNoThe email the booking was made with. Needed unless you connect with an agent token.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messagesNo

TDQS

A4.1/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, so safety is covered. The description adds genuinely useful context beyond that: the chronological ordering, the inclusion of the guest's request note and the host's accept/decline note, and the auth shortcut for agent tokens.

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 resource and its ordering, then the intended use, then the parameter caveat. Three tight clauses with no padding, though the guest_email instruction duplicates the schema wording.

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

Completeness4/5

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

An output schema exists, so return-format detail is unnecessary. The description covers scope, ordering, and the auth requirement, which is enough to call the tool correctly; only an explicit pointer to the sibling write tool is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented with their formats and the bkg_ prefix. The description's note about guest_email largely restates the schema's 'Needed unless you connect with an agent token', adding no new syntax or format detail.

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 — reading the guest/host conversation about a booking — and even specifies ordering ('oldest first') and the included notes. An agent can tell this apart from send_message/ask_host (which write) and get_booking (which returns booking data, not the thread).

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?

'Use it to relay the host's replies' gives a clear context for invocation, and the guest_email/agent-token note signals the auth conditions. It stops short of explicitly naming send_message as the counterpart for replying, so it is context rather than full when/when-not routing.

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

get_propertyGet property detailsA
Read-only
Inspect

Full record for one property: beds by room, amenities with details, access and stairs, rules, host FAQ, policies, and verification status. The location is approximate on purpose: the exact address and the host's direct contact details are not in the record and are sent to the guest after a confirmed booking, so if asked, say that rather than that they are missing. Maps to GET /v1/properties/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
property_idYesThe property's id, from search_stays (starts with prop_).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
faqNo
rulesNo
listingNo
capacityNo
locationNo
policiesNo
amenitiesNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnly/non-destructive annotations, it discloses a non-obvious data limitation — the location is deliberately approximate and the exact address plus host direct contact are withheld until a confirmed booking — and prescribes the correct phrasing so the agent does not report them as missing. That is exactly the kind of behavioral context annotations cannot convey.

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-loads the payload contents, then the important address caveat, then the endpoint mapping. The enumerated content list is slightly long but each clause maps to real record sections, and no sentence is filler.

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?

With an output schema present the return shape need not be restated, and the description covers scope, the data-gap gotcha, and the underlying endpoint for a single-parameter read tool. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

There is one parameter with 100% schema description coverage, and the schema already says the id comes from search_stays and starts with prop_. The description adds nothing about the parameter, so the baseline 3 for high coverage applies.

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 ('Full record for one property') and enumerates what the record contains (beds by room, amenities, access/stairs, rules, policies, verification status), which clearly separates it from search_stays and the booking/messaging siblings. The mapping to GET /v1/properties/{id} removes any remaining ambiguity.

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?

Usage context is clear: it is the single-property detail fetch whose id comes from search_stays, and it adds an explicit instruction for how to answer when the exact address is requested. It does not name a when-not condition or a competing sibling, but none of the listed siblings is a real alternative for this lookup.

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

get_quoteGet a binding priceA
Read-onlyIdempotent
Inspect

Itemized, binding price for exact dates and party, after re-checking the host's live calendars. Valid 10 minutes. Returns house rules and an exact refund schedule to show the guest. Does not reserve the dates. Maps to POST /v1/properties/{id}/quotes.

ParametersJSON Schema
NameRequiredDescriptionDefault
petsNoNumber of pets. Default 0. Service animals don't count.
adultsYesNumber of adults (at least 1).
infantsNoNumber of infants under 2. Default 0.
check_inYesArrival date, YYYY-MM-DD.
childrenNoNumber of children aged 2 to 12. Default 0.
check_outYesDeparture date, YYYY-MM-DD.
property_idYesThe property's id, from search_stays.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
totalNoAn amount in cents with its currency.
nightsNo
paymentNo
check_inNo
check_outNo
expires_atNo
line_itemsNo
house_rulesNo
property_idNo
booking_modeNo
refund_scheduleNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description adds genuinely useful traits: a 10-minute validity window, that it returns house rules and a refund schedule, and that it does not hold the dates. These are the facts an agent needs before quoting a guest. It does not mention rate limits or what happens if the calendar re-check fails.

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

Conciseness5/5

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

Four short sentences, each carrying distinct information, with the core purpose front-loaded. The trailing API mapping is compact and does not crowd out the important behavioral facts.

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?

For a read-only quote tool with an output schema already present, the description covers purpose, freshness, validity window, what is returned, and the crucial non-reservation caveat. Nothing an agent needs to call it or set guest expectations is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (property_id, dates, adults, children, infants, pets) is already documented in the schema. The description adds only the high-level notion of 'party' and 'exact dates' without new parameter-level meaning, so the baseline 3 applies.

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 ('Itemized, binding price') with the exact scoping ('for exact dates and party'), which cleanly separates it from check_availability (availability only) and request_booking (which reserves). An agent can route correctly without opening the schema.

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 clear context: it re-checks the host's live calendars, so it is the pricing step after availability, and 'Does not reserve the dates' implies the follow-up is a booking request. It stops short of naming request_booking as the alternative, so the when-to-use guidance is strong but not fully explicit.

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

request_bookingRequest to bookAInspect

Request a stay from a quote. Set house_rules_accepted only after the guest has seen and agreed to the quote's house_rules. If the quote's payment.collected_by is "threshold", the booking starts as awaiting_payment and the response includes payment_url: the guest must open payment_url and add a card within 60 minutes, after which the host gets the request (status pending_host_confirmation). Otherwise the request goes to the host immediately and the host arranges payment after accepting. Returns the booking and a status link to give the guest; poll get_booking for changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe guest's email: confirmations, the payment link and the host's messages go there.
phoneNoThe guest's phone number in international format, e.g. +15551234567. Optional.
quote_idYesThe quote being booked, from get_quote (starts with quo_).
last_nameYesThe guest's last name.
first_nameYesThe guest's first name.
special_requestsNoAnything the guest wants the host to know, in their words (arrival time, a question). Optional, up to 500 characters.
house_rules_acceptedYesTrue only after the guest has seen and agreed to the quote's house_rules.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bookingNoThe booking.
payment_urlNoWhen present, the guest opens this to add a card; the request reaches the host only after that.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare this is a non-destructive open-world write; the description goes far beyond that by disclosing two distinct post-call state machines (awaiting_payment → pending_host_confirmation, or straight to host), the hard 60-minute card window, the payment_url hand-off obligation, and who collects payment in each branch.

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

Conciseness5/5

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

Front-loads the action, then the consent rule, then the conditional payment path, then the return/polling note. Every sentence carries operational information; nothing is repeated from the schema or annotations.

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?

For a 7-param booking mutation with an output schema, the description covers the precondition, the divergent async flows, the guest-facing deadline, and the polling tool for status changes. Nothing an agent needs to call it correctly or set expectations downstream is 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 100%, so most parameter meaning is already structured (email routing, phone format, quote_id prefix, special_requests length). The description still adds real semantics for the trickiest field, house_rules_accepted: it must only be true after the guest has reviewed and agreed to the quote's house_rules, which is an ordering constraint the schema alone does not convey.

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+resource ('Request a stay from a quote') and scopes it to a quote object, which cleanly separates it from get_quote, check_availability, and search_stays. An agent can pick this tool without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit preconditions (must come from a quote; house_rules_accepted only after the guest has seen and agreed to the rules) and names the follow-up alternative: 'poll get_booking for changes' rather than re-calling this tool. It even branches usage on quote state (payment.collected_by == 'threshold' vs. otherwise).

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

search_staysSearch vacation rentalsA
Read-only
Inspect

Find verified independent vacation rentals. Filters are strict: every listed amenity must be present. With dates, results include a cached availability signal and an indicative all-in total (no guest service fee). Maps to GET /v1/search.

ParametersJSON Schema
NameRequiredDescriptionDefault
petsNoNumber of pets. Only places that allow that many are returned. Service animals don't count as pets.
limitNoMost results to return, 1 to 50. Default 8.
placeNoTown and state/country, e.g. 'Asheville, NC'. Use near_lat/near_lng instead when you have coordinates.
adultsNoNumber of adults. Default 2.
infantsNoNumber of infants under 2.
check_inNoArrival date, YYYY-MM-DD. With check_out, only places free for the whole stay are returned, with an indicative total.
childrenNoNumber of children aged 2 to 12.
near_latNoLatitude to search around, with near_lng. Use instead of place when you have coordinates.
near_lngNoLongitude to search around, with near_lat.
amenitiesNoAmenity codes, e.g. hot_tub, wifi, ev_charger, dedicated_workspace, pool, fireplace_wood.
check_outNoDeparture date, YYYY-MM-DD (the morning the guests leave).
radius_kmNoHow far from near_lat/near_lng to search, in kilometres. Default 30.
instant_onlyNoTrue to return only places that confirm instantly, without waiting for the host.
min_bedroomsNoFewest bedrooms the place must have.
max_total_usdNoMaximum all-in total in dollars. Requires dates.
min_wifi_mbpsNoLowest Wi-Fi download speed needed, in megabits per second.
step_free_entranceNoTrue to return only places with a step-free way in.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsNo
next_cursorNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, closed-world behavior, yet the description adds real context: amenity filters are conjunctive, and supplying dates yields a cached (not live) availability signal plus an indicative all-in total excluding guest service fees. That 'cached'/'indicative' qualifier is exactly the kind of caveat an agent needs and is not in the annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with purpose, then the two highest-value behavioral facts (strict amenity matching, date-driven signals). Nothing is padded; even the endpoint mapping is a single clause.

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

Completeness4/5

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

An output schema exists, so return-value explanation is not owed. For a 17-parameter, zero-required search tool the description covers purpose, filter strictness and date behavior adequately, though it omits any note on empty-result behavior or how limit/pagination affects result shaping.

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 100%, so the baseline is 3, but the description adds semantics the schema lacks: every listed amenity must be present (AND, not OR), and the interaction between dates and the returned total/availability signal. It does not, however, clarify priority between place and near_lat/near_lng or radius behavior beyond what the schema states.

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

Purpose4/5

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

States a specific verb and resource ('Find verified independent vacation rentals') and the word 'search' plus 'verified independent' distinguishes it from the single-property sibling get_property. It never names a sibling or explicitly contrasts with check_availability/get_quote, so it stops short of full differentiation.

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

Usage Guidelines3/5

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

Usage is implied by the search framing and by 'With dates, results include a cached availability signal', which hints when date filters are worthwhile. There is no explicit when-to-use/when-not guidance and no routing to alternatives such as check_availability or get_property.

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

send_messageMessage the hostAInspect

Send a message to the host on the guest's behalf, e.g. a question about check-in or a late arrival. Only send what the guest asked you to say. The host is emailed and replies appear in get_messages. Open from the request until two weeks after check-out.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe message to the host, in the guest's words, up to 2,000 characters.
booking_idYesThe booking the message is about.
guest_emailNoThe email the booking was made with. Needed unless you connect with an agent token.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNoThe message.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses the side effect that the host is emailed and that replies surface via get_messages, plus the lifespan of the channel. That is genuinely useful behavioral context an agent cannot get from the structured fields, though it says nothing about delivery failure or rate limiting.

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?

Three short sentences, front-loaded with the purpose and ending with the channel's lifetime; each sentence carries distinct information. The window phrasing ('Open from the request until two weeks after check-out') is slightly terse but not wasteful.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description still usefully says where replies appear. Combined with annotations covering the safety profile, the only real hole is the unresolved distinction from ask_host.

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

Parameters3/5

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

Schema description coverage is 100%, so booking_id, body and guest_email are already documented in the schema, and the baseline is 3. The description only reinforces the 'in the guest's words' intent for body and adds no syntax, format or conditional requirements beyond the schema.

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

Purpose4/5

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

States a specific verb+resource ('Send a message to the host') and adds concrete examples (check-in question, late arrival), so the agent knows exactly what the tool produces. It does not, however, distinguish itself from the sibling 'ask_host', whose name implies a highly similar action, and that overlap is left unresolved.

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

Usage Guidelines3/5

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

It gives a content constraint ('Only send what the guest asked you to say') and an availability window ('Open from the request until two weeks after check-out'), which are real usage conditions. But it never states when to pick this over ask_host or how to handle a guest who wants something broader, so routing between the two messaging siblings is left to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updates
    • Changedask_host3 fields changed
      • addedInput schema / properties / property_id / description
        Added value: +"The property the question is about."
      • addedInput schema / properties / question / description
        Added value: +"The guest's question, in plain words, up to 500 characters. The host's answer may be added to the listing's FAQ."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The question as passed to the host, and an answer if the listing already has one.",
        +  "properties": {
        +    "answer": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcancel_booking4 fields changed
      • addedInput schema / properties / booking_id / description
        Added value: +"The booking or request to cancel."
      • addedInput schema / properties / confirm / description
        Added value: +"False to preview the refund without changing anything; true to cancel."
      • addedInput schema / properties / guest_email / description
        Added value: +"The email the booking was made with. Needed unless you connect with an agent token."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "With confirm=false, what the guest would get back if they cancelled now; with confirm=true, the cancelled booking and the refund.",
        +  "properties": {
        +    "booking": {
        +      "type": "object"
        +    },
        +    "refund": {
        +      "description": "An amount in cents with its currency.",
        +      "properties": {
        +        "amount": {
        +          "type": "integer"
        +        },
        +        "currency": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcheck_availability3 fields changed
      • addedInput schema / properties / from / description
        Added value: +"First night to check, YYYY-MM-DD."
      • addedInput schema / properties / property_id / description
        Added value: +"The property's id, from search_stays."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Night-by-night availability.",
        +  "properties": {
        +    "days": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "One night.",
        +        "properties": {
        +          "available": {
        +            "type": "boolean"
        +          },
        +          "date": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "property_id": {
        +      "type": "string"
        +    },
        +    "timezone": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_booking2 fields changed
      • addedInput schema / properties / booking_id / description
        Added value: +"The booking's id, from request_booking (starts with bkg_)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The booking.",
        +  "properties": {
        +    "check_in": {
        +      "type": "string"
        +    },
        +    "check_out": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "property_id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "e.g. awaiting_payment, pending_host_confirmation, confirmed, declined, cancelled.",
        +      "type": "string"
        +    },
        +    "total": {
        +      "description": "An amount in cents with its currency.",
        +      "properties": {
        +        "amount": {
        +          "type": "integer"
        +        },
        +        "currency": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_messages3 fields changed
      • addedInput schema / properties / booking_id / description
        Added value: +"The booking's id, from request_booking (starts with bkg_)."
      • addedInput schema / properties / guest_email / description
        Added value: +"The email the booking was made with. Needed unless you connect with an agent token."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The conversation with the host, oldest first.",
        +  "properties": {
        +    "messages": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "One message.",
        +        "properties": {
        +          "body": {
        +            "type": "string"
        +          },
        +          "from": {
        +            "description": "guest or host",
        +            "type": "string"
        +          },
        +          "sent_at": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_property2 fields changed
      • addedInput schema / properties / property_id / description
        Added value: +"The property's id, from search_stays (starts with prop_)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Everything public about one place: description, rooms and beds, amenities, access, rules, policies, photos and the host's answers to common questions.",
        +  "properties": {
        +    "amenities": {
        +      "type": "array"
        +    },
        +    "capacity": {
        +      "type": "object"
        +    },
        +    "faq": {
        +      "type": "array"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "listing": {
        +      "type": "object"
        +    },
        +    "location": {
        +      "type": "object"
        +    },
        +    "policies": {
        +      "type": "object"
        +    },
        +    "rules": {
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_quote8 fields changed
      • addedInput schema / properties / adults / description
        Added value: +"Number of adults (at least 1)."
      • addedInput schema / properties / check_in / description
        Added value: +"Arrival date, YYYY-MM-DD."
      • addedInput schema / properties / check_out / description
        Added value: +"Departure date, YYYY-MM-DD."
      • addedInput schema / properties / children / description
        Added value: +"Number of children aged 2 to 12. Default 0."
      • addedInput schema / properties / infants / description
        Added value: +"Number of infants under 2. Default 0."
      • addedInput schema / properties / pets / description
        Added value: +"Number of pets. Default 0. Service animals don't count."
      • addedInput schema / properties / property_id / description
        Added value: +"The property's id, from search_stays."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "A binding price for the stay, valid until expires_at.",
        +  "properties": {
        +    "booking_mode": {
        +      "type": "string"
        +    },
        +    "check_in": {
        +      "type": "string"
        +    },
        +    "check_out": {
        +      "type": "string"
        +    },
        +    "expires_at": {
        +      "type": "string"
        +    },
        +    "house_rules": {
        +      "type": "array"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "line_items": {
        +      "type": "array"
        +    },
        +    "nights": {
        +      "type": "integer"
        +    },
        +    "payment": {
        +      "type": "object"
        +    },
        +    "property_id": {
        +      "type": "string"
        +    },
        +    "refund_schedule": {
        +      "type": "array"
        +    },
        +    "total": {
        +      "description": "An amount in cents with its currency.",
        +      "properties": {
        +        "amount": {
        +          "type": "integer"
        +        },
        +        "currency": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrequest_booking8 fields changed
      • addedInput schema / properties / email / description
        Added value: +"The guest's email: confirmations, the payment link and the host's messages go there."
      • addedInput schema / properties / first_name / description
        Added value: +"The guest's first name."
      • addedInput schema / properties / house_rules_accepted / description
        Added value: +"True only after the guest has seen and agreed to the quote's house_rules."
      • addedInput schema / properties / last_name / description
        Added value: +"The guest's last name."
      • addedInput schema / properties / phone / description
        Added value: +"The guest's phone number in international format, e.g. +15551234567. Optional."
      • addedInput schema / properties / quote_id / description
        Added value: +"The quote being booked, from get_quote (starts with quo_)."
      • addedInput schema / properties / special_requests / description
        Added value: +"Anything the guest wants the host to know, in their words (arrival time, a question). Optional, up to 500 characters."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "A booking or booking request.",
        +  "properties": {
        +    "booking": {
        +      "additionalProperties": true,
        +      "description": "The booking.",
        +      "properties": {
        +        "check_in": {
        +          "type": "string"
        +        },
        +        "check_out": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "property_id": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "description": "e.g. awaiting_payment, pending_host_confirmation, confirmed, declined, cancelled.",
        +          "type": "string"
        +        },
        +        "total": {
        +          "description": "An amount in cents with its currency.",
        +          "properties": {
        +            "amount": {
        +              "type": "integer"
        +            },
        +            "currency": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "payment_url": {
        +      "description": "When present, the guest opens this to add a card; the request reaches the host only after that.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_stays16 fields changed
      • addedInput schema / properties / adults / description
        Added value: +"Number of adults. Default 2."
      • addedInput schema / properties / check_in / description
        Added value: +"Arrival date, YYYY-MM-DD. With check_out, only places free for the whole stay are returned, with an indicative total."
      • addedInput schema / properties / check_out / description
        Added value: +"Departure date, YYYY-MM-DD (the morning the guests leave)."
      • addedInput schema / properties / children / description
        Added value: +"Number of children aged 2 to 12."
      • addedInput schema / properties / infants / description
        Added value: +"Number of infants under 2."
      • addedInput schema / properties / instant_only / description
        Added value: +"True to return only places that confirm instantly, without waiting for the host."
      • addedInput schema / properties / limit / description
        Added value: +"Most results to return, 1 to 50. Default 8."
      • addedInput schema / properties / min_bedrooms / description
        Added value: +"Fewest bedrooms the place must have."
      • addedInput schema / properties / min_wifi_mbps / description
        Added value: +"Lowest Wi-Fi download speed needed, in megabits per second."
      • addedInput schema / properties / near_lat / description
        Added value: +"Latitude to search around, with near_lng. Use instead of place when you have coordinates."
      • addedInput schema / properties / near_lng / description
        Added value: +"Longitude to search around, with near_lat."
      • addedInput schema / properties / pets / description
        Added value: +"Number of pets. Only places that allow that many are returned. Service animals don't count as pets."
      • changedInput schema / properties / radius_km / default
        Previous value: -25New value: +30
      • addedInput schema / properties / radius_km / description
        Added value: +"How far from near_lat/near_lng to search, in kilometres. Default 30."
      • addedInput schema / properties / step_free_entrance / description
        Added value: +"True to return only places with a step-free way in."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Matching places, best match first.",
        +  "properties": {
        +    "next_cursor": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "description": "A place.",
        +        "properties": {
        +          "bedrooms": {
        +            "type": "integer"
        +          },
        +          "booking_mode": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "indicative_total": {
        +            "description": "An amount in cents with its currency.",
        +            "properties": {
        +              "amount": {
        +                "type": "integer"
        +              },
        +              "currency": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "locality": {
        +            "type": "string"
        +          },
        +          "max_guests": {
        +            "type": "integer"
        +          },
        +          "region": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "verified": {
        +            "type": "boolean"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsend_message4 fields changed
      • addedInput schema / properties / body / description
        Added value: +"The message to the host, in the guest's words, up to 2,000 characters."
      • addedInput schema / properties / booking_id / description
        Added value: +"The booking the message is about."
      • addedInput schema / properties / guest_email / description
        Added value: +"The email the booking was made with. Needed unless you connect with an agent token."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The message as sent.",
        +  "properties": {
        +    "message": {
        +      "additionalProperties": true,
        +      "description": "The message.",
        +      "properties": {
        +        "body": {
        +          "type": "string"
        +        },
        +        "sent_at": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
  2. 10 tool updates
    • First observedask_host
    • First observedcancel_booking
    • First observedcheck_availability
    • First observedget_booking
    • First observedget_messages
    • First observedget_property
    • First observedget_quote
    • First observedrequest_booking
    • First observedsearch_stays
    • First observedsend_message

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources