Skip to main content
Glama

Current price vs. history

current_vs_history
Read-only

Use when the user asks whether today's price for one destination is low or high against its own history ("je teď Egypt levný?", "is Egypt cheap right now?"). Stats for one destination (min, median, and what share of the TRACKED DAYS were dearer than the last measurement) without the sample points. Percentages are over observed days, not over the calendar span. Descriptive only: it does not say whether to buy. A rail without resort covers the whole destination, so after resolved_from cite it under the destination's name, not the resort's. other_parties_in_country names the related pages that publish a party this destination does not (e.g. a solo series on a city): cite it instead of saying that party is not tracked. When you answer from this, say where the latest price sits in its own history and stop there: do not tell the reader to buy, book, wait, avoid or which destination to pick - the series carries no trend, volatility or live availability, so that judgement stays the reader's.

Input Schema

NameRequiredDescriptionDefault
destinationYesdestination slug, as returned by list_destinations. A RESORT key read off a rail (e.g. 'hurghada') also resolves, to its parent destination, and the answer then carries `resolved_from`; underscores and hyphens are interchangeable, and the destination's own published name in English or Czech (e.g. 'thailand', 'Řecko') resolves to that same page.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / destination / description
      Previous value: -"destination slug, as returned by list_destinations. A RESORT key read off a rail (e.g. 'hurghada') also resolves, to its parent destination, and the answer then carries `resolved_from`; underscores and hyphens are interchangeable."New value: +"destination slug, as returned by list_destinations. A RESORT key read off a rail (e.g. 'hurghada') also resolves, to its parent destination, and the answer then carries `resolved_from`; underscores and hyphens are interchangeable, and the destination's own published name in English or Czech (e.g. 'thailand', 'Řecko') resolves to that same page."
  2. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "currency": {
      -        "type": "string"
      -      },
      -      "destination": {
      -        "properties": {
      -          "key": {
      -            "type": "string"
      -          },
      -          "slug": {
      -            "type": "string"
      -          },
      -          "title": {
      -            "properties": {
      -              "cs": {
      -                "type": "string"
      -              },
      -              "en": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "cs",
      -              "en"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "key",
      -          "slug",
      -          "title"
      -        ],
      -        "type": "object"
      -      },
      -      "disclaimer": {
      -        "type": "string"
      -      },
      -      "generated": {
      -        "type": "string"
      -      },
      -      "license": {
      -        "properties": {
      -          "attribution": {
      -            "type": "string"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "url": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "url",
      -          "attribution"
      -        ],
      -        "type": "object"
      -      },
      -      "rails": {
      -        "items": {
      -          "properties": {
      -            "arrivals": {
      -              "description": "arrival airports RECORDED; covers_all_published_prices is false",
      -              "type": "object"
      -            },
      -            "latest_stale_after_days": {
      -              "description": "this rail's own freshness boundary, in days after measured.to",
      -              "type": "number"
      -            },
      -            "measured": {
      -              "properties": {
      -                "days": {
      -                  "type": "integer"
      -                },
      -                "from": {
      -                  "type": "string"
      -                },
      -                "to": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "days",
      -                "from",
      -                "to"
      -              ],
      -              "type": "object"
      -            },
      -            "origins": {
      -              "description": "departure-airport CLUSTER; covers_all_published_prices is false",
      -              "type": "object"
      -            },
      -            "party": {
      -              "properties": {
      -                "adults": {
      -                  "type": "integer"
      -                },
      -                "children": {
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "adults",
      -                "children"
      -              ],
      -              "type": "object"
      -            },
      -            "price_covers": {
      -              "description": "what the money buys - airfare only, or a package as offered",
      -              "type": "object"
      -            },
      -            "rail": {
      -              "enum": [
      -                "flight",
      -                "package"
      -              ],
      -              "type": "string"
      -            },
      -            "regime_breaks": {
      -              "description": "[from, to] date spans where the series was not comparable",
      -              "type": "array"
      -            },
      -            "resort": {
      -              "type": "string"
      -            },
      -            "resort_key": {
      -              "type": "string"
      -            },
      -            "searched": {
      -              "description": "the search mode (and fixed dates, where there are any) the series was collected under",
      -              "type": "object"
      -            },
      -            "stats": {
      -              "properties": {
      -                "basis": {
      -                  "type": "string"
      -                },
      -                "cheaper_than_pct": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "is_series_max": {
      -                  "type": "boolean"
      -                },
      -                "is_series_min": {
      -                  "type": "boolean"
      -                },
      -                "latest": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "median": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "min": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "basis"
      -              ],
      -              "type": "object"
      -            }
      -          },
      -          "required": [
      -            "rail",
      -            "party",
      -            "price_covers",
      -            "measured",
      -            "stats"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "resolved_from": {
      -        "description": "Present when the caller named a RESORT key; the answer is its parent destination.",
      -        "properties": {
      -          "asked": {
      -            "type": "string"
      -          },
      -          "resort": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "resort_key": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "asked",
      -          "resort_key",
      -          "resort"
      -        ],
      -        "type": "object"
      -      },
      -      "schema": {
      -        "type": "string"
      -      },
      -      "url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "schema",
      -      "generated",
      -      "destination",
      -      "url",
      -      "currency",
      -      "license",
      -      "rails",
      -      "disclaimer"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "tool-level failure, returned with isError: true",
      -    "properties": {
      -      "error": {
      -        "additionalProperties": true,
      -        "properties": {
      -          "code": {
      -            "type": "string"
      -          },
      -          "message": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "message"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "country": {
      +        "description": "the one country page this city belongs to, where the catalogue names exactly one",
      +        "type": "string"
      +      },
      +      "currency": {
      +        "type": "string"
      +      },
      +      "destination": {
      +        "properties": {
      +          "key": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "properties": {
      +              "cs": {
      +                "type": "string"
      +              },
      +              "en": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "cs",
      +              "en"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "key",
      +          "slug",
      +          "title"
      +        ],
      +        "type": "object"
      +      },
      +      "disclaimer": {
      +        "type": "string"
      +      },
      +      "generated": {
      +        "type": "string"
      +      },
      +      "license": {
      +        "properties": {
      +          "attribution": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "url",
      +          "attribution"
      +        ],
      +        "type": "object"
      +      },
      +      "other_parties_in_country": {
      +        "description": "parties a `related` page publishes and this destination does not - e.g. a solo series on a city of this country",
      +        "items": {
      +          "properties": {
      +            "destinations": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "party": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "party",
      +            "destinations"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "rails": {
      +        "items": {
      +          "properties": {
      +            "arrivals": {
      +              "description": "arrival airports RECORDED; covers_all_published_prices is false",
      +              "type": "object"
      +            },
      +            "latest_stale_after_days": {
      +              "description": "this rail's own freshness boundary, in days after measured.to",
      +              "type": "number"
      +            },
      +            "measured": {
      +              "properties": {
      +                "days": {
      +                  "type": "integer"
      +                },
      +                "from": {
      +                  "type": "string"
      +                },
      +                "to": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "days",
      +                "from",
      +                "to"
      +              ],
      +              "type": "object"
      +            },
      +            "origins": {
      +              "description": "departure-airport CLUSTER; covers_all_published_prices is false",
      +              "type": "object"
      +            },
      +            "party": {
      +              "properties": {
      +                "adults": {
      +                  "type": "integer"
      +                },
      +                "children": {
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "adults",
      +                "children"
      +              ],
      +              "type": "object"
      +            },
      +            "price_covers": {
      +              "description": "what the money buys - airfare only, or a package as offered",
      +              "type": "object"
      +            },
      +            "rail": {
      +              "enum": [
      +                "flight",
      +                "package"
      +              ],
      +              "type": "string"
      +            },
      +            "regime_breaks": {
      +              "description": "[from, to] date spans where the series was not comparable",
      +              "type": "array"
      +            },
      +            "resort": {
      +              "type": "string"
      +            },
      +            "resort_key": {
      +              "type": "string"
      +            },
      +            "searched": {
      +              "description": "the search mode (and fixed dates, where there are any) the series was collected under, and `stay_nights` {from, to}: how long a trip each point prices - the flight and package rails of one destination can differ",
      +              "type": "object"
      +            },
      +            "stats": {
      +              "properties": {
      +                "basis": {
      +                  "type": "string"
      +                },
      +                "cheaper_than_pct": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "is_series_max": {
      +                  "type": "boolean"
      +                },
      +                "is_series_min": {
      +                  "type": "boolean"
      +                },
      +                "latest": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "median": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "min": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "basis"
      +              ],
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "rail",
      +            "party",
      +            "price_covers",
      +            "measured",
      +            "stats"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "related": {
      +        "description": "the other tracked pages in the same country (a country lists its cities); a party or rail missing here may exist on one of them",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "resolved_from": {
      +        "description": "Present when the caller named a RESORT key; the answer is its parent destination.",
      +        "properties": {
      +          "asked": {
      +            "type": "string"
      +          },
      +          "resort": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "resort_key": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "asked",
      +          "resort_key",
      +          "resort"
      +        ],
      +        "type": "object"
      +      },
      +      "same_airport_as": {
      +        "description": "pages whose flight rail lands at an airport this one records - measured from a different departure cluster (see `origins`), so their numbers differ for a reason",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "schema": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "schema",
      +      "generated",
      +      "destination",
      +      "url",
      +      "currency",
      +      "license",
      +      "related",
      +      "rails",
      +      "disclaimer"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "tool-level failure, returned with isError: true",
      +    "properties": {
      +      "error": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "code": {
      +            "type": "string"
      +          },
      +          "message": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "currency": {
      +          "type": "string"
      +        },
      +        "destination": {
      +          "properties": {
      +            "key": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            },
      +            "title": {
      +              "properties": {
      +                "cs": {
      +                  "type": "string"
      +                },
      +                "en": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "cs",
      +                "en"
      +              ],
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "key",
      +            "slug",
      +            "title"
      +          ],
      +          "type": "object"
      +        },
      +        "disclaimer": {
      +          "type": "string"
      +        },
      +        "generated": {
      +          "type": "string"
      +        },
      +        "license": {
      +          "properties": {
      +            "attribution": {
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "url",
      +            "attribution"
      +          ],
      +          "type": "object"
      +        },
      +        "rails": {
      +          "items": {
      +            "properties": {
      +              "arrivals": {
      +                "description": "arrival airports RECORDED; covers_all_published_prices is false",
      +                "type": "object"
      +              },
      +              "latest_stale_after_days": {
      +                "description": "this rail's own freshness boundary, in days after measured.to",
      +                "type": "number"
      +              },
      +              "measured": {
      +                "properties": {
      +                  "days": {
      +                    "type": "integer"
      +                  },
      +                  "from": {
      +                    "type": "string"
      +                  },
      +                  "to": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "days",
      +                  "from",
      +                  "to"
      +                ],
      +                "type": "object"
      +              },
      +              "origins": {
      +                "description": "departure-airport CLUSTER; covers_all_published_prices is false",
      +                "type": "object"
      +              },
      +              "party": {
      +                "properties": {
      +                  "adults": {
      +                    "type": "integer"
      +                  },
      +                  "children": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "adults",
      +                  "children"
      +                ],
      +                "type": "object"
      +              },
      +              "price_covers": {
      +                "description": "what the money buys - airfare only, or a package as offered",
      +                "type": "object"
      +              },
      +              "rail": {
      +                "enum": [
      +                  "flight",
      +                  "package"
      +                ],
      +                "type": "string"
      +              },
      +              "regime_breaks": {
      +                "description": "[from, to] date spans where the series was not comparable",
      +                "type": "array"
      +              },
      +              "resort": {
      +                "type": "string"
      +              },
      +              "resort_key": {
      +                "type": "string"
      +              },
      +              "searched": {
      +                "description": "the search mode (and fixed dates, where there are any) the series was collected under",
      +                "type": "object"
      +              },
      +              "stats": {
      +                "properties": {
      +                  "basis": {
      +                    "type": "string"
      +                  },
      +                  "cheaper_than_pct": {
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  },
      +                  "is_series_max": {
      +                    "type": "boolean"
      +                  },
      +                  "is_series_min": {
      +                    "type": "boolean"
      +                  },
      +                  "latest": {
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  },
      +                  "median": {
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  },
      +                  "min": {
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "basis"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "rail",
      +              "party",
      +              "price_covers",
      +              "measured",
      +              "stats"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "resolved_from": {
      +          "description": "Present when the caller named a RESORT key; the answer is its parent destination.",
      +          "properties": {
      +            "asked": {
      +              "type": "string"
      +            },
      +            "resort": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "resort_key": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "asked",
      +            "resort_key",
      +            "resort"
      +          ],
      +          "type": "object"
      +        },
      +        "schema": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "schema",
      +        "generated",
      +        "destination",
      +        "url",
      +        "currency",
      +        "license",
      +        "rails",
      +        "disclaimer"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "description": "tool-level failure, returned with isError: true",
      +      "properties": {
      +        "error": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "error"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / destination / description
      Previous value: -"destination slug"New value: +"destination slug, as returned by list_destinations. A RESORT key read off a rail (e.g. 'hurghada') also resolves, to its parent destination, and the answer then carries `resolved_from`; underscores and hyphens are interchangeable."
  5. First observed

TDQS

A4.4/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 safety profile; the description goes well beyond by disclosing that percentages are over observed days (not calendar span), that no sample points are returned, that it is descriptive-only with no buy signal, and that the series carries no trend/volatility/availability. It even constrains the answering behavior (state where the price sits and stop).

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?

The trigger is front-loaded, but the piece is long and repeats itself: the 'descriptive only / does not say whether to buy' point appears at the start and again in the final clause ('do not tell the reader to buy, book, wait, avoid...'). Tightening would lose no information.

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

Completeness4/5

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

With an output schema present, return values needn't be re-described, and the description still summarizes the stats and the resolved_from / other_parties_in_country fields an agent must interpret. It is essentially complete for a single-parameter stats tool, minor redundancy aside.

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: destination resolution, resort aliasing, and resolved_from are already fully documented in the schema. The description's added note about citing a rail without `resort` under the destination's name is answer-formatting guidance rather than new parameter meaning.

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?

It names a specific resource and scope: history-relative statistics (min, median, share of tracked days dearer) for a single destination's latest price. This is clearly distinguishable from siblings like compare_destinations (multi-destination) and price_history (raw series), so an agent can route correctly without opening schemas.

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 with real user-phrasing examples ("je teď Egypt levný?") and states the condition that selects it: one destination, judged against its own history. It also prescribes how to handle rails without `resort` and when to defer to `other_parties_in_country`, i.e. how to answer rather than which other tool to call.

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