Skip to main content
Glama

HotelRefund Price Tracker

Server Details

Tracks Agoda hotel prices for your dates, keeps checking, and shows what changed — with evidence.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 19 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search resolves hotels, track creates a tracking, get_price_history reads a tracking's time series, get_hotel_price_calendar shows date-based price cross-sections, list_hotel_deals shows discounts, and list_tracked_hotels lists active trackings. There is no meaningful overlap between any two tools.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_, list_, search_, and track_. Even multi-word objects like hotel_price_calendar and tracked_hotels maintain the same predictable structure.

Tool Count5/5

Eight tools is well-scoped for a price-tracking service: search, track, read history, view calendar, list deals, list tracked items, plus informational guide and status tools. Every tool earns its place in the core workflow.

Completeness4/5

The core lifecycle is covered: search_hotels → track_hotel_price → get_price_history/list_tracked_hotels, with supporting calendar, deals, guide, and status tools. The main gap is the lack of a stop/delete tracking operation, though the public and anonymous design may make this intentional.

Available Tools

8 tools
get_hotel_price_calendarPrice by check-in date for one hotelA
Read-only
Inspect

Show what one hotel (agoda_hotel_id from search_hotels) costs on Agoda for each check-in date in a window — the "what if I move my dates" view. Returns one price snapshot per date (with fetched_at), the cheapest date, and low/high bands for the hotel; dates with an active tracking are marked is_tracked with their track_page_url. This is a cross-section by date, not a time series: to keep watching a date, call track_hotel_price for it. Most dates are fetched in the background on the first call, so pending may be > 0 — call again with the same arguments after ~3 seconds to get the rest. Default window: 28 days from start_date (or today), 1 night, 2 adults.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many consecutive check-in dates (default 28, max 35).
nightsNoStay length for every date (default 1).
currencyNoKRW, JPY, USD, EUR, TWD, HKD, CNY, SGD, THB, GBP, AUD or VND (default USD).
languageNoAgoda locale for the rate: ko-kr, ja-jp, en-us, zh-cn, zh-tw or zh-hk (default en-us).
start_dateNoFirst check-in date to show, YYYY-MM-DD (default today; past dates are moved to today).
agoda_hotel_idYesHotel id from search_hotels.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark readOnlyHint and openWorldHint, and the description strengthens these by disclosing background fetching, pending > 0, and the need to call again after ~3 seconds. It also explains what fields are returned, including is_tracked and track_page_url, without contradicting 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?

Every sentence earns its place: purpose, return contents, differentiation, async behavior, and defaults are all packed compactly. The description is front-loaded with the core purpose and remains readable despite carrying substantial behavioral detail.

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 calendar tool with a full input schema and no output schema, the description sufficiently covers return values, pending behavior, defaults, and the distinction from related tools. Nothing essential for correct invocation 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 provided. The description adds value by giving the default window (28 days), 1 night, and 2 adults context, and by clarifying the relationship between agoda_hotel_id and search_hotels. This goes beyond the schema without duplicating it.

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?

Description uses a specific verb ('Show') and resource ('what one hotel costs on Agoda for each check-in date in a window'), clearly distinguishes itself as a date cross-section rather than a time series, and references the source of agoda_hotel_id (search_hotels). It differentiates well from siblings like get_price_history and track_hotel_price.

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?

The description explicitly frames the use case ('what if I move my dates' view), states that this is not a time series, and directs users to track_hotel_price when they want to keep watching a date. This provides clear when-to-use and when-not-to-use guidance.

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

get_price_historyGet price history for a trackingA
Read-only
Inspect

Return the recorded prices for one tracking (tracking_id): current, first, lowest and highest price, percentage change and trend since tracking started, and the time series of observed prices. Also returns booking_guidance — a book-now-or-wait signal computed from this stay's own observations, with the trend slope, volatility, days left, a short-horizon predicted range, and headline + summary sentences (in language: en, ko, ja or zh) that explain the read the same way the page does, including when a price jump was ignored as a level shift. track_page_url is the booking-decision page in that language. And report_url / csv_url: every observation with UTC timestamps as a printable page and a CSV, which people use as evidence for best-price-guarantee claims, refund requests and check-in negotiation. When available, seasonality adds the destination's forecast monthly rates for the hotel's star band (a separate scale from the tracked prices — it says whether the stay month is a high or low month for the city, and which nearby month is cheapest). A tracking created moments ago may report awaiting_first_price until its first check completes.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage for booking_guidance.headline/summary and track_page_url: en (default), ko, ja or zh.
tracking_idYesTracking id from track_hotel_price or list_tracked_hotels.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, and the description goes far beyond that by detailing the computed booking_guidance fields, the seasonality caveat, the level-shift handling, and the awaiting_first_price edge state. This gives the agent a faithful model of what the tool returns and how it can behave.

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 description is long but front-loaded and well organized: core output first, then the booking signal, then URLs, then seasonality, then the edge case. Every sentence carries useful information, though some clauses are dense and could be tightened without losing 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?

With no output schema, the description carries the full burden of explaining the return payload, and it does so in detail: price stats, booking_guidance components, track_page_url, report_url/csv_url, seasonality semantics, and the awaiting_first_price state. This is sufficient for an agent to call and interpret the tool 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 description coverage is 100%, so the baseline is 3. The description largely repeats what the schema already states for tracking_id and language, adding no new param-level detail such as validation rules, additional formats, or default behaviors beyond 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?

The description opens with a specific verb and resource: 'Return the recorded prices for one tracking (tracking_id)'. It enumerates the exact outputs, making the tool's scope clear and distinct from siblings like list_tracked_hotels, track_hotel_price, and get_hotel_price_calendar.

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?

The description gives clear context that this tool is for retrieving a single tracking's full price history and supporting evidence artifacts. It even mentions practical use cases (best-price-guarantee claims, refund requests, check-in negotiation), but it does not explicitly name alternative tools or state when not to use this one.

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

get_refund_guideRead a hotel refund or cancellation guideA
Read-only
Inspect

Return the full text of one HotelRefund reference guide on what to do about a booking that already exists: cancellation deadlines, getting a refund, what to do when the price drops after booking, how best-price guarantees work, refundable vs non-refundable rates, and why rates move. Call without arguments to list every guide with its topic id and a one-line summary. Guide text is English; language returns the matching Korean, Japanese or Chinese page url alongside it.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoTopic id from a previous listing (e.g. "hotel-free-cancellation-deadline"), or plain words describing the situation (e.g. "price dropped after booking", "취소 마감"). Omit to list all guides.
languageNoLanguage for the returned url: en (default), ko, ja or zh.

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnlyHint=true annotation, the description discloses two useful behaviors: with no arguments it returns a listing of all guides with topic ids and one-line summaries, and the language parameter only changes the returned URL while the guide text stays English. This adds concrete behavioral context that an agent cannot infer from the 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?

The three functional parts are front-loaded and each sentence earns its place: main action, no-arg listing behavior, and language behavior. The list of topics in the first sentence is a bit long but provides useful scoping without redundancy.

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 covers what the agent needs to know: it returns full guide text, a listing mode with topic ids and summaries, and a language-dependent URL. Combined with the readOnly annotation and detailed schema, nothing critical is missing for a two-optional-parameter read-only 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?

The input schema already covers both parameters with 100% description coverage, so the baseline is 3. The description adds value by explaining the no-arg behavior for topic (list all guides) and clarifying that language controls only the URL, not the guide text, which goes beyond the schema's individual parameter 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?

The description opens with 'Return the full text of one HotelRefund reference guide', which is a specific verb+resource. It enumerates the covered topics and is clearly distinct from sibling tools like get_hotel_price_calendar or get_price_history, which address pricing data, not refund guidance.

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?

The description gives clear usage context: it is for guides about bookings that already exist, and instructs 'Call without arguments to list every guide'. It does not explicitly say when not to use this tool or name sibling alternatives, but its context is sufficient to differentiate it from the pricing-focused siblings.

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

get_service_statusCheck service status and coverageA
Read-only
Inspect

Report whether the tracker is running and what it covers: the number of hotels and cities in the catalog that can be tracked, how many stays are tracked right now, price checks in the last 24 hours, and the remaining shared daily registration allowance for AI clients. Useful before starting a longer flow, or to confirm the server is live.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 the description adds behavioral context by listing the specific operational metrics reported, including the 'remaining shared daily registration allowance for AI clients.' This goes beyond the annotation by explaining what the read-only status call exposes without suggesting any side effects.

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 sentences with no filler. The main purpose is front-loaded, followed by a compact enumeration of returned metrics and a practical usage note. Every sentence earns its place.

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 zero-parameter status tool with no output schema, the description is complete: it states what the tool reports, the scope of coverage, and when to invoke it. Nothing essential is missing for an agent to decide to call it.

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?

The tool has zero parameters, so parameter semantics do not carry risk. The description still adds value by detailing what the status call returns, satisfying the baseline for a no-parameter tool.

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 uses a specific verb ('Report whether the tracker is running and what it covers') and then enumerates the concrete data returned: hotels, cities, tracked stays, price checks, and registration allowance. This clearly distinguishes it from the sibling tools, which are about prices, deals, hotels, or tracking actions rather than service status.

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?

The description explicitly states when it is useful: 'before starting a longer flow, or to confirm the server is live.' This gives clear usage context, though it does not explicitly name sibling alternatives or state when not to use it.

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

list_hotel_dealsList today's hotel dealsA
Read-only
Inspect

List today's biggest observed hotel discounts: Agoda's live rate for a 1-night stay about two weeks ahead (2 adults, USD) compared with Agoda's own listed rate for the same room; only discounts of 5% or more are kept. Without arguments, returns the single best deal per city across major cities worldwide, biggest discount first. With city (a city name in Korean, Japanese, Chinese or English) or city_id, returns the current deals for that city (up to 6; an uncached city is fetched live at most once per 6 hours). Each deal includes booking_url, the Agoda page for that hotel and stay, and image_url when a photo is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoOptional city, region or airport name, e.g. "Tokyo", "도쿄", "東京". Omit for the worldwide list.
limitNoMax deals to return (default 20).
city_idNoCatalog city id from a previous search_hotels or list_hotel_deals result. Overrides city.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already carry readOnlyHint and openWorldHint; the description adds genuinely new behavioral traits: an uncached city 'is fetched live at most once per 6 hours' (caching/freshness), a 5% discount filter, and a per-city cap of 6 deals. It doesn't describe the full response shape or city-mode sort order, but the added context is substantive.

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?

Four dense sentences, each earning its place: deal definition, worldwide mode, city mode with caching, and output fields. The methodology detail ('1-night stay about two weeks ahead (2 adults, USD)') is specific rather than padded, though the density makes it slightly heavy relative to a front-loaded one-liner.

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?

Covers both invocation modes, caching behavior, filter thresholds, and the key output fields (booking_url, image_url). With no output schema, the description could name the full response field set and city-mode ordering to be fully complete, but the deal-definition sentence implicitly carries much of the output semantics.

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?

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 — 'List today's biggest observed hotel discounts' — and goes further by operationally defining what counts as a deal: Agoda's live rate vs its own listed rate, 1-night stay two weeks ahead, 2 adults, USD, with a 5% discount floor. This precision distinguishes it from siblings like search_hotels (hotel search) and list_tracked_hotels (tracked hotels).

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, actionable mode-based guidance: 'Without arguments, returns the single best deal per city' and 'With city ... or city_id, returns the current deals for that city (up to 6)'. It stops short of a 5 because it never explicitly names alternatives or when-not-to-use conditions relative to siblings.

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

list_tracked_hotelsList publicly tracked hotelsA
Read-only
Inspect

List the hotels currently being tracked (all trackings are public), with current price, change since tracking started, stay dates and per-item booking_url / track_page_url (in language), sorted with the biggest price drops first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (default 20).
languageNoLanguage of each track_page_url: en (default), ko, ja or zh.

TDQS

A4.5/5.0
Behavior4/5

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

The readOnlyHint is already provided by annotations, and the description adds useful behavioral context beyond that: all trackings are public, results are sorted by biggest price drops first, and each item includes price change, stay dates, and URLs. This helps the agent understand what to expect without contradicting the annotation.

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 a single focused sentence that front-loads the main purpose and then packs in the key output details. Every clause adds useful information with no repetition or 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?

Given that there is no output schema, the description compensates well by naming the returned fields and the sort order. With the parameters fully documented in the schema and read-only behavior in annotations, nothing critical is missing for an agent to invoke this tool 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% for both parameters, so the baseline is 3. The description adds extra meaning by clarifying that the language parameter applies to track_page_url, and by indicating that limit controls how many tracked hotels are returned. This is helpful beyond the schema alone.

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 clearly states the tool lists currently tracked hotels, with a specific verb and resource. It differentiates itself from siblings like track_hotel_price and list_hotel_deals by focusing on tracked hotels, and it adds useful specifics like price change and sorting.

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?

The description gives clear context for when to use this tool: when you want to see publicly tracked hotels and their price-drop info. It does not explicitly name alternatives or exclusion conditions, but the phrasing makes the intended use obvious.

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

search_hotelsFind the agoda_hotel_id for a hotelA
Read-only
Inspect

Resolve a hotel to the agoda_hotel_id that track_hotel_price needs. This is a lookup step, not a hotel search engine: it returns catalog entries (name, address, stars, rating, review count) and no prices — for prices, track the hotel or use list_hotel_deals. Give a city, region or airport name (Korean, Japanese, Chinese or English) and, when the user named a hotel, the hotel filter; the city is resolved to the best catalog match. If several cities match, other_city_matches lists them — pass one of their city_id values (instead of city) to search that city. Typical flow: search_hotels → track_hotel_price → get_price_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity, region or airport name, e.g. "Sapporo", "삿포로", "札幌". Required unless city_id is given.
hotelNoOptional hotel-name filter within the city, e.g. "Hilton", "힐튼". Omit to list notable hotels.
limitNoMax hotels to return (default 8).
city_idNoCatalog city id from a previous result (other_city_matches). Overrides city.

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 adds substantial behavior beyond that: it returns only catalog fields (name, address, stars, rating, review count), never prices, resolves the city to 'the best catalog match', and surfaces other_city_matches when several cities match. These traits — catalog-only, no-pricing, ambiguity handling — are not visible in the 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?

Four sentences, each carrying distinct weight: purpose, exclusions/alternatives, parameter usage, and ambiguity handling, with the core purpose front-loaded. It is slightly longer than strictly necessary because the multi-language input hint partly duplicates the schema examples, but nothing is wasted.

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 compensates by naming the returned fields and the other_city_matches disambiguation field, and it explicitly rules out prices so an agent won't expect pricing data. The only gap is unspecified behavior when no city or hotel matches, but for this complexity level the coverage is strong.

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 real value on top: multilingual input support ('Korean, Japanese, Chinese or English'), the trigger condition for the hotel filter, and a concrete disambiguation flow for city_id. The only redundancy is that the schema examples already illustrate the multi-language city forms.

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 — 'Resolve a hotel to the agoda_hotel_id that track_hotel_price needs' — giving the tool a crisp identity. It further distinguishes itself from siblings with 'not a hotel search engine' and 'no prices — for prices, track the hotel or use list_hotel_deals', so an agent can tell it apart from the price-focused tools in the sibling list.

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 between alternatives: lookup/ID resolution here, prices via track_hotel_price or list_hotel_deals, and gives the canonical workflow 'search_hotels → track_hotel_price → get_price_history'. It also conditions parameter usage ('when the user named a hotel, the hotel filter') and explains the city_id override path for ambiguous matches.

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

track_hotel_priceStart tracking a hotel priceA
Idempotent
Inspect

Today is 2026-09-24 (UTC) — never infer the date from the conversation or from training data. Stay dates are calendar days in the hotel's local time zone, which in Asia is already ahead of UTC, so check_in must be 2026-09-23 or later; an earlier check_in is rejected, not silently accepted. Start tracking one hotel (agoda_hotel_id from search_hotels) for one stay (check_in to check_out, YYYY-MM-DD). This is the tool that creates lasting state: from now on the Agoda price is checked automatically several times a day and every observed price is recorded, so the same tracking_id can be asked about days or weeks later with get_price_history. Free, anonymous and public; no account. If the same hotel and dates are already tracked, the existing tracking is returned instead of a duplicate, so it is safe to call again. The response includes tracking_id, booking_url (the Agoda page for this hotel via a HotelRefund redirect) and track_page_url (the booking-decision page: price chart, timing read and a book button; in the language given by language, with track_page_urls for all four). Used both before booking (to catch a drop) and after booking a refundable rate (to see when rebooking would pay off).

ParametersJSON Schema
NameRequiredDescriptionDefault
check_inYesCheck-in date, YYYY-MM-DD (today up to 540 days ahead).
currencyNoOptional ISO currency for recorded prices: KRW, JPY, USD, EUR, TWD, HKD, CNY, SGD, THB, GBP, AUD or VND. Defaults by language.
languageNoOptional locale for the tracked rate: ko-kr, ja-jp, en-us, zh-cn, zh-tw or zh-hk (default en-us).
check_outYesCheck-out date, YYYY-MM-DD (after check_in, stay of 60 nights or less).
agoda_hotel_idYesHotel id from search_hotels.

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial context beyond annotations: idempotent duplicate handling, automatic periodic price checks, lasting state, timezone-aware check_in validation, and the fact that it is free/anonymous/public. This aligns with and enriches the idempotentHint, openWorldHint, and readOnlyHint=false 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?

The description is long but every section earns its place: the date/timezone caveat prevents avoidable errors, the stateful behavior explanation is essential for correct use, and the response URL semantics aid later steps. It could be tightened, but it is well-organized and not padded.

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 stateful tool with no output schema, the description fully covers what an agent needs: required inputs, response fields (tracking_id, booking_url, track_page_url), idempotence, side effects, and usage context. Nothing critical 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 the baseline is 3. The description adds meaningful semantic detail: check_in must be 2026-09-23 or later because of Asia timezone lead, agoda_hotel_id must come from search_hotels, and language influences track_page_url. This goes beyond the schema's basic field 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?

Description states a specific verb and resource: 'Start tracking one hotel ... for one stay' using agoda_hotel_id from search_hotels. It clearly differentiates itself from siblings by emphasizing it creates lasting state and produces tracking_id, which get_price_history later consumes.

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 says this is the tool that creates lasting state and can be queried later with get_price_history, and that agoda_hotel_id comes from search_hotels. It also covers when to use it: before booking to catch a drop and after booking a refundable rate to see when rebooking pays off.

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. 8 tool updates
    • First observedget_hotel_price_calendar
    • First observedget_price_history
    • First observedget_refund_guide
    • First observedget_service_status
    • First observedlist_hotel_deals
    • First observedlist_tracked_hotels
    • First observedsearch_hotels
    • First observedtrack_hotel_price

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources