Skip to main content
Glama

Get hotel performance metrics, each with its daily series, for a preset period or explicit start-inclusive, end-exclusive hotel dates

metrics.list
Read-onlyIdempotent

Get hotel performance metrics, each with its daily series, for a preset period or explicit start-inclusive, end-exclusive hotel dates. Includes occupancy, bookings made, room revenue, ADR, RevPAR, cancellations, and average stay length. Dates use the hotel timezone. Set compare to period for the preceding period, or year for the same period last year. Revenue uses booking amounts in the hotel currency. Use bookings.list for individual bookings.

Input Schema

NameRequiredDescriptionDefault
endNoEnd hotel date, excluded. Must be after start.
startNoStart hotel date, included. Supply with end instead of period.
periodNoReporting period based on today in the hotel timezone. For example, this_month covers the whole current calendar month.
compareYesCompare with the preceding period or the same period in the previous year.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / end
      Added value: +{
      +  "description": "End hotel date, excluded. Must be after start.",
      +  "format": "date",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +  "type": "string"
      +}
    • addedInput schema / properties / start
      Added value: +{
      +  "description": "Start hotel date, included. Supply with end instead of period.",
      +  "format": "date",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "period",
      -  "compare"
      -]New value: +[
      +  "compare"
      +]
  2. Changed5 schema fields changed
    • addedOutput schema / properties / result / properties / metrics / items / properties / lower
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / result / properties / metrics / items / properties / series
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "date": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "date",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / result / properties / metrics / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "description",
      -  "valueType",
      -  "value"
      -]New value: +[
      +  "id",
      +  "name",
      +  "description",
      +  "valueType",
      +  "lower",
      +  "series"
      +]
    • removedOutput schema / properties / result / properties / timeseries
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "data": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "date": {
      -              "type": "string"
      -            },
      -            "value": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "date",
      -            "value"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "metric": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "metric",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / result / required
      Previous value: -[
      -  "metrics",
      -  "timeseries"
      -]New value: +[
      +  "metrics"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / period / description
      Previous value: -"Hotel performance period to measure."New value: +"Reporting period based on today in the hotel timezone. For example, this_month covers the whole current calendar month."
  4. Changed1 schema field changed
    • changedOutput schema / properties / result / properties / metrics / items / properties / comparison / required
      Previous value: -[
      -  "period",
      -  "value",
      -  "percent"
      -]New value: +[
      +  "period",
      +  "value"
      +]
  5. Changed2 schema fields changed
    • addedInput schema / properties / compare / description
      Added value: +"Compare with the preceding period or the same period in the previous year."
    • addedInput schema / properties / period / description
      Added value: +"Hotel performance period to measure."
  6. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description's job is to add semantics — which it does: dates are evaluated in the hotel timezone, end is exclusive, revenue is in booking amounts and hotel currency. No rate limits or failure modes are described, but for a read-only aggregation endpoint that is a minor gap.

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?

Six short, front-loaded sentences with no filler; the metric list, timezone rule, compare semantics, and sibling pointer each earn their place. The opening sentence duplicates the title almost verbatim, which is a small redundancy but also the front-loading of purpose.

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

Completeness4/5

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

An output schema exists, so return shape needn't be explained, and the description still usefully names the metrics included. Combined with full schema coverage and read-only annotations, an agent has nearly everything needed; only the overlap with a sibling metrics tool is unaddressed.

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 earns an extra point by clarifying that compare=period means the immediately preceding period and compare=year means the same period last year, and that period presets are anchored to today in the hotel timezone. It does not resolve the period-versus-start/end mutual exclusivity beyond the schema's own note.

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

Purpose4/5

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

States a specific verb and resource ('Get hotel performance metrics, each with its daily series') and enumerates the metric families returned, so an agent can tell it apart from bookings.list, which it explicitly routes to. It does not, however, differentiate itself from the sibling units.occupancy, which plausibly overlaps on occupancy-type metrics.

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 routing guidance ('Use bookings.list for individual bookings') and explains the compare modes and the period-vs-explicit-dates choice, which is decision-relevant context. It stops short of stating exclusions or what happens if both period and start/end are supplied, leaving one branch to the schema.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources