Voyscout Price History

Historical flight and package price series for Czech origins. Honest stats, no verdicts. CC BY 4.0

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
84%
이름 품질
88%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,444토큰 (도구 정의)
~9.8 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.47%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "price-history": {
      "url": "https://voyscout.com/mcp"
    }
  }
}

원격 엔드포인트

https://voyscout.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (5)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢list_destinations

List every destination with a published price series, with how many days each rail was actually measured and the calendar span those measurements fall in. A destination can have several rails (e.g. flights and packages), each with its OWN measured days and span: history depth is a property of the rail, not of the destination, so when you report it, name the rail or give each one. Historical observations only.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "required": [
        "schema",
        "currency",
        "count",
        "stale_rails",
        "destinations",
        "disclaimer"
      ],
      "properties": {
        "schema": {
          "type": "string"
        },
        "currency": {
          "type": "string"
        },
        "license": {
          "type": "object",
          "required": [
            "id",
            "url",
            "attribution"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "attribution": {
              "type": "string"
            }
          }
        },
        "count": {
          "type": "integer"
        },
        "stale_rails": {
          "type": "object",
          "description": "How many of the rails in scope are past their own freshness boundary on `as_of` (Europe/Prague).",
          "required": [
            "as_of",
            "of",
            "count",
            "keys"
          ],
          "properties": {
            "as_of": {
              "type": "string"
            },
            "of": {
              "type": "integer"
            },
            "count": {
              "type": "integer"
            },
            "unknown": {
              "type": "integer"
            },
            "keys": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "destinations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "key",
              "slug",
              "title",
              "url",
              "generated",
              "rails"
            ],
            "properties": {
              "key": {
                "type": "string"
              },
              "slug": {
                "type": "string"
              },
              "title": {
                "type": "object",
                "required": [
                  "cs",
                  "en"
                ],
                "properties": {
                  "cs": {
                    "type": "string"
                  },
                  "en": {
                    "type": "string"
                  }
                }
              },
              "url": {
                "type": "string"
              },
              "generated": {
                "type": "string"
              },
              "rails": {
                "type": "array",
                "description": "one entry per rail; each carries its own `measured`, which is not the destination's",
                "items": {
                  "type": "object",
                  "required": [
                    "rail",
                    "party",
                    "measured"
                  ],
                  "properties": {
                    "rail": {
                      "type": "string",
                      "enum": [
                        "flight",
                        "package"
                      ]
                    },
                    "resort": {
                      "type": "string"
                    },
                    "resort_key": {
                      "type": "string"
                    },
                    "party": {
                      "type": "object",
                      "required": [
                        "adults",
                        "children"
                      ],
                      "properties": {
                        "adults": {
                          "type": "integer"
                        },
                        "children": {
                          "type": "integer"
                        }
                      }
                    },
                    "measured": {
                      "type": "object",
                      "required": [
                        "days",
                        "from",
                        "to"
                      ],
                      "properties": {
                        "days": {
                          "type": "integer"
                        },
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "disclaimer": {
          "type": "string"
        }
      }
    },
    {
      "type": "object",
      "description": "tool-level failure, returned with isError: true",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      }
    }
  ]
}
🟢price_history(destination, rail)

Price series for one destination: measured span, stats, a downsampled sample of points and any regime breaks. Historical observations only, never a live quote or a recommendation.

입력 스키마

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "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."
    },
    "rail": {
      "type": "string",
      "enum": [
        "flight",
        "package"
      ],
      "description": "optional: restrict to one rail"
    }
  },
  "required": [
    "destination"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "required": [
        "schema",
        "generated",
        "destination",
        "url",
        "currency",
        "license",
        "rails",
        "disclaimer"
      ],
      "properties": {
        "schema": {
          "type": "string"
        },
        "generated": {
          "type": "string"
        },
        "currency": {
          "type": "string"
        },
        "license": {
          "type": "object",
          "required": [
            "id",
            "url",
            "attribution"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "attribution": {
              "type": "string"
            }
          }
        },
        "disclaimer": {
          "type": "string"
        },
        "destination": {
          "type": "object",
          "required": [
            "key",
            "slug",
            "title"
          ],
          "properties": {
            "key": {
              "type": "string"
            },
            "slug": {
              "type": "string"
            },
            "title": {
              "type": "object",
              "required": [
                "cs",
                "en"
              ],
              "properties": {
                "cs": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              }
            }
          }
        },
        "url": {
          "type": "string"
        },
        "resolved_from": {
          "type": "object",
          "description": "Present when the caller named a RESORT key; the answer is its parent destination.",
          "required": [
            "asked",
            "resort_key",
            "resort"
          ],
          "properties": {
            "asked": {
              "type": "string"
            },
            "resort_key": {
              "type": "string"
            },
            "resort": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "rails": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "rail",
              "party",
              "price_covers",
              "measured",
              "stats",
              "series_sample"
            ],
            "properties": {
              "rail": {
                "type": "string",
                "enum": [
                  "flight",
                  "package"
                ]
              },
              "resort": {
                "type": "string"
              },
              "resort_key": {
                "type": "string"
              },
              "party": {
                "type": "object",
                "required": [
                  "adults",
                  "children"
                ],
                "properties": {
                  "adults": {
                    "type": "integer"
                  },
                  "children": {
                    "type": "integer"
                  }
                }
              },
              "origins": {
                "type": "object",
                "description": "departure-airport CLUSTER; covers_all_published_prices is false"
              },
              "arrivals": {
                "type": "object",
                "description": "arrival airports RECORDED; covers_all_published_prices is false"
              },
              "searched": {
                "type": "object",
                "description": "the search mode (and fixed dates, where there are any) the series was collected under"
              },
              "price_covers": {
                "type": "object",
                "description": "what the money buys - airfare only, or a package as offered"
              },
              "measured": {
                "type": "object",
                "required": [
                  "days",
                  "from",
                  "to"
                ],
                "properties": {
                  "days": {
                    "type": "integer"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "required": [
                  "basis"
                ],
                "properties": {
                  "basis": {
                    "type": "string"
                  },
                  "min": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "median": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "latest": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "cheaper_than_pct": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "is_series_max": {
                    "type": "boolean"
                  },
                  "is_series_min": {
                    "type": "boolean"
                  }
                }
              },
              "latest_stale_after_days": {
                "type": "number",
                "description": "this rail's own freshness boundary, in days after measured.to"
              },
              "regime_breaks": {
                "type": "array",
                "description": "[from, to] date spans where the series was not comparable"
              },
              "series_sample": {
                "type": "object",
                "description": "a DOWNSAMPLED sample; `complete` says whether it is the whole series",
                "required": [
                  "complete",
                  "points"
                ],
                "properties": {
                  "complete": {
                    "type": "boolean"
                  },
                  "points": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "date",
                        "cheapest_total"
                      ],
                      "properties": {
                        "date": {
                          "type": "string"
                        },
                        "cheapest_total": {
                          "type": "number"
                        },
                        "origin": {
                          "type": "string"
                        },
                        "departure": {
                          "type": "string"
                        },
                        "return": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "note": {
          "type": "string",
          "description": "present when the `rail` filter matched nothing published for this destination"
        }
      }
    },
    {
      "type": "object",
      "description": "tool-level failure, returned with isError: true",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      }
    }
  ]
}
🟢current_vs_history(destination)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "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."
    }
  },
  "required": [
    "destination"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "required": [
        "schema",
        "generated",
        "destination",
        "url",
        "currency",
        "license",
        "rails",
        "disclaimer"
      ],
      "properties": {
        "schema": {
          "type": "string"
        },
        "generated": {
          "type": "string"
        },
        "currency": {
          "type": "string"
        },
        "license": {
          "type": "object",
          "required": [
            "id",
            "url",
            "attribution"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "attribution": {
              "type": "string"
            }
          }
        },
        "disclaimer": {
          "type": "string"
        },
        "destination": {
          "type": "object",
          "required": [
            "key",
            "slug",
            "title"
          ],
          "properties": {
            "key": {
              "type": "string"
            },
            "slug": {
              "type": "string"
            },
            "title": {
              "type": "object",
              "required": [
                "cs",
                "en"
              ],
              "properties": {
                "cs": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              }
            }
          }
        },
        "url": {
          "type": "string"
        },
        "resolved_from": {
          "type": "object",
          "description": "Present when the caller named a RESORT key; the answer is its parent destination.",
          "required": [
            "asked",
            "resort_key",
            "resort"
          ],
          "properties": {
            "asked": {
              "type": "string"
            },
            "resort_key": {
              "type": "string"
            },
            "resort": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "rails": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "rail",
              "party",
              "price_covers",
              "measured",
              "stats"
            ],
            "properties": {
              "rail": {
                "type": "string",
                "enum": [
                  "flight",
                  "package"
                ]
              },
              "resort": {
                "type": "string"
              },
              "resort_key": {
                "type": "string"
              },
              "party": {
                "type": "object",
                "required": [
                  "adults",
                  "children"
                ],
                "properties": {
                  "adults": {
                    "type": "integer"
                  },
                  "children": {
                    "type": "integer"
                  }
                }
              },
              "origins": {
                "type": "object",
                "description": "departure-airport CLUSTER; covers_all_published_prices is false"
              },
              "arrivals": {
                "type": "object",
                "description": "arrival airports RECORDED; covers_all_published_prices is false"
              },
              "searched": {
                "type": "object",
                "description": "the search mode (and fixed dates, where there are any) the series was collected under"
              },
              "price_covers": {
                "type": "object",
                "description": "what the money buys - airfare only, or a package as offered"
              },
              "measured": {
                "type": "object",
                "required": [
                  "days",
                  "from",
                  "to"
                ],
                "properties": {
                  "days": {
                    "type": "integer"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "required": [
                  "basis"
                ],
                "properties": {
                  "basis": {
                    "type": "string"
                  },
                  "min": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "median": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "latest": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "cheaper_than_pct": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "is_series_max": {
                    "type": "boolean"
                  },
                  "is_series_min": {
                    "type": "boolean"
                  }
                }
              },
              "latest_stale_after_days": {
                "type": "number",
                "description": "this rail's own freshness boundary, in days after measured.to"
              },
              "regime_breaks": {
                "type": "array",
                "description": "[from, to] date spans where the series was not comparable"
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "description": "tool-level failure, returned with isError: true",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      }
    }
  ]
}
🟢find_opportunities(rail, party, min_history_days, limit, sort)

Rank every published rail by how its LAST measurement compares with its own tracked history, so a caller can ask 'where is it unusually cheap right now?' in one call instead of one call per destination. Each row is ONE rail, so a destination with several rails can appear once per rail with different numbers: name the rail when you cite a row. Percentages are over observed days, not the calendar span. `latest_cheaper_than_pct_of_days` is the same number as `cheaper_than_pct` under a name that states its direction (higher = cheaper than more of the tracked days). `stale_rails` says how many of the rails THIS call matched are past their own freshness boundary today, with the day it was judged (`as_of`), so the caller need not subtract dates per row. Descriptive only: it ranks observations and gives no verdict. Rails with too little history are returned under `excluded`, never dropped silently.

입력 스키마

{
  "type": "object",
  "properties": {
    "rail": {
      "type": "string",
      "enum": [
        "flight",
        "package"
      ],
      "description": "optional: restrict to one rail"
    },
    "party": {
      "type": "string",
      "description": "optional: '<adults>-<children>', e.g. '2-2' - the same A-C shape the price streams are keyed on"
    },
    "min_history_days": {
      "type": "integer",
      "minimum": 0,
      "description": "optional (default 30): rails measured for fewer days are listed under 'excluded'"
    },
    "limit": {
      "type": "integer",
      "minimum": 0,
      "description": "optional (default 10): how many rows to return; 'matched' reports the count before the cap"
    },
    "sort": {
      "type": "string",
      "enum": [
        "cheapest_vs_history",
        "most_below_median"
      ],
      "description": "optional (default cheapest_vs_history): 'cheapest_vs_history' ranks by the share of tracked days that were dearer; 'most_below_median' ranks by how far the last measurement sits below the median, relatively"
    }
  },
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "required": [
        "schema",
        "generated",
        "sort",
        "min_history_days",
        "matched",
        "stale_rails",
        "opportunities",
        "excluded",
        "disclaimer"
      ],
      "properties": {
        "schema": {
          "type": "string"
        },
        "generated": {
          "type": [
            "string",
            "null"
          ],
          "description": "the OLDEST `generated` among the rows returned"
        },
        "currency": {
          "type": "string"
        },
        "license": {
          "type": "object",
          "required": [
            "id",
            "url",
            "attribution"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "attribution": {
              "type": "string"
            }
          }
        },
        "disclaimer": {
          "type": "string"
        },
        "sort": {
          "type": "string",
          "enum": [
            "cheapest_vs_history",
            "most_below_median"
          ]
        },
        "min_history_days": {
          "type": "integer"
        },
        "matched": {
          "type": "integer",
          "description": "rows before the `limit` cap"
        },
        "stale_rails": {
          "type": "object",
          "description": "How many of the rails in scope are past their own freshness boundary on `as_of` (Europe/Prague).",
          "required": [
            "as_of",
            "of",
            "count",
            "keys"
          ],
          "properties": {
            "as_of": {
              "type": "string"
            },
            "of": {
              "type": "integer"
            },
            "count": {
              "type": "integer"
            },
            "unknown": {
              "type": "integer"
            },
            "keys": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "opportunities": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "destination",
              "title",
              "url",
              "rail",
              "party",
              "latest",
              "median",
              "min",
              "cheaper_than_pct",
              "latest_cheaper_than_pct_of_days",
              "is_series_min",
              "history_days",
              "measured",
              "generated"
            ],
            "properties": {
              "destination": {
                "type": "string"
              },
              "rail": {
                "type": "string",
                "enum": [
                  "flight",
                  "package"
                ]
              },
              "resort_key": {
                "type": "string"
              },
              "title": {
                "type": "object",
                "required": [
                  "cs",
                  "en"
                ],
                "properties": {
                  "cs": {
                    "type": "string"
                  },
                  "en": {
                    "type": "string"
                  }
                }
              },
              "url": {
                "type": "string"
              },
              "resort": {
                "type": "string"
              },
              "party": {
                "type": "object",
                "required": [
                  "adults",
                  "children"
                ],
                "properties": {
                  "adults": {
                    "type": "integer"
                  },
                  "children": {
                    "type": "integer"
                  }
                }
              },
              "latest": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "median": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "min": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "cheaper_than_pct": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "latest_cheaper_than_pct_of_days": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "is_series_min": {
                "type": "boolean"
              },
              "history_days": {
                "type": "integer"
              },
              "measured": {
                "type": "object",
                "required": [
                  "days",
                  "from",
                  "to"
                ],
                "properties": {
                  "days": {
                    "type": "integer"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  }
                }
              },
              "latest_stale_after_days": {
                "type": "number"
              },
              "generated": {
                "type": "string"
              }
            }
          }
        },
        "excluded": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "destination",
              "rail",
              "reason",
              "history_days"
            ],
            "properties": {
              "destination": {
                "type": "string"
              },
              "rail": {
                "type": "string",
                "enum": [
                  "flight",
                  "package"
                ]
              },
              "resort_key": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "history_days": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "description": "tool-level failure, returned with isError: true",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      }
    }
  ]
}
🟢compare_destinations(destinations, party, rail, min_history_days)

Put 2-8 named destinations side by side on the same snapshot, each with the stats current_vs_history reports (last measurement, median, min, share of TRACKED DAYS that were dearer). Numbers are for the WHOLE party, not per person, and percentages are over observed days rather than the calendar span. Rows come back in the order you asked for - it does not rank, and gives no verdict; use find_opportunities to rank. A destination that yields no row is returned under `excluded` with the reason.

입력 스키마

{
  "type": "object",
  "properties": {
    "destinations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 8,
      "description": "2-8 destination slugs; the answer keeps this order"
    },
    "party": {
      "type": "string",
      "pattern": "^(0|[1-9]\\d*)-(0|[1-9]\\d*)$",
      "description": "optional (default '2-2'): '<adults>-<children>', the same A-C shape the price streams are keyed on"
    },
    "rail": {
      "type": "string",
      "enum": [
        "flight",
        "package",
        "both"
      ],
      "description": "optional (default both): restrict to one rail"
    },
    "min_history_days": {
      "type": "integer",
      "minimum": 0,
      "description": "optional (default 30): rails measured for fewer days are listed under 'excluded'"
    }
  },
  "required": [
    "destinations"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "required": [
        "schema",
        "generated",
        "party",
        "rail",
        "min_history_days",
        "comparison_rows",
        "comparison",
        "excluded",
        "disclaimer"
      ],
      "properties": {
        "schema": {
          "type": "string"
        },
        "generated": {
          "type": [
            "string",
            "null"
          ],
          "description": "the OLDEST `generated` among the rows and dated exclusions"
        },
        "currency": {
          "type": "string"
        },
        "license": {
          "type": "object",
          "required": [
            "id",
            "url",
            "attribution"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "attribution": {
              "type": "string"
            }
          }
        },
        "disclaimer": {
          "type": "string"
        },
        "party": {
          "type": "string"
        },
        "rail": {
          "type": "string",
          "enum": [
            "flight",
            "package",
            "both"
          ]
        },
        "min_history_days": {
          "type": "integer"
        },
        "comparison_rows": {
          "type": "integer",
          "description": "rows, not destinations - a dual-rail destination contributes two"
        },
        "comparison": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "destination",
              "title",
              "url",
              "generated",
              "rail",
              "party",
              "price_covers",
              "measured",
              "stats"
            ],
            "properties": {
              "destination": {
                "type": "string"
              },
              "title": {
                "type": "object",
                "required": [
                  "cs",
                  "en"
                ],
                "properties": {
                  "cs": {
                    "type": "string"
                  },
                  "en": {
                    "type": "string"
                  }
                }
              },
              "url": {
                "type": "string"
              },
              "generated": {
                "type": "string"
              },
              "rail": {
                "type": "string",
                "enum": [
                  "flight",
                  "package"
                ]
              },
              "resort": {
                "type": "string"
              },
              "resort_key": {
                "type": "string"
              },
              "party": {
                "type": "object",
                "required": [
                  "adults",
                  "children"
                ],
                "properties": {
                  "adults": {
                    "type": "integer"
                  },
                  "children": {
                    "type": "integer"
                  }
                }
              },
              "origins": {
                "type": "object",
                "description": "departure-airport CLUSTER; covers_all_published_prices is false"
              },
              "arrivals": {
                "type": "object",
                "description": "arrival airports RECORDED; covers_all_published_prices is false"
              },
              "searched": {
                "type": "object",
                "description": "the search mode (and fixed dates, where there are any) the series was collected under"
              },
              "price_covers": {
                "type": "object",
                "description": "what the money buys - airfare only, or a package as offered"
              },
              "measured": {
                "type": "object",
                "required": [
                  "days",
                  "from",
                  "to"
                ],
                "properties": {
                  "days": {
                    "type": "integer"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "required": [
                  "basis"
                ],
                "properties": {
                  "basis": {
                    "type": "string"
                  },
                  "min": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "median": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "latest": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "cheaper_than_pct": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "is_series_max": {
                    "type": "boolean"
                  },
                  "is_series_min": {
                    "type": "boolean"
                  }
                }
              },
              "latest_stale_after_days": {
                "type": "number",
                "description": "this rail's own freshness boundary, in days after measured.to"
              },
              "regime_breaks": {
                "type": "array",
                "description": "[from, to] date spans where the series was not comparable"
              }
            }
          }
        },
        "excluded": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "destination",
              "reason"
            ],
            "properties": {
              "destination": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "rail": {
                "type": "string",
                "enum": [
                  "flight",
                  "package",
                  "both"
                ]
              },
              "resort_key": {
                "type": "string"
              },
              "party": {
                "type": "string"
              },
              "measured": {
                "type": "object",
                "required": [
                  "days",
                  "from",
                  "to"
                ],
                "properties": {
                  "days": {
                    "type": "integer"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  }
                }
              },
              "generated": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "description": "tool-level failure, returned with isError: true",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      }
    }
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 5개
검증됨버전이 기록되지 않음도구 5개
검증됨버전이 기록되지 않음도구 5개