Aviasurf
Search and compare flight prices, calendars, airports, routes, and destinations with Aviasurf.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"mcp": {
"url": "https://mcp.aviasurf.com/mcp"
}
}
}远程端点
https://mcp.aviasurf.com/mcpstreamable-http它能做什么
工具清单
工具(8)
🟢cheapest_destinations(air_temp_min, budget_max, continent, country, currency, ...)
Find cached indicative fares from an origin and render interactive destination cards, optionally filtered locally by budget, geography, monthly air or water temperature, distance to the coast, island status, elevation, trip-duration suitability, or an Aviasurf destination group. Connect natural user requests to filters: 'mountains' or 'в горы' means elevation_min_m; 'weekend getaway' or 'на выходные' means trip_duration_band=weekend; 'islands' or 'на острова' means island=true; 'where can I swim?' or 'где купаться' means month plus water_temp_min. Prices are per adult. Temperature filters require month. Missing water data excludes a destination only when water_temp_min is requested. Historical significance, when present, is explicitly a sparse model estimate, not a measured fact. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Use group=russia explicitly for Russian domestic destinations.
输入模式
{
"type": "object",
"properties": {
"air_temp_min": {
"description": "Minimum monthly air temperature in degrees Celsius. Requires month and excludes destinations without air-temperature data.",
"maximum": 60,
"minimum": -80,
"type": "number"
},
"budget_max": {
"description": "Maximum indicative price, applied locally.",
"minimum": 1,
"type": "integer"
},
"continent": {
"description": "Seven-continent destination code, applied locally.",
"enum": [
"AF",
"AN",
"AS",
"EU",
"NA",
"OC",
"SA"
],
"type": "string"
},
"country": {
"description": "Two-letter destination country filter, applied locally.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"direct": {
"default": false,
"description": "Request nonstop observations only.",
"type": "boolean"
},
"elevation_min_m": {
"description": "Minimum destination elevation above sea level in metres, applied locally. Use for mountain or high-altitude requests such as 'I want to go to the mountains' or 'хочу в горы'.",
"maximum": 9000,
"minimum": -500,
"type": "number"
},
"group": {
"description": "Curated destination group, applied locally. asia: cities in selected Asian countries. schengen: cities in the Schengen area. russia: domestic Russian destinations. Use the separate measured coast, monthly temperature, island, and elevation filters for those traits; do not infer unsupported themes.",
"enum": [
"asia",
"schengen",
"russia"
],
"type": "string"
},
"island": {
"default": false,
"description": "When true, return tourist island destinations rather than dense urban island districts or continent-sized landmasses. Use for requests such as 'take me to an island' or 'куда на острова'.",
"type": "boolean"
},
"limit": {
"default": 10,
"description": "Maximum number of destinations to return, applied locally.",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"locale": {
"default": "en",
"description": "Language locale for reference names and response text.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"max_coast_distance_km": {
"description": "Maximum destination-city distance to the coast in kilometres, applied locally from the Aviasurf destination knowledge base.",
"minimum": 0,
"type": "number"
},
"month": {
"description": "Optional departure month.",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"sort": {
"default": "price",
"description": "Sort by indicative price or preserve upstream popularity order.",
"enum": [
"price",
"popularity"
],
"type": "string"
},
"subregion": {
"description": "UN M49 destination subregion in lowercase snake_case, applied locally.",
"enum": [
"antarctica",
"australia_and_new_zealand",
"caribbean",
"central_america",
"central_asia",
"eastern_africa",
"eastern_asia",
"eastern_europe",
"melanesia",
"micronesia",
"middle_africa",
"northern_africa",
"northern_america",
"northern_europe",
"polynesia",
"south_america",
"south_eastern_asia",
"southern_africa",
"southern_asia",
"southern_europe",
"western_africa",
"western_asia",
"western_europe"
],
"type": "string"
},
"trip_duration_band": {
"description": "Route-suitability band from the destination knowledge base. Use weekend for requests such as 'weekend getaway' or 'куда на выходные'; use the other bands for an explicitly requested trip length.",
"enum": [
"day_trip",
"weekend",
"short_trip",
"week",
"extended_stay"
],
"type": "string"
},
"water_temp_min": {
"description": "Minimum monthly water temperature in degrees Celsius. Use with month for requests such as 'where can I swim?' or 'где можно купаться'; destinations without water data are excluded.",
"maximum": 40,
"minimum": -5,
"type": "number"
}
},
"required": [
"origin"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"search_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"origin": {
"type": "string"
},
"month": {
"type": "string"
},
"budget_max": {
"type": "integer"
},
"direct": {
"type": "boolean"
},
"country": {
"type": "string"
},
"continent": {
"type": "string"
},
"subregion": {
"type": "string"
},
"group": {
"type": "string"
},
"max_coast_distance_km": {
"type": [
"null",
"number"
]
},
"water_temp_min": {
"type": [
"null",
"number"
]
},
"air_temp_min": {
"type": [
"null",
"number"
]
},
"island": {
"type": "boolean"
},
"elevation_min_m": {
"type": [
"null",
"number"
]
},
"trip_duration_band": {
"type": "string"
},
"sort": {
"type": "string"
},
"limit": {
"type": "integer"
},
"currency": {
"type": "string"
},
"market": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"origin",
"direct",
"sort",
"limit",
"currency",
"market",
"locale"
],
"additionalProperties": false
},
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"offer_key": {
"type": "string"
},
"destination": {
"type": "string"
},
"destination_name": {
"type": "string"
},
"country_code": {
"type": "string"
},
"country_name": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"departure_at": {
"type": [
"null",
"string"
]
},
"transfers": {
"type": [
"null",
"integer"
]
},
"destination_image_url": {
"type": "string"
},
"flag_url": {
"type": "string"
},
"airline": {
"type": "string"
},
"airline_name": {
"type": "string"
},
"airline_logo_url": {
"type": "string"
},
"water_temperature_c": {
"type": [
"null",
"number"
]
},
"air_temperature_c": {
"type": [
"null",
"number"
]
},
"coast_distance_km": {
"type": [
"null",
"number"
]
},
"island": {
"type": [
"null",
"boolean"
]
},
"elevation_m": {
"type": [
"null",
"number"
]
},
"trip_duration_band": {
"type": "string"
},
"unesco_sites": {
"type": [
"null",
"integer"
]
},
"historical_significance": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": "integer"
},
"scale": {
"type": "string"
},
"method": {
"type": "string"
},
"source": {
"type": "string"
}
},
"required": [
"value",
"scale",
"method"
],
"additionalProperties": false
},
"ticket_url": {
"type": "string"
}
},
"required": [
"offer_key",
"destination",
"price",
"currency",
"ticket_url"
],
"additionalProperties": false
}
},
"freshness": {
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"fallback_reason": {
"type": [
"null",
"string"
]
},
"query_coverage": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"applied_upstream": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"applied_locally": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"relaxed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"unsupported": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"source",
"complete",
"applied_upstream",
"applied_locally",
"relaxed",
"unsupported"
],
"additionalProperties": false
},
"updated_at": {
"type": "string"
},
"currency": {
"type": "string"
},
"price_kind": {
"type": "string"
},
"search_url": {
"type": "string"
},
"note": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"search_id",
"query",
"items",
"freshness",
"fallback_used",
"fallback_reason",
"query_coverage",
"updated_at",
"currency",
"price_kind",
"search_url",
"note"
],
"additionalProperties": false
}🟢compare_airports(currency, depart_date, depart_month, destination, direct, ...)
Compare cached indicative fare samples in an interactive airport comparison across airports of the origin city, destination city, or both. Prices are per adult. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Outbound and inbound are calculated separately. Missing prices mean no cached observation, not that no flight exists.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"depart_date": {
"description": "Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month.",
"format": "date",
"type": "string"
},
"depart_month": {
"description": "Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date.",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
},
"destination": {
"description": "Destination city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"direct": {
"default": false,
"description": "Request nonstop observations only.",
"type": "boolean"
},
"direction": {
"default": "outbound",
"description": "Compare outbound routes, inbound routes, or both independently.",
"enum": [
"outbound",
"inbound",
"both"
],
"type": "string"
},
"locale": {
"default": "en",
"description": "Language locale for airport and airline names and response text.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"return_date": {
"description": "Optional return date for outbound price comparisons.",
"format": "date",
"type": "string"
},
"side": {
"default": "both",
"description": "Expand airports on the origin side, destination side, or both.",
"enum": [
"origin",
"destination",
"both"
],
"type": "string"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false,
"not": {
"required": [
"depart_date",
"depart_month"
]
}
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"search_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"depart_date": {
"type": "string"
},
"depart_month": {
"type": "string"
},
"return_date": {
"type": "string"
},
"side": {
"type": "string"
},
"direction": {
"type": "string"
},
"direct": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"market": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"origin",
"destination",
"side",
"direction",
"direct",
"currency",
"market",
"locale"
],
"additionalProperties": false
},
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"direction": {
"type": "string"
},
"origin_airport": {
"type": "object",
"properties": {
"airport_code": {
"type": "string"
},
"airport_name": {
"type": "string"
},
"city_code": {
"type": "string"
},
"distance_to_city_km": {
"type": [
"null",
"number"
]
}
},
"required": [
"airport_code",
"city_code"
],
"additionalProperties": false
},
"destination_airport": {
"type": "object",
"properties": {
"airport_code": {
"type": "string"
},
"airport_name": {
"type": "string"
},
"city_code": {
"type": "string"
},
"distance_to_city_km": {
"type": [
"null",
"number"
]
}
},
"required": [
"airport_code",
"city_code"
],
"additionalProperties": false
},
"offer_key": {
"type": "string"
},
"ticket_url": {
"type": "string"
},
"cheapest": {
"type": "boolean"
},
"stats": {
"type": "object",
"properties": {
"min_price": {
"type": [
"null",
"number"
]
},
"median_price": {
"type": [
"null",
"number"
]
},
"avg_price": {
"type": [
"null",
"number"
]
},
"sample_size": {
"type": "integer"
},
"sample_period": {
"type": [
"null",
"object"
],
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"direct_seen": {
"type": [
"null",
"boolean"
]
},
"direct_share": {
"type": [
"null",
"number"
]
},
"duration_min_minutes": {
"type": [
"null",
"integer"
]
},
"airlines_seen": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"logo_url": {
"type": "string"
},
"direct_seen": {
"type": "boolean"
}
},
"required": [
"code",
"direct_seen"
],
"additionalProperties": false
}
},
"stats_suppressed": {
"type": "string"
}
},
"required": [
"min_price",
"sample_size",
"airlines_seen"
],
"additionalProperties": false
}
},
"required": [
"direction",
"origin_airport",
"destination_airport",
"ticket_url",
"cheapest",
"stats"
],
"additionalProperties": false
}
},
"freshness": {
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"fallback_reason": {
"type": [
"null",
"string"
]
},
"query_coverage": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"applied_upstream": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"applied_locally": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"relaxed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"unsupported": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"source",
"complete",
"applied_upstream",
"applied_locally",
"relaxed",
"unsupported"
],
"additionalProperties": false
},
"updated_at": {
"type": "string"
},
"currency": {
"type": "string"
},
"price_kind": {
"type": "string"
},
"search_url": {
"type": "string"
},
"note": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"search_id",
"query",
"items",
"freshness",
"fallback_used",
"fallback_reason",
"query_coverage",
"updated_at",
"currency",
"price_kind",
"search_url",
"note"
],
"additionalProperties": false
}🟢flight_prices(currency, depart_date, depart_month, destination, direct, ...)
Find cached indicative 'from' fares for a route and render interactive flight cards. Prices are per adult. These are historical observations, not live availability or booking offers. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"depart_date": {
"description": "Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month.",
"format": "date",
"type": "string"
},
"depart_month": {
"description": "Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date.",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
},
"destination": {
"description": "Destination city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"direct": {
"default": false,
"description": "Request nonstop options only.",
"type": "boolean"
},
"limit": {
"default": 10,
"description": "Maximum number of public fare items to return.",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"locale": {
"default": "en",
"description": "Language locale for names and response text.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"one_way": {
"description": "Search a one-way trip; inferred from return_date when omitted.",
"type": "boolean"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"return_date": {
"description": "Optional return date for a round trip.",
"format": "date",
"type": "string"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false,
"not": {
"required": [
"depart_date",
"depart_month"
]
}
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"search_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"depart_date": {
"type": "string"
},
"depart_month": {
"type": "string"
},
"return_date": {
"type": "string"
},
"one_way": {
"type": "boolean"
},
"direct": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"market": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"origin",
"destination",
"one_way",
"direct",
"currency",
"market",
"locale"
],
"additionalProperties": false
},
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"offer_key": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"airline": {
"type": "string"
},
"airline_name": {
"type": "string"
},
"airline_logo_url": {
"type": "string"
},
"origin_airport": {
"type": "string"
},
"destination_airport": {
"type": "string"
},
"departure_at": {
"type": [
"null",
"string"
]
},
"return_departure_date": {
"type": "string"
},
"return_at": {
"type": [
"null",
"string"
]
},
"transfers": {
"type": [
"null",
"integer"
]
},
"return_transfers": {
"type": [
"null",
"integer"
]
},
"duration_minutes": {
"type": [
"null",
"integer"
]
},
"baggage_status": {
"type": "string"
},
"trip_class": {
"type": "string"
},
"aircraft_code": {
"type": "string"
},
"aircraft": {
"type": "string"
},
"flight_number": {
"type": "string"
},
"ticket_url": {
"type": "string"
},
"found_at": {
"type": [
"null",
"string"
]
},
"price_position": {
"type": "string"
}
},
"required": [
"offer_key",
"price",
"currency",
"baggage_status",
"ticket_url"
],
"additionalProperties": false
}
},
"freshness": {
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"fallback_reason": {
"type": [
"null",
"string"
]
},
"query_coverage": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"applied_upstream": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"applied_locally": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"relaxed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"unsupported": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"source",
"complete",
"applied_upstream",
"applied_locally",
"relaxed",
"unsupported"
],
"additionalProperties": false
},
"updated_at": {
"type": "string"
},
"currency": {
"type": "string"
},
"price_kind": {
"type": "string"
},
"search_url": {
"type": "string"
},
"note": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"search_id",
"query",
"items",
"freshness",
"fallback_used",
"fallback_reason",
"query_coverage",
"updated_at",
"currency",
"price_kind",
"search_url",
"note"
],
"additionalProperties": false
}🟢flight_prices_filtered(airlines, convenient, currency, depart_date_max, depart_date_min, ...)
Find cached indicative fares with baggage, cabin, direct-flight, budget, flexible-date, and trip-duration filters and render interactive flight cards. Prices are per adult. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Airline, departure-time, and transfer-count filters are applied only to the returned cache sample and are reported in query_coverage. Use flight_prices for requests that do not need these filters.
输入模式
{
"type": "object",
"properties": {
"airlines": {
"description": "Allowed airline IATA codes, applied locally to the returned sample.",
"items": {
"pattern": "^[A-Za-z0-9]{2,3}$",
"type": "string"
},
"maxItems": 10,
"type": "array"
},
"convenient": {
"description": "Ask upstream for convenient itineraries.",
"type": "boolean"
},
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"depart_date_max": {
"description": "Latest departure date, inclusive.",
"format": "date",
"type": "string"
},
"depart_date_min": {
"description": "Earliest departure date, inclusive.",
"format": "date",
"type": "string"
},
"departure_time_max": {
"description": "Latest local departure time in HH:MM format, applied locally.",
"pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$",
"type": "string"
},
"departure_time_min": {
"description": "Earliest local departure time in HH:MM format, applied locally.",
"pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$",
"type": "string"
},
"direct": {
"description": "Ask upstream for nonstop options only.",
"type": "boolean"
},
"grouping": {
"description": "Optional upstream grouping mode.",
"enum": [
"NONE",
"DEPART_DATE",
"DIRECTIONS",
"DATES",
"DATES_NUM_OF_CHANGES",
"YEAR_MONTH"
],
"type": "string"
},
"limit": {
"default": 30,
"description": "Maximum upstream samples per pair.",
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"locale": {
"default": "en",
"description": "Language locale for names and response text.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"no_lowcost": {
"description": "Exclude low-cost carriers upstream.",
"type": "boolean"
},
"no_visa_at_transfer": {
"description": "Exclude itineraries flagged as requiring a transit visa.",
"type": "boolean"
},
"offset": {
"description": "Upstream result offset.",
"minimum": 0,
"type": "integer"
},
"one_way": {
"description": "Search one-way trips; inferred from return constraints when omitted.",
"type": "boolean"
},
"pairs": {
"description": "One to three origin/destination pairs to search in one batch.",
"items": {
"additionalProperties": false,
"properties": {
"destination": {
"description": "Destination city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
}
},
"required": [
"origin",
"destination"
],
"type": "object"
},
"maxItems": 3,
"minItems": 1,
"type": "array"
},
"return_date_max": {
"description": "Latest return date, inclusive.",
"format": "date",
"type": "string"
},
"return_date_min": {
"description": "Earliest return date, inclusive.",
"format": "date",
"type": "string"
},
"sorting": {
"default": "VALUE_ASC",
"description": "Upstream result ordering.",
"enum": [
"VALUE_ASC",
"ROUTE_WEIGHT_DESC",
"DISCOUNT_DESC"
],
"type": "string"
},
"transfers_max": {
"description": "Maximum number of transfers, applied locally to the returned sample.",
"maximum": 4,
"minimum": 0,
"type": "integer"
},
"trip_class": {
"description": "Cabin class; human-readable names are preferred and Y/W/C/F are accepted aliases.",
"enum": [
"economy",
"premium_economy",
"business",
"first",
"Y",
"W",
"C",
"F"
],
"type": "string"
},
"trip_duration_max": {
"description": "Maximum trip length in days for round trips.",
"minimum": 1,
"type": "integer"
},
"trip_duration_min": {
"description": "Minimum trip length in days for round trips.",
"minimum": 1,
"type": "integer"
},
"value_max": {
"description": "Maximum indicative price in the requested currency.",
"minimum": 0,
"type": "integer"
},
"value_min": {
"description": "Minimum indicative price in the requested currency.",
"minimum": 0,
"type": "integer"
},
"with_baggage": {
"description": "Ask upstream for options marked as including baggage.",
"type": "boolean"
}
},
"required": [
"pairs",
"depart_date_min"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"search_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"pairs": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false
}
},
"direct": {
"type": [
"null",
"boolean"
]
},
"with_baggage": {
"type": [
"null",
"boolean"
]
},
"no_lowcost": {
"type": [
"null",
"boolean"
]
},
"convenient": {
"type": [
"null",
"boolean"
]
},
"no_visa_at_transfer": {
"type": [
"null",
"boolean"
]
},
"trip_class": {
"type": "string"
},
"value_min": {
"type": "integer"
},
"value_max": {
"type": "integer"
},
"trip_duration_min": {
"type": "integer"
},
"trip_duration_max": {
"type": "integer"
},
"depart_date_min": {
"type": "string"
},
"depart_date_max": {
"type": "string"
},
"return_date_min": {
"type": "string"
},
"return_date_max": {
"type": "string"
},
"sorting": {
"type": "string"
},
"grouping": {
"type": "string"
},
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"airlines": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"departure_time_min": {
"type": "string"
},
"departure_time_max": {
"type": "string"
},
"transfers_max": {
"type": [
"null",
"integer"
]
},
"currency": {
"type": "string"
},
"market": {
"type": "string"
},
"locale": {
"type": "string"
},
"one_way": {
"type": "boolean"
}
},
"required": [
"pairs",
"depart_date_min",
"one_way"
],
"additionalProperties": false
},
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"offer_key": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"airline": {
"type": "string"
},
"airline_name": {
"type": "string"
},
"airline_logo_url": {
"type": "string"
},
"origin_airport": {
"type": "string"
},
"destination_airport": {
"type": "string"
},
"departure_at": {
"type": [
"null",
"string"
]
},
"return_departure_date": {
"type": "string"
},
"return_at": {
"type": [
"null",
"string"
]
},
"transfers": {
"type": [
"null",
"integer"
]
},
"return_transfers": {
"type": [
"null",
"integer"
]
},
"duration_minutes": {
"type": [
"null",
"integer"
]
},
"baggage_status": {
"type": "string"
},
"trip_class": {
"type": "string"
},
"aircraft_code": {
"type": "string"
},
"aircraft": {
"type": "string"
},
"flight_number": {
"type": "string"
},
"ticket_url": {
"type": "string"
},
"found_at": {
"type": [
"null",
"string"
]
},
"price_position": {
"type": "string"
}
},
"required": [
"offer_key",
"price",
"currency",
"baggage_status",
"ticket_url"
],
"additionalProperties": false
}
},
"freshness": {
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"fallback_reason": {
"type": [
"null",
"string"
]
},
"query_coverage": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"applied_upstream": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"applied_locally": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"relaxed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"unsupported": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"source",
"complete",
"applied_upstream",
"applied_locally",
"relaxed",
"unsupported"
],
"additionalProperties": false
},
"updated_at": {
"type": "string"
},
"currency": {
"type": "string"
},
"price_kind": {
"type": "string"
},
"search_url": {
"type": "string"
},
"note": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"search_id",
"query",
"items",
"freshness",
"fallback_used",
"fallback_reason",
"query_coverage",
"updated_at",
"currency",
"price_kind",
"search_url",
"note"
],
"additionalProperties": false
}🟢open_search(adults, children, currency, depart_date, destination, ...)
Build an Aviasurf live-search URL with dates, passenger composition, cabin class, currency, and locale. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. This opens live search; it does not confirm a fare or availability.
输入模式
{
"type": "object",
"properties": {
"adults": {
"default": 1,
"description": "Number of adult passengers.",
"minimum": 1,
"type": "integer"
},
"children": {
"default": 0,
"description": "Number of child passengers.",
"minimum": 0,
"type": "integer"
},
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"depart_date": {
"description": "Optional departure date to prefill in live search.",
"format": "date",
"type": "string"
},
"destination": {
"description": "Destination city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"infants": {
"default": 0,
"description": "Number of infant passengers.",
"minimum": 0,
"type": "integer"
},
"locale": {
"default": "en",
"description": "Language locale for the live search page.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"return_date": {
"description": "Optional return date to prefill in live search.",
"format": "date",
"type": "string"
},
"trip_class": {
"default": "economy",
"description": "Cabin class; human-readable names are preferred and Y/W/C/F are accepted aliases.",
"enum": [
"economy",
"premium_economy",
"business",
"first",
"Y",
"W",
"C",
"F"
],
"type": "string"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"search_url": {
"type": "string"
}
},
"required": [
"search_url"
],
"additionalProperties": false
}🟢price_calendar(currency, depart_date, depart_month, destination, direct, ...)
Show cached indicative price observations in an interactive calendar by day, by month, or as observed departure/return date pairs. Prices are per adult. Every monthly row includes sample_size and sample_sufficient. A month with sample_sufficient=false is a limited cached observation, not a reliable monthly minimum or evidence of seasonality; state that limitation instead of drawing a seasonal conclusion. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Missing dates mean no cached observation, not that no flight exists.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"depart_date": {
"description": "Center date for the local plus-or-minus three-day window.",
"format": "date",
"type": "string"
},
"depart_month": {
"description": "Month for a daily calendar or observed date pairs.",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
},
"destination": {
"description": "Destination city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"direct": {
"default": false,
"description": "Request nonstop observations only.",
"type": "boolean"
},
"group_by": {
"default": "departure_at",
"description": "Calendar mode: daily departures, monthly minima, or observed round-trip date pairs.",
"enum": [
"departure_at",
"month",
"dates_pair"
],
"type": "string"
},
"locale": {
"default": "en",
"description": "Language locale for response text and live-search handoff.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"months_ahead": {
"default": 6,
"description": "Number of months including the current partial month for month mode.",
"maximum": 12,
"minimum": 1,
"type": "integer"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"top_n": {
"default": 10,
"description": "Maximum number of cheapest dates to include in top_dates.",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"trip_duration_max": {
"description": "Maximum trip length in days for observed date pairs.",
"minimum": 1,
"type": "integer"
},
"trip_duration_min": {
"description": "Minimum trip length in days for observed date pairs.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"search_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"depart_month": {
"type": "string"
},
"depart_date": {
"type": "string"
},
"group_by": {
"type": "string"
},
"months_ahead": {
"type": "integer"
},
"top_n": {
"type": "integer"
},
"trip_duration_min": {
"type": "integer"
},
"trip_duration_max": {
"type": "integer"
},
"direct": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"market": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"origin",
"destination",
"group_by",
"direct",
"currency",
"market",
"locale"
],
"additionalProperties": false
},
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"offer_key": {
"type": "string"
},
"date": {
"type": "string"
},
"price": {
"type": "number"
},
"airline": {
"type": "string"
},
"transfers": {
"type": [
"null",
"integer"
]
},
"best": {
"type": "boolean"
}
},
"required": [
"offer_key",
"date",
"price",
"best"
],
"additionalProperties": false
}
},
"months": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"month": {
"type": "string"
},
"offer_key": {
"type": "string"
},
"min_price": {
"type": [
"null",
"number"
]
},
"min_date": {
"type": "string"
},
"sample_size": {
"type": "integer"
},
"sample_sufficient": {
"type": "boolean"
},
"airline": {
"type": "string"
},
"transfers": {
"type": [
"null",
"integer"
]
}
},
"required": [
"month",
"min_price",
"sample_size",
"sample_sufficient"
],
"additionalProperties": false
}
},
"top_dates": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"offer_key": {
"type": "string"
},
"date": {
"type": "string"
},
"price": {
"type": "number"
},
"airline": {
"type": "string"
},
"transfers": {
"type": [
"null",
"integer"
]
},
"best": {
"type": "boolean"
}
},
"required": [
"offer_key",
"date",
"price",
"best"
],
"additionalProperties": false
}
},
"date_pairs": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"offer_key": {
"type": "string"
},
"depart_date": {
"type": "string"
},
"return_date": {
"type": "string"
},
"price": {
"type": "number"
},
"airline": {
"type": "string"
},
"transfers": {
"type": [
"null",
"integer"
]
}
},
"required": [
"offer_key",
"depart_date",
"return_date",
"price"
],
"additionalProperties": false
}
},
"min_price": {
"type": [
"null",
"number"
]
},
"min_dates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"max_price": {
"type": [
"null",
"number"
]
},
"median_price": {
"type": [
"null",
"number"
]
},
"freshness": {
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"fallback_reason": {
"type": [
"null",
"string"
]
},
"query_coverage": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"applied_upstream": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"applied_locally": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"relaxed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"unsupported": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"source",
"complete",
"applied_upstream",
"applied_locally",
"relaxed",
"unsupported"
],
"additionalProperties": false
},
"updated_at": {
"type": "string"
},
"currency": {
"type": "string"
},
"price_kind": {
"type": "string"
},
"search_url": {
"type": "string"
},
"note": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"search_id",
"query",
"freshness",
"fallback_used",
"fallback_reason",
"query_coverage",
"updated_at",
"currency",
"price_kind",
"search_url",
"note"
],
"additionalProperties": false
}🟢resolve_place(limit, locale, query, types)
Resolve a city, airport, or country name to IATA/location candidates. Returns every plausible candidate instead of guessing, and includes airports for city candidates.
输入模式
{
"type": "object",
"properties": {
"limit": {
"default": 5,
"description": "Maximum number of candidates to return.",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"locale": {
"default": "en",
"description": "Language locale for returned place names.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"query": {
"description": "Place name or IATA code to resolve.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"types": {
"default": [
"city",
"airport",
"country"
],
"description": "Place types to include in the candidates.",
"items": {
"enum": [
"city",
"airport",
"country"
],
"type": "string"
},
"maxItems": 3,
"type": "array",
"uniqueItems": true
}
},
"required": [
"query"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"locale": {
"type": "string"
},
"types": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"query",
"locale",
"types"
],
"additionalProperties": false
},
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"country_code": {
"type": "string"
},
"country_name": {
"type": "string"
},
"city_code": {
"type": "string"
},
"main_airport_name": {
"type": "string"
},
"coordinates": {
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"airports": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
],
"additionalProperties": false
}
}
},
"required": [
"code",
"type",
"name",
"coordinates"
],
"additionalProperties": false
}
},
"ambiguous": {
"type": "boolean"
},
"freshness": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"query",
"items",
"ambiguous",
"freshness",
"updated_at"
],
"additionalProperties": false
}🟢route_facts(currency, depart_date, depart_month, destination, locale, ...)
Summarize a cached fare sample in an interactive route profile: price statistics, airlines observed, travel duration, route distance, and city airports. Prices are per adult. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. direct_seen means only that a nonstop option appeared in the sample; never infer that direct flights do not exist.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"depart_date": {
"description": "Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month.",
"format": "date",
"type": "string"
},
"depart_month": {
"description": "Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date.",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"type": "string"
},
"destination": {
"description": "Destination city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"locale": {
"default": "en",
"description": "Language locale for airport and airline names.",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"type": "string"
},
"market": {
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.",
"pattern": "^[A-Za-z]{2}$",
"type": "string"
},
"origin": {
"description": "Origin city or airport IATA code.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"return_date": {
"description": "Optional return date for a round trip.",
"format": "date",
"type": "string"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false,
"not": {
"required": [
"depart_date",
"depart_month"
]
}
}输出模式
{
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"request_id": {
"type": "string"
},
"search_id": {
"type": "string"
},
"query": {
"type": "object",
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"depart_date": {
"type": "string"
},
"depart_month": {
"type": "string"
},
"return_date": {
"type": "string"
},
"one_way": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"market": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"origin",
"destination",
"one_way",
"currency",
"market",
"locale"
],
"additionalProperties": false
},
"stats": {
"type": "object",
"properties": {
"min_price": {
"type": [
"null",
"number"
]
},
"median_price": {
"type": [
"null",
"number"
]
},
"avg_price": {
"type": [
"null",
"number"
]
},
"sample_size": {
"type": "integer"
},
"sample_period": {
"type": [
"null",
"object"
],
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"direct_seen": {
"type": [
"null",
"boolean"
]
},
"direct_share": {
"type": [
"null",
"number"
]
},
"duration_min_minutes": {
"type": [
"null",
"integer"
]
},
"airlines_seen": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"logo_url": {
"type": "string"
},
"direct_seen": {
"type": "boolean"
}
},
"required": [
"code",
"direct_seen"
],
"additionalProperties": false
}
},
"stats_suppressed": {
"type": "string"
}
},
"required": [
"min_price",
"sample_size",
"airlines_seen"
],
"additionalProperties": false
},
"origin_airports": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"airport_code": {
"type": "string"
},
"name": {
"type": "string"
},
"city_code": {
"type": "string"
}
},
"required": [
"airport_code",
"city_code"
],
"additionalProperties": false
}
},
"destination_airports": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"airport_code": {
"type": "string"
},
"name": {
"type": "string"
},
"city_code": {
"type": "string"
}
},
"required": [
"airport_code",
"city_code"
],
"additionalProperties": false
}
},
"freshness": {
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"fallback_reason": {
"type": [
"null",
"string"
]
},
"query_coverage": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"applied_upstream": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"applied_locally": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"relaxed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"unsupported": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"source",
"complete",
"applied_upstream",
"applied_locally",
"relaxed",
"unsupported"
],
"additionalProperties": false
},
"updated_at": {
"type": "string"
},
"currency": {
"type": "string"
},
"price_kind": {
"type": "string"
},
"search_url": {
"type": "string"
},
"note": {
"type": "string"
},
"warnings": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"required": [
"schema_version",
"request_id",
"search_id",
"query",
"stats",
"origin_airports",
"destination_airports",
"freshness",
"fallback_used",
"fallback_reason",
"query_coverage",
"updated_at",
"currency",
"price_kind",
"search_url",
"note"
],
"additionalProperties": false
}社区
证据