Skip to main content
Glama

LockTrip Hotels

Server Details

Search hotels worldwide, compare rooms, prices and cancellation terms, then get a link to book.

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
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.4/5.0

Scored across 17 tools

Disambiguation5/5

Tools occupy distinct steps or resources across discovery, booking, payment, and post-booking management. Potentially overlapping tools are explicitly separated: the two consumer payment options differ by rail and session requirements, while the partner finance tools distinguish live statement rows, issued monthly documents, and bank-transfer settlements.

Naming Consistency4/5

All tools use readable snake_case, and most follow a consistent verb_noun pattern such as cancel_booking, prepare_booking, and list_settlements. hotel_search and guest_login deviate from the otherwise predominantly verb-led convention, and get_payment_url is less parallel to create_checkout than their related behavior suggests.

Tool Count4/5

Seventeen tools is slightly above the usual ideal range, but the breadth is reasonable for end-to-end hotel booking plus partner credit-line administration. Each tool appears to earn its place, with no obvious redundant utilities or excessive fragmentation.

Completeness5/5

The surface covers location discovery, asynchronous availability search, hotel and room details, cancellation-policy checks, booking preparation, consumer payment, partner confirmation, and booking retrieval and cancellation. Partner statement, document, and settlement tools also complete the finance workflows, leaving no obvious dead end in the supported lifecycle.

Available Tools

17 tools
cancel_bookingCancel BookingA
Destructive
Inspect

Cancels an existing booking. Required: bookingId (from list_bookings) and the boolean confirmed; optional reason. This is a two-step safety flow: calling with confirmed:false does NOT cancel and returns only a 'not confirmed' acknowledgement (it does NOT return fees or refund amounts — read those first from get_booking_details); call again with confirmed:true to actually submit the cancellation. On success the response includes cancellationFee + cancellationFeeCurrency when the supplier reported a charged fee (absent means none was reported, not zero); refunds are processed separately. When the cancellation is not accepted, failureReason is one of NOT_FOUND, AFTER_CHECK_IN, NOT_CANCELLABLE_STATUS, SUPPLIER_NOT_CONFIRMED (submitted, under review: do not rebook or retry) or ERROR (not processed: the booking was not cancelled; try again later or contact support). Needs a registered LockTrip account session; guest sessions cannot cancel bookings. Without a signed-in session, pass the user's email instead: LockTrip emails them a sign-in link to their bookings on locktrip.com, and the result has magicLinkSent: true (nothing is shown or changed in this chat). Returns success and a message. This is a destructive, terminal action — confirm with the user before calling with confirmed:true.

NameRequiredDescriptionDefault
emailNoThe user's LockTrip account email. Needed only when there is no signed-in session: LockTrip then emails that address a sign-in link to the user's bookings on locktrip.com (the bookings are not shown in this chat).
reasonNoOptional cancellation reason
bookingIdYesBooking ID to cancel
confirmedYesSet true to confirm cancellation
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructive/not-readOnly; the description goes far beyond, disclosing that `confirmed:false` is a no-op, that absent `cancellationFee` means "not reported" rather than zero, that refunds are separate, and the full `failureReason` taxonomy including the do-not-retry `SUPPLIER_NOT_CONFIRMED` case. Session and guest-session constraints are also surfaced.

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?

It is a single dense block, but front-loaded with the action and required params before the safety flow and edge cases. Nearly every clause carries information, though the `email` magic-link mechanics are explained here and again in the schema, and parentheses make it heavier than ideal.

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 destructive terminal action, the description covers authentication prerequisites, the confirmation gate, success payload (`cancellationFee`, `success`, `message`), and every failure branch. No output schema exists, yet return semantics are described sufficiently for correct follow-up behavior.

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 would be 3, but the description adds real meaning beyond it: the non-obvious no-op semantics of `confirmed:false`, the fallback role of `email` when no session exists, and the optionality of `reason`. Only `sessionToken` behavior is left entirely 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 ("Cancels an existing booking") and immediately frames the scope via the required `bookingId`, clearly separating it from siblings like `get_booking_details` and `check_cancellation_policy`. An agent can identify both the action and the object 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 Guidelines5/5

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

Explicitly prescribes the two-step flow (`confirmed:false` first, then `confirmed:true`) and names `get_booking_details` as the place to read fees before calling. It also gives an alternative path for unauthenticated sessions (`email` magic link) and instructs the agent to confirm with the user before the terminal call.

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

check_cancellation_policyCheck Cancellation PolicyA
Read-only
Inspect

Returns detailed cancellation terms for one or more room packages before booking. Required: searchKey, hotelId, and packageIds[] — pass the package UUID WITHOUT the _hotelId suffix, i.e. quoteId.split('_')[0]. Passing the full quoteId here fails with a misleading SESSION_EXPIRED even on a live session, because the policy lookup matches the bare UUID. Returns policies[], each with packageId, isRefundable, freeCancellationUntil, and fees[] (fromDate, amount, currency). currency is the supplier's own denomination for that penalty and is OMITTED, never guessed, when the supplier does not state one — so read the amount as unpriced if it is absent rather than assuming your search currency. No authentication required. Informational only — use it to confirm the refund/penalty terms with the user, then continue with prepare_booking.

NameRequiredDescriptionDefault
hotelIdYesHotel ID
searchKeyYesSearch key
packageIdsYesPackage IDs to check

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial behavior beyond the readOnly/destructive annotations: it warns that a wrong argument shape produces a misleading SESSION_EXPIRED even on a live session, states no authentication is required, and explains the currency-omission semantics of the response. This is exactly the invisible failure mode an agent needs.

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 purpose, then the argument trap, then return shape, then the currency caveat, then auth and usage. Each sentence carries non-redundant information despite the density.

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?

No output schema exists, yet the description enumerates the returned policies[] fields and how to interpret an absent currency. An agent has everything needed to call it and read the result correctly.

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

Parameters5/5

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

Despite 100% schema coverage, the schema only says 'Package IDs to check'; the description adds the critical transform — pass the bare UUID from quoteId.split('_')[0], not the full quoteId — which changes whether the call succeeds at all.

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 ('Returns detailed cancellation terms for one or more room packages') plus a temporal scope ('before booking'). This is clearly distinguishable from siblings like prepare_booking or get_booking_details.

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 ('before booking') and an explicit next step ('continue with prepare_booking'), and labels the tool 'Informational only'. It does not name a competing tool to avoid, but no sibling performs policy lookup, so the guidance is sufficient.

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

confirm_bookingConfirm Hotel BookingA
Destructive
Inspect

Confirms and finalizes a booking using a B2B credit line — PARTNER ACCOUNTS ONLY. Guests cannot use this; ordinary consumers must instead pay via create_checkout (recommended) or get_payment_url. Required: bookingInternalId and quoteId (both from prepare_booking); paymentMethod defaults to CREDIT_LINE. REQUIRES A B2B PARTNER SESSION with a credit line; a guest_login session has no credit line and is rejected. Returns accepted and message, plus a voucherUrl on success. On accepted:false, READ serviceUnavailable: if it is absent the credit-line service gave a real verdict (insufficient balance, inactive line) and the answer will NOT change on retry — tell the user and stop; if it is true the credit-line service was unreachable, which is a system fault and not a decision about their credit. Even then do NOT blindly retry: the reservation may already have been applied — re-read the booking with get_booking_details first. Note also that accepted:true means the credit line was charged and the booking accepted, but the supplier reservation is completed asynchronously afterwards.

NameRequiredDescriptionDefault
quoteIdYesQuote ID used in prepare_booking
sessionTokenNoOptional guest-checkout token returned by `guest_login`.
paymentMethodNoPayment method (default: CREDIT_LINE for B2B)
bookingInternalIdYesBooking ID from prepare_booking

TDQS

A4.6/5.0
Behavior5/5

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

The annotations declare destructiveHint=true and readOnlyHint=false, so the mutation is already signalled; the description goes well beyond that by explaining that the credit line is charged, that supplier reservation completes asynchronously, that a guest_login session is rejected, and how to read accepted:false together with serviceUnavailable to distinguish a real verdict from a system fault. That is exactly the kind of failure/retry semantics an agent cannot infer from the schema.

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?

The most consequential constraint (PARTNER ACCOUNTS ONLY) is front-loaded in the first sentence, followed by requirements, then return values, then error handling. It is dense and slightly long, but nearly every sentence carries operational information; only the retry-adjacent wording is mildly repetitive.

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?

There is no output schema, and the description compensates by naming the returned fields (accepted, message, voucherUrl) and interpreting them, including the async gap between charge and supplier confirmation. For a destructive, state-changing booking tool this covers the decision-relevant surface.

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%, and the description largely restates what the schema already documents — that quoteId and bookingInternalId come from prepare_booking and that paymentMethod defaults to CREDIT_LINE. It adds little new parameter-level meaning, so the baseline of 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?

The description opens with a specific verb+resource ('Confirms and finalizes a booking') and immediately scopes it to B2B credit-line partner accounts. It distinguishes itself from the sibling payment paths by naming create_checkout and get_payment_url as the alternatives for ordinary consumers.

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?

It states explicitly when to use this tool (B2B partner session with a credit line) and when not (guests, ordinary consumers), and routes those excluded users to named alternatives, with create_checkout marked as recommended. It also adds a conditional rule against blind retry after a service fault.

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

create_checkoutCreate CheckoutAInspect

Creates a hosted Revolut payment link for a prepared booking — the RECOMMENDED way for ordinary consumers (no credit line) to pay. Required: bookingId (the preparedBookingId from prepare_booking) and currency (3-letter); optional backUrl and successUrl. REQUIRES A SESSION: pass the token returned by guest_login as the sessionToken argument. Returns a checkoutUrl (valid ~20 minutes), a checkoutToken, and a message. Share the checkoutUrl with the guest to complete payment — the booking is confirmed automatically by webhook once payment succeeds (do not call confirm_booking, which is B2B-only).

NameRequiredDescriptionDefault
backUrlNoCancel/back redirect URL (optional, defaults to locktrip.com)
currencyYes3-letter currency code (e.g. USD, EUR, GBP)
bookingIdYesBooking ID from prepare_booking (preparedBookingId)
successUrlNoSuccess redirect URL (optional)
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds materially more — a session token is required, the returned URL expires in ~20 minutes, and booking confirmation happens asynchronously via webhook rather than through a follow-up call. That is exactly the kind of side-effect and lifecycle information the annotations cannot carry.

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 core action and the recommended-use claim, and every sentence carries information (requirements, return values, follow-up behavior). It is a single dense paragraph with heavy inline backticks, so structure could be tightened, but there is no 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?

There is no output schema, and the description compensates by naming the returned fields (checkoutUrl, checkoutToken, message) and their lifetime. For a non-destructive mutation with a 5-parameter flat schema, the agent has everything needed to call it and interpret the result.

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 baseline is 3, but the description adds real meaning: it identifies bookingId as the `preparedBookingId` from prepare_booking and pins sessionToken to guest_login. It also asserts a session is REQUIRED even though the schema labels sessionToken "Optional" — useful but a discrepancy the agent must resolve, which keeps this below 5.

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 ("Creates a hosted Revolut payment link") plus the precondition ("for a prepared booking"), and distinguishes itself from siblings by naming confirm_booking as B2B-only and positioning itself as the consumer payment path. An agent can separate it from get_payment_url and confirm_booking 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?

Explicitly scopes usage to "ordinary consumers (no credit line)" and marks itself as the RECOMMENDED route, which implies the credit-line alternative exists. It also gives a hard exclusion ("do not call `confirm_booking`, which is B2B-only") and a prerequisite workflow (prepare_booking then guest_login), so when-to-use and when-not-to-use are both covered.

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

get_booking_detailsGet Booking DetailsA
Read-only
Inspect

Returns the full details of one existing booking: hotel, dates, rooms, guests, contact person, total price, payment status (PAID, PENDING, or CREDIT_LINE for a confirmed booking charged to a partner credit line, settled per statement via GET /api/b2b/credit-line/statement), and the cancellation policy (including any cancellation fees and the free-cancellation deadline). Required: bookingId (from list_bookings). Needs a registered LockTrip account session; guest sessions cannot view booking details. Without a signed-in session, pass the user's email instead: LockTrip emails them a sign-in link to their bookings on locktrip.com, and the result has magicLinkSent: true (nothing is shown or changed in this chat). Informational only. Use this to read the fee/refund terms BEFORE cancelling, since cancel_booking itself does not return a fee preview.

NameRequiredDescriptionDefault
emailNoThe user's LockTrip account email. Needed only when there is no signed-in session: LockTrip then emails that address a sign-in link to the user's bookings on locktrip.com (the bookings are not shown in this chat).
bookingIdYesBooking ID to retrieve
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description is consistent, explicitly stating "Informational only" and "nothing is shown or changed in this chat." It goes well beyond annotations by disclosing auth requirements, the guest-session restriction, and the non-obvious side effect of the `email` fallback (a sign-in link is emailed, result carries `magicLinkSent: true`) — behavior an agent could not infer from structured fields.

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

Conciseness3/5

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

Front-loaded with the useful part, but it is one dense block with nested parentheticals, including a credit-line settlement endpoint reference that is tangential to reading one booking. Splitting the required-ID, session, and fallback rules into distinct sentences would cost nothing and improve scanability.

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?

There is no output schema, so the description carries the return-value burden itself — and it does, naming each returned field and the enum-like payment statuses. For a 3-parameter read tool with an auth fallback, nothing an agent needs in order to call it correctly or interpret the result 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 baseline is 3. The description adds modest value on top: it states `bookingId` is required and comes from `list_bookings`, and it explains the consequence of `email` (magic link, `magicLinkSent: true`) more concretely than the schema wording. The `sessionToken` parameter is left unaddressed in the description, which keeps it from a 5.

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?

Opens with a specific verb+resource ("Returns the full details of one existing booking") and enumerates the returned fields: hotel, dates, rooms, guests, contact person, total price, payment status, cancellation policy. It is clearly separable from siblings: `list_bookings` is named as the source of the ID, `cancel_booking` is named as the mutation counterpart, and the credit-line statement endpoint is distinguished from the `CREDIT_LINE` status value.

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 when-to-use: read fee/refund terms BEFORE cancelling, with the reason stated ("`cancel_booking` itself does not return a fee preview"). Also covers the precondition branch (signed-in session required, guest sessions cannot view) and the fallback path (pass `email` when unauthenticated), so the agent knows both the trigger and the alternative.

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

get_credit_line_statementGet Credit-Line StatementA
Read-only
Inspect

Returns the signed-in partner's own credit-line statement: balance (the real-time balance due and pending, ALWAYS for the whole credit line, not filtered by the dates), account details (name, currency, creditLimit, periodType), and the booking rows whose due date falls between from and to (default: the current month; at most 93 days). Each row carries bookingReferenceId, hotelName, guestName, dates, amount, currency, bucket (current = due, pending = not due yet), dueDate, paid, outstanding, paymentStatus, settledBy, and lineType (booking, or cancellation_fee for a late-cancellation charge). Read-only. Needs a signed-in partner credit-line account session; guest sessions have no credit line. Takes no account identifier: the credit line is always the caller's own.

NameRequiredDescriptionDefault
toNoLast due date to include, YYYY-MM-DD (at most 93 days after `from`).
fromNoFirst due date to include, YYYY-MM-DD. Pass with `to`; omit both for the current month.
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, yet the description adds substantive behavior beyond them: `balance` is always the whole credit line and is explicitly NOT filtered by the date range, and the tool is scoped to the caller's own credit line with no account parameter. It also discloses the auth prerequisite (partner credit-line session) and the guest-session limitation, which the annotations do not cover.

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?

The definition is a single dense paragraph but the most decision-relevant facts (what it returns, balance-not-filtered caveat, read-only, auth requirement, no account identifier) are front-loaded. The long enumeration of row fields is verbose, though it substitutes for a missing output schema.

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 no output schema available, the description fully spells out the return shape: top-level balance and account fields plus every row field including bucket semantics (`current` vs `pending`) and lineType (`booking` vs `cancellation_fee`). Auth requirements, defaults, and range limits are all covered, leaving nothing an agent needs to call it correctly.

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 both date parameters are already documented, making 3 the baseline. The description still adds meaning by framing `from`/`to` as due-date bounds with a default of the current month and a 93-day cap, and by implying the `sessionToken` is irrelevant here since guest sessions have no credit line.

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?

The description names a specific verb and resource ("Returns the signed-in partner's own credit-line statement") and immediately enumerates the three components returned: balance, account details, and booking rows. Combined with the note that it takes no account identifier, an agent can distinguish this from sibling tools like list_settlements or get_statement_document 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?

It gives clear conditions for use: requires a signed-in partner credit-line session, guest sessions have no credit line, and the date range defaults to the current month with a 93-day ceiling. It stops short of naming alternatives, so it never explicitly says when to prefer get_statement_document or list_settlements instead.

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

get_hotel_detailsGet Hotel DetailsA
Read-only
Inspect

Fetches full descriptive details for one hotel: name, address, coordinates (lat/lng), star rating, description, phone, amenities, photos, and reviews. Required: the NUMERIC hotelId (the same hotel identifier returned in search results, passed as a number); optional language, includeImages (set true to fetch extra photos), and imageLimit (default 20, max 100). Returns a hotel object and optional additionalImages. No authentication required. Informational only — use it to enrich what you show the user before they pick a room.

NameRequiredDescriptionDefault
hotelIdYesHotel ID (numeric, from search results externalId)
languageNoLanguage code for description (default: en)
imageLimitNoMax additional images to fetch (default: 20, max: 100)
includeImagesNoFetch additional hotel images (default: false)

TDQS

A4/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 new behavioral facts: no authentication required, the default/max on image fetching, and what the response contains ('a hotel object and optional additionalImages'). Minor gaps remain on error behavior for a bad hotelId, but this is well above what the annotations supply.

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?

One dense paragraph ordered as purpose, required input, optional inputs, return shape, auth, and usage intent — the most decision-relevant content is front-loaded. Every clause carries a fact; there is no filler or repetition.

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 no output schema, the description correctly discloses the return shape and the optional additionalImages field, plus auth posture and image limits, which is enough to call it confidently. It leaves invalid-ID/error handling unstated, a small omission for a read-only detail fetcher.

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 the parameter baseline is 3. The description reinforces that hotelId must be NUMERIC and traces it to search results, and repeats the imageLimit default/max and includeImages meaning, but this largely duplicates the schema rather than adding new semantics such as what a mismatched language does.

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 opens with a specific verb+resource ('Fetches full descriptive details for one hotel') and enumerates the payload (name, address, coordinates, star rating, description, phone, amenities, photos, reviews), which is far beyond a restatement of the title. It never names the closest sibling, get_hotel_rooms, so an agent must infer the split between 'details' and 'rooms' from the phrase 'before they pick a room'.

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?

'Informational only — use it to enrich what you show the user before they pick a room' gives a clear usage context and implicitly places it before booking/room selection. It stops short of explicit when-not guidance or naming get_hotel_rooms as the alternative when room inventory is actually needed.

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

get_hotel_roomsGet Hotel RoomsA
Read-only
Inspect

Lists the bookable room packages for one hotel. Required: hotelId (from get_search_results), the SAME searchKey from hotel_search, plus startDate, endDate, rooms[], nationality, and regionId (re-supply the same values used in hotel_search); currency is recommended. Returns packages[], each with a quoteId (the priced, bookable offer — format packageId_hotelId), a packageId (the same string as the quoteId; truncate it at the underscore before sending it to check_cancellation_policy), roomName, mealType, price, pricePerNight, totalNights, amenities, and isRefundable. No authentication required. Pass a chosen quoteId to prepare_booking (and to confirm_booking for B2B). To inspect cancellation terms first, pass quoteId.split('_')[0] (the bare package UUID, WITHOUT the _hotelId suffix) to check_cancellation_policy — handing it the full quoteId fails with a misleading SESSION_EXPIRED even on a live session.

NameRequiredDescriptionDefault
roomsYes
endDateYesCheck-out date (YYYY-MM-DD)
hotelIdYesHotel ID from search results
currencyNoCurrency code
regionIdYesRegion ID
searchKeyYesSearch key
startDateYesCheck-in date (YYYY-MM-DD)
nationalityYes2-letter country code

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the read-only/non-destructive profile, and the description goes well beyond: it declares no authentication required, enumerates the returned packages[] fields, documents the quoteId format (packageId_hotelId), and warns that passing the full quoteId to check_cancellation_policy fails with a misleading SESSION_EXPIRED. That failure mode is exactly the kind of non-obvious behavior an agent needs.

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?

Tightly packed with zero filler, and the core purpose is front-loaded before prereqs, return shape, and the cancellation gotcha. It is a single dense paragraph with heavy parenthetical nesting, so a light structural break would aid scanning, but no sentence is disposable.

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 an 8-parameter, 7-required tool with no output schema, the description covers inputs, cross-call state requirements, return fields, downstream routing, and a known error trap. There is no output schema to lean on, and the description supplies the return contract itself.

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 already 88%, so the baseline is 3, but the description adds real meaning on top: where hotelId comes from, that searchKey/dates/rooms/nationality/regionId must match the prior hotel_search call, and that currency is only recommended rather than required. It stops short of per-parameter detail on currency or childrenAges, but the cross-call consistency requirement is the important gap it fills.

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?

Opens with a specific verb and resource ('Lists the bookable room packages for one hotel') that cleanly separates it from hotel_search (search) and get_hotel_details (property metadata) in the sibling set. An agent can tell exactly what this returns 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 Guidelines5/5

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

Gives explicit prerequisites with sources: hotelId from get_search_results, the SAME searchKey from hotel_search, and the same startDate/endDate/rooms/nationality/regionId re-supplied. It also routes onward, naming prepare_booking, confirm_booking (B2B), and check_cancellation_policy with the condition for each.

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

get_payment_urlGet Payment URLAInspect

Creates a hosted Stripe (credit-card) checkout link for a prepared booking — an alternative consumer payment rail to create_checkout (Revolut). Required: bookingId (the preparedBookingId from prepare_booking), currency (3-letter), and backUrl; optional successUrl. REQUIRES A REGISTERED-ACCOUNT SESSION; a guest_login session is REJECTED here (the Stripe rail is not open to guests; use create_checkout for a guest instead). Returns a payment url and a sessionId. Share the url with the guest — the booking is confirmed automatically by webhook once payment succeeds. Prefer create_checkout unless a Stripe card link is specifically needed.

NameRequiredDescriptionDefault
backUrlYesURL to redirect on cancel/back
currencyYesPayment currency code (e.g., USD, EUR)
bookingIdYesBooking ID from prepare_booking (preparedBookingId)
successUrlNoCustom URL to redirect on success
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the registered-account session requirement, the guest rejection path, that the booking is confirmed automatically by webhook once payment succeeds, and that a `url` plus `sessionId` are returned for sharing with the guest. Annotations only say readOnly=false/destructive=false; the description supplies the real behavioral picture.

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 action and the alternative rail, then prerequisites, then auth constraint, then return value. It is dense and every sentence carries information, though the all-caps session warning makes the middle block slightly harder to scan.

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 no output schema, the description correctly states the return values (url, sessionId) and the downstream effect (webhook confirmation). The main gap is the undocumented `sessionToken` parameter, which the description implicitly contradicts by declaring guest sessions invalid here.

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 coverage is 100%, so the schema already documents all five parameters; the description mainly restates required vs optional fields and the `preparedBookingId` origin already noted in the schema. It adds little new meaning and never addresses the `sessionToken` parameter, which sits awkwardly against the 'guest_login is REJECTED here' statement.

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 ('Creates a hosted Stripe (credit-card) checkout link') and immediately frames it as an alternative rail to `create_checkout` (Revolut). An agent can distinguish it from the sibling without opening either 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?

Explicit when-to-use and when-not: 'Prefer `create_checkout` unless a Stripe card link is specifically needed' plus the hard condition that a `guest_login` session is rejected and guests must use `create_checkout` instead. It also names the upstream prerequisite `prepare_booking`.

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

get_search_resultsGet Hotel Search ResultsA
Read-only
Inspect

Returns the hotel results for a running search identified by searchKey (from hotel_search). Results stream in asynchronously, so POLL this tool until the returned searchStatus equals COMPLETED (it is IN_PROGRESS while results are still loading). Supports page (0-indexed on BOTH the request and the response echo — page 0 is the first page and comes back as page 0), size (use a large value like 5000 to get all), filters (minPrice/maxPrice/starRatings/amenities/mealTypes/hotelName/minDiscountScore), sortBy (PRICE_ASC/PRICE_DESC/RATING_DESC/DISTANCE/VALUE_DESC), and currency. Returns hotels[] (each with hotelId, name, starRating, minPrice, originalPrice, currency, discountScore, reviewScore, hasFreeCancellation, isRefundable, etc.), plus totalCount and hasMore. discountScore is LockTrip's value score for the offer: an estimated % below the hotel's usual public price (the figure locktrip.com shows as "X% off"). Higher means better value; 20 or more is a strong deal; 0 or missing means no score. A low price is not the same as good value, so to find the best-value hotels use sortBy VALUE_DESC (highest discountScore first) or filters.minDiscountScore (e.g. 20), and weigh it with starRating and reviewScore. No authentication required. Pass a chosen hotelId together with the SAME searchKey to get_hotel_rooms.

NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
sizeNoResults per page (use 5000 to get all)
sortByNoVALUE_DESC = best value first (highest discountScore)
filtersNo
currencyNoCurrency code from hotel_search (prices are in this currency)
searchKeyYesSearch key from hotel_search

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint annotations, disclosing the asynchronous streaming/polling model, the `searchStatus` lifecycle, the 0-indexed-on-both-request-and-response pagination quirk, and that no authentication is required. These are non-obvious operational behaviors an agent cannot infer from schema or annotations.

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 purpose and polling behavior before parameters, and every sentence carries operational content. It is dense and the extended `discountScore` explanation spans several clauses, edging toward overstuffed but without genuine waste.

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 no output schema, the description fully compensates by enumerating returned fields (`hotels[]`, `totalCount`, `hasMore`) and explaining `discountScore` semantics. Combined with the polling and pagination guidance, an agent has everything needed to call and interpret this tool.

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 83%, so the baseline is already high, but the description still adds meaning: it clarifies that `page` is 0-indexed on both request and response echo, explains `sortBy` VALUE_DESC in value terms, and enumerates the filter keys with examples like minDiscountScore 20. It largely restates `size` (5000) which is already in 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 ('Returns the hotel results for a running search') and ties it to the originating `hotel_search` via `searchKey`. This clearly distinguishes it from `hotel_search`, `get_hotel_details`, and `get_hotel_rooms`, which are named explicitly.

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?

Explicitly instructs the agent to POLL until `searchStatus` equals `COMPLETED` and explains the `IN_PROGRESS` state, which is essential usage guidance. It also names the next step: pass a chosen `hotelId` with the SAME `searchKey` to `get_hotel_rooms`, establishing a clear workflow handoff.

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

get_statement_documentGet Statement DocumentA
Read-only
Inspect

Returns the signed-in partner's own monthly statement of account for period (YYYY-MM) exactly as it was sent to them: format pdf (default) returns the PDF as an embedded file, csv returns the CSV as text in csv. Statements exist only for months already issued; any other month returns RESOURCE_NOT_FOUND. Read-only. Needs a signed-in partner credit-line account session; guest sessions have no credit line.

NameRequiredDescriptionDefault
formatNopdf (default) or csv
periodYesStatement month, YYYY-MM
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.5/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 adds meaningful context beyond that: the pdf-vs-csv output behavior, the RESOURCE_NOT_FOUND condition for unissued months, and the session/credit-line requirement. It stops short of describing pagination or rate limits, but covers the key behavioral traits.

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?

The description is two compact sentences, front-loads the core purpose, and packs format behavior, error conditions, and auth requirements without any redundant wording.

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 no output schema, the description adequately explains what is returned for each format, the error case for invalid months, and the session prerequisites. An agent has everything needed to call it correctly.

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. The description adds value by explaining that `period` is YYYY-MM, that `format` defaults to pdf and produces an embedded file, while csv returns text in the `csv` field — semantics not fully conveyed by the terse schema descriptions.

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 ('Returns the signed-in partner's own monthly statement of account') with scope and format behavior, making it clearly distinct from siblings like get_credit_line_statement and list_settlements.

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?

Explicitly states the conditions under which the tool works: statements exist only for issued months, otherwise RESOURCE_NOT_FOUND, and a signed-in partner credit-line session is required. It does not name alternative tools for other statement types, but the usage context is clear.

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

guest_loginContinue as GuestAInspect

Starts a guest checkout from the user's email only (no password) and returns a session token plus userId, email, and isNewUser; a new email also receives a verification email. Use it when the user wants to book, with the email the user gave for the booking. Pass the returned token as the sessionToken argument to prepare_booking and create_checkout. If the email already belongs to a LockTrip account, no guest session is created: LockTrip emails a sign-in link to that address instead, and the result has magicLinkSent: true and no token. Tell the user to check their email and finish on locktrip.com; do not call guest_login again for that email. A guest session can search, prepare a booking, and pay via create_checkout, but CANNOT list, view or cancel bookings, use get_payment_url, or use confirm_booking. No authentication required to call this tool.

NameRequiredDescriptionDefault
emailYesUser email address for guest registration/login

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries real weight and does: no authentication required, an email is sent on new-email registration, an existing LockTrip account silently switches to a magic-link branch with no token, and the guest session's permissions are enumerated (cannot list, view or cancel bookings, no `get_payment_url`, no `confirm_booking`). The only missing piece is token lifetime or expiry behavior for the session.

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?

The opening sentence front-loads purpose, inputs, and outputs, then branches into the existing-account case and the permission envelope. It is dense and slightly long-winded in the session-limitation sentence, but nearly every clause carries operational value.

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 single-parameter auth entry point with no output schema, the description covers the success shape, the alternate magic-link outcome, downstream tool wiring, and the capability boundary of the resulting session. An agent has everything needed to call it and interpret either response.

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% and there is one parameter, so the schema already documents `email`; the description still adds that it is the email the user provided for the booking and that no password accompanies it, which disambiguates it from a normal credential login. It does not add format validation guidance beyond that.

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?

The description states a specific verb and resource ('Starts a guest checkout from the user's `email` only') and names the exact return payload (token, userId, email, isNewUser). It is clearly separable from siblings like `confirm_booking` or `list_bookings`, which it explicitly says a guest session cannot use.

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?

It gives an explicit trigger ('Use it when the user wants to book, with the email the user gave for the booking'), names the downstream alternatives that consume the token, and adds a when-NOT-to: do not call again if `magicLinkSent` is true for that email. Alternatives and exclusions are both spelled out.

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

list_bookingsList My BookingsA
Read-only
Inspect

Lists the authenticated user's existing bookings, filtered by type: UPCOMING (default), COMPLETED, CANCELLED, or PENDING. Needs a registered LockTrip account session; guest sessions from guest_login cannot list bookings. Without a signed-in session, pass the user's email instead: LockTrip emails them a sign-in link to their bookings on locktrip.com, and the result has magicLinkSent: true (nothing is shown or changed in this chat). Returns bookings[] (each with bookingId, bookingReferenceId, hotelName, checkIn, checkOut, status, roomCount, createdAt, and totalPrice + currency when the booking records a price) plus totalCount (all matching bookings). Optional paging: page (0-based) and size (max 100); omit both for the full list. Pass a bookingId to get_booking_details or cancel_booking.

NameRequiredDescriptionDefault
pageNoPage number, 0-based. Omit page and size for the full list.
sizeNoBookings per page (max 100).
typeNoBooking list filter
emailNoThe user's LockTrip account email. Needed only when there is no signed-in session: LockTrip then emails that address a sign-in link to the user's bookings on locktrip.com (the bookings are not shown in this chat).
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

TDQS

A4.8/5.0
Behavior5/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 stays consistent while adding behavior annotations don't cover: the email fallback sends a magic link on locktrip.com and returns `magicLinkSent: true`, with nothing shown or changed in the chat. It also documents default filtering (UPCOMING) and paging behavior.

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 purpose and filter semantics, then constraints, then return shape, then next-step routing — a logical order with no filler. It runs as one dense block, which is slightly heavy but every clause carries operational information.

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?

There is no output schema, and the description compensates by enumerating the returned `bookings[]` fields, `totalCount`, and the conditional price fields. Combined with the auth prerequisites and paging rules, an agent has everything needed to call it and interpret the result.

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 meaning the schema does not: `type` defaults to UPCOMING, omitting `page` and `size` returns the full list, and `email` is only needed when no session exists. The sessionToken parameter's role is only lightly covered (schema notes it comes from `guest_login`).

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?

Opens with a specific verb and resource ("Lists the authenticated user's existing bookings") and immediately scopes it by the `type` filter values. It also names the sibling tools to use downstream (`get_booking_details`, `cancel_booking`), so an agent can separate listing from detail lookup or mutation.

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?

Explicitly states the precondition (registered LockTrip account session) and the exclusion (guest sessions from `guest_login` cannot list bookings), then gives the alternative path: pass `email` to trigger a sign-in link. It also routes the agent onward by telling it to pass a `bookingId` to `get_booking_details` or `cancel_booking`.

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

list_settlementsList Bank TransfersA
Read-only
Inspect

Lists the signed-in partner's own bank-transfer settlements of the credit line: settlements[] (each with reference, status, amount, currency, createdAt, expiresAt, and receivedAmount/receivedAt once the transfer has arrived), payable[] (transfers still awaiting funds), the bank details to pay into, and a notice that must be shown to the user as given (overpayments are held as credit, not refunded). This is the list of transfers, not per-booking payment state: that is on each row of get_credit_line_statement. Read-only. Needs a signed-in partner credit-line account session; guest sessions have no credit line.

NameRequiredDescriptionDefault
sessionTokenNoOptional guest-checkout token returned by `guest_login`.

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, so "Read-only" is redundant, but the description goes further by disclosing the response envelope (`settlements[]`, `payable[]`, `bank`, `notice`) and an obligation the agent must honour: the `notice` must be shown as given, and overpayments become credit rather than refunds. The one blemish is that it says guest sessions have no credit line while the schema still advertises an optional guest `sessionToken`, leaving a small inconsistency unresolved.

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?

The purpose and return envelope are front-loaded, and the enumeration of fields is genuinely useful given there is no output schema. It is dense but each clause carries information; only the redundant "Read-only" could be cut.

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?

No output schema exists, yet the description enumerates every returned field including statuses and lifecycle fields (`expiresAt`, `receivedAmount`/`receivedAt`). Combined with the session prerequisite and the sibling disambiguation, an agent has everything needed to call and interpret this correctly.

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?

With a single parameter at 100% schema coverage, the schema already explains `sessionToken`. The description adds only indirect context about sessions (partner session required, guest sessions lack a credit line), which actually muddies rather than clarifies the optional guest token's role. Baseline 3 fits.

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?

Opens with a specific verb and scoped resource: "Lists the signed-in partner's own bank-transfer settlements of the credit line." It also pre-empts confusion with the closest sibling by stating outright that per-booking payment state lives on rows of `get_credit_line_statement`.

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?

Explicitly routes the agent: this tool is for the list of transfers, `get_credit_line_statement` is for per-booking payment state. It also names the prerequisite condition (signed-in partner credit-line session) and the excluded case (guest sessions have no credit line).

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

prepare_bookingPrepare Hotel BookingAInspect

Prepares a booking for a chosen room offer and returns the final price plus a preparedBookingId (also returned as the alias bookingInternalId). A prepared booking has NO fixed expiry — what expires is the search session behind its quoteId, which surfaces as "This booking is unavailable"; re-run hotel_search and re-quote if you see that. Required: quoteId (from get_hotel_rooms), searchKey (the SAME one from hotel_search — omitting it is a 400), rooms[] (each {roomIndex (0-based), guests:[{firstName, lastName, title?}], children?} — one guest entry per adult), and a contactPerson (firstName, lastName, email, phone); the searchKey is required (it warms the cancellation-policy cache the backend needs to book). Collect every guest's first/last name and a contact email + phone from the user before calling. REQUIRES A SESSION: for a guest booking, first call guest_login with the user's email and pass the returned token as the sessionToken argument. After this, send preparedBookingId to create_checkout (consumer, recommended) or get_payment_url (consumer, Stripe alternative); B2B partners use confirm_booking.

NameRequiredDescriptionDefault
roomsYes
quoteIdYesQuote ID from get_hotel_rooms
searchKeyYesSearch key from hotel_search (needed to validate cancellation policy)
sessionTokenNoOptional guest-checkout token returned by `guest_login`.
contactPersonYes
specialRequestsNo

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing that a prepared booking has no fixed expiry, that the underlying search session behind quoteId is what expires, the exact surfaced error ('This booking is unavailable'), and the recovery path (re-run hotel_search and re-quote). It also discloses failure modes (400 when searchKey is omitted) and an internal mechanism (searchKey warms the cancellation-policy cache), none of which appears in structured fields.

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?

It is front-loaded with the outcome and return values before prerequisites, and nearly every clause carries operational information. It loses a point for redundancy: the searchKey requirement is stated twice ('omitting it is a 400' and 'the searchKey is required'), and it is packed into one long block rather than split by concern (inputs / auth / next step).

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 6-parameter tool with nested objects and no output schema, the description covers the return payload, the ID alias, every required input's origin, the session requirement, the error surface, and the exact next tool to call. Nothing an agent needs to invoke this correctly is missing, especially since there is no output schema to fall back on.

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

Parameters5/5

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

Schema coverage is only 50% and three nested/optional params (specialRequests, contactPerson.countryCode, guest email/phone/isLeadGuest) are undocumented, but the description compensates by defining roomIndex as 0-based, requiring 'one guest entry per adult', and pinning quoteId and searchKey to their source tools. The nested rooms/guests/contactPerson shapes, which the flat coverage number understates, are all spelled out in prose.

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 ('Prepares a booking for a chosen room offer') and also names what it returns ('final price plus a preparedBookingId'). It explicitly routes to distinct siblings ('send preparedBookingId to create_checkout ... or get_payment_url ...; B2B partners use confirm_booking'), so an agent can separate this pre-commit step from the commit step 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 and provenance for each input: quoteId 'from get_hotel_rooms', searchKey 'the SAME one from hotel_search', and 'Collect every guest's first/last name and a contact email + phone from the user before calling'. It names when a different tool must run first ('for a guest booking, first call guest_login ... pass the returned token as sessionToken') and enumerates three downstream alternatives with a recommendation, which is the full when/alternatives picture.

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

search_locationSearch LocationsA
Read-only
Inspect

Searches LockTrip destinations (cities, regions, landmarks, or specific hotels) by free-text query. Returns locations[], each with id, name, country, type (CITY/REGION/HOTEL/AIRPORT/POI), and fullName. Pass a chosen location's id to hotel_search as its regionId to search hotels in that area. No authentication required. This is the first step of the booking flow.

NameRequiredDescriptionDefault
queryYesSearch query (city name, region, or hotel name)
languageNoLanguage code (default: en)

TDQS

A4.5/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 new behavioral facts: no authentication required and the shape of the returned `locations[]` array with its field list. It omits things like result limits or pagination, keeping it below a 5.

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 tight sentences, front-loaded with the purpose, then the return shape, then the downstream hand-off. Every clause carries operational information and there is no 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 no output schema, the description correctly compensates by naming the return array and its fields; it also covers auth and the next-step linkage. For a two-parameter search tool this is fully sufficient to invoke correctly.

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 coverage is 100%, so both `query` and `language` are already documented in the schema. The description reinforces that `query` is free-text spanning cities, regions, landmarks, and hotels, but adds no format or language-code detail beyond what the schema supplies, 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?

The description gives a specific verb and resource ("Searches LockTrip destinations") and enumerates the entity types covered (cities, regions, landmarks, hotels), plus the exact return fields. This makes it immediately distinguishable from sibling hotel_search, which it explicitly names as the downstream step.

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?

It states the position in the workflow ("first step of the booking flow") and the concrete hand-off rule: pass a chosen location's `id` to `hotel_search` as `regionId`. That is explicit when-to-use plus the alternative it feeds, leaving little to infer.

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. 17 tool updates
    • First observedcancel_booking
    • First observedcheck_cancellation_policy
    • First observedconfirm_booking
    • First observedcreate_checkout
    • First observedget_booking_details
    • First observedget_credit_line_statement
    • First observedget_hotel_details
    • First observedget_hotel_rooms
    • First observedget_payment_url
    • First observedget_search_results
    • First observedget_statement_document
    • First observedguest_login
    • First observedhotel_search
    • First observedlist_bookings
    • First observedlist_settlements
    • First observedprepare_booking
    • First observedsearch_location

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.
    41
    86 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search, compare, and book hotels with real-time pricing and availability, supporting multiple location types, star ratings, and price filters.
    12
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to search hotel rooms by number of nights within a flexible date range, returning real prices and the cheapest deals with booking links. It also supports city resolution, hotel listing, and offer details for external booking completion.
    4
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources