此 MCP 可以做什么
Supports Mediterranean sailing with marine and weather forecasts, tides, nautical routing, geocoding, place search, boat profiles, favorites, ratings, and saved itineraries.
工具
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['expression'], 'properties': {'precision': {'type': 'integer', 'default': 4, 'maximum': 15, 'minimum': 0, 'examples': [2, 4, 6], 'description': 'Decimal places in the result (default 4)'}, 'expression': {'type': 'string', 'examples': ['(450 / 8.5) * 1.1', 'sqrt(3^2 + 4^2)', '45 * 1.852'], 'maxLength': 500, 'minLength': 1, 'description': 'Math expression to evaluate'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['expression', 'result', 'precision'], 'properties': {'result': {'type': 'number'}, 'precision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'expression': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'anyOf': [{'type': 'number'}, {'type': 'string'}], 'examples': [41.0289, '41°01â\x80²44.04â\x80³N', "41°01.7'N"], 'description': 'Latitude as decimal degrees or DMS/DM string'}, 'longitude': {'anyOf': [{'type': 'number'}, {'type': 'string'}], 'examples': [9.545, '009°32â\x80²42.00â\x80³E', "9°32.7'E"], 'description': 'Longitude as decimal degrees or DMS/DM string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['decimal', 'dms', 'dm', 'input_format'], 'properties': {'dm': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'string'}, 'longitude': {'type': 'string'}}, 'additionalProperties': False}, 'dms': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'string'}, 'longitude': {'type': 'string'}}, 'additionalProperties': False}, 'decimal': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'input_format': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'string'}, 'longitude': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type'], 'properties': {'type': {'enum': ['marina', 'port', 'bay', 'fuel_station', 'yacht_club', 'city', 'island', 'cape', 'gulf', 'lighthouse', 'beach', 'town', 'village', 'peninsula', 'strait', 'restaurant', 'bar', 'cafe', 'supermarket', 'convenience', 'bakery', 'pharmacy', 'atm', 'laundry', 'post_office', 'clinic', 'water_point', 'chandlery'], 'type': 'string', 'examples': ['marina', 'bay', 'port'], 'description': "Place type to describe. See nausika_describe_place_schema response 'Valid place types' for the full enum."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'requestedType', 'promotedColumns', 'attributes', 'imageFields', 'imageRules', 'universalRules', 'agentRules', 'agentRuleNotes'], 'properties': {'type': {'type': 'string'}, 'agentRules': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'requirement'], 'properties': {'field': {'type': 'string'}, 'appliesTo': {'type': 'array', 'items': {'type': 'string'}}, 'rationale': {'type': 'string'}, 'requirement': {'type': 'string'}}, 'additionalProperties': False}}, 'attributes': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'required'], 'properties': {'enum': {'type': 'array', 'items': {'type': 'string'}}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'required': {'type': 'boolean'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'imageRules': {'type': 'object', 'required': ['maxCount', 'dedupKey', 'acceptedSources', 'forbiddenSources', 'validation'], 'properties': {'dedupKey': {'type': 'string'}, 'maxCount': {'type': 'number'}, 'validation': {'type': 'string'}, 'acceptedSources': {'type': 'string'}, 'forbiddenSources': {'type': 'string'}}, 'additionalProperties': False}, 'imageFields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'required'], 'properties': {'enum': {'type': 'array', 'items': {'type': 'string'}}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'required': {'type': 'boolean'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'requestedType': {'type': 'string'}, 'agentRuleNotes': {'type': 'object', 'required': ['appliesTo', 'bypassedBy', 'errorBehavior'], 'properties': {'appliesTo': {'type': 'string'}, 'bypassedBy': {'type': 'string'}, 'errorBehavior': {'type': 'string'}}, 'additionalProperties': False}, 'universalRules': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'requirement'], 'properties': {'field': {'type': 'string'}, 'appliesTo': {'type': 'array', 'items': {'type': 'string'}}, 'rationale': {'type': 'string'}, 'requirement': {'type': 'string'}}, 'additionalProperties': False}}, 'promotedColumns': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'required'], 'properties': {'enum': {'type': 'array', 'items': {'type': 'string'}}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'required': {'type': 'boolean'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 3, 'maximum': 10, 'minimum': 1, 'examples': [1, 3, 5], 'description': 'Max results, default 3, max 10'}, 'query': {'type': 'string', 'examples': ['Porto Cervo', 'Bonifacio', 'Calanque de Sormiou'], 'maxLength': 200, 'minLength': 1, 'description': 'Place name to search, forward geocoding'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 44.3], 'description': 'Latitude for reverse geocoding'}, 'radius_m': {'type': 'integer', 'default': 50000, 'maximum': 200000, 'minimum': 1000, 'examples': [10000, 50000, 100000], 'description': 'Search radius for reverse geocoding in meters, default 50000'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [15.2, 9.21], 'description': 'Longitude for reverse geocoding'}}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mode', 'count', 'results', '_attribution'], 'properties': {'mode': {'enum': ['forward', 'reverse'], 'type': 'string'}, 'count': {'type': 'number'}, 'query': {'type': 'string'}, 'source': {'enum': ['local', 'osm'], 'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'category', 'type', 'latitude', 'longitude', 'description', 'source'], 'properties': {'id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'type': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'source': {'enum': ['local', 'osm'], 'type': 'string'}, 'country': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'category': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'distance_m': {'type': 'number'}, 'similarity': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'source_url': {'type': 'string'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string', 'examples': ['Calypso II'], 'maxLength': 100, 'minLength': 1, 'description': "Boat name. Omit to get the default boat, or use '*' to list all."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'boats': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'loa_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'beam_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'draft_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'user_id': {'type': 'string'}, 'engine_hp': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'is_default': {'type': 'boolean'}, 'engine_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'max_speed_kts': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'certifications': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'displacement_kg': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'fuel_capacity_l': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'safety_equipment': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'water_capacity_l': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cruising_speed_kts': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'motor_consumption_l_per_h': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': {}}}, 'found': {'type': 'boolean'}, 'is_default': {'type': 'boolean'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'examples': [20], 'description': 'Max results (default 20)'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'examples': [0], 'description': 'Offset for pagination'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['favorites', 'limit', 'offset'], 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'favorites': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'place_id', 'note', 'created_at', 'name', 'type', 'latitude', 'longitude', 'description'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'type': {'type': 'string'}, 'latitude': {'type': 'number'}, 'place_id': {'type': 'string'}, 'longitude': {'type': 'number'}, 'created_at': {'type': 'string'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': {}}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['550e8400-e29b-41d4-a716-446655440000', '550e8400'], 'maxLength': 64, 'minLength': 8, 'description': 'Place id â\x80\x94 full UUID or 8+ char hex prefix (the [xxxxxxxx] shown by nausika_search_places).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'name', 'category', 'type', 'latitude', 'longitude', 'coverage_score', 'sources', 'avg_rating', 'rating_count', 'images', 'wiki_images', 'links', 'raw_osm_tags', '_attribution'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$'}, 'i18n': {'type': 'object', 'properties': {'names': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'descriptions': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}, 'name': {'type': 'string'}, 'type': {'enum': ['marina', 'port', 'bay', 'fuel_station', 'yacht_club', 'city', 'island', 'cape', 'gulf', 'lighthouse', 'beach', 'town', 'village', 'peninsula', 'strait', 'restaurant', 'bar', 'cafe', 'supermarket', 'convenience', 'bakery', 'pharmacy', 'atm', 'laundry', 'post_office', 'clinic', 'water_point', 'chandlery'], 'type': 'string'}, 'email': {'type': 'string'}, 'links': {'type': 'object', 'properties': {'osm_url': {'type': 'string'}, 'wikidata_url': {'type': 'string'}, 'wikipedia_url': {'type': 'string'}}, 'additionalProperties': False}, 'phone': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'sort_order', 'thumb_url', 'large_url'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$'}, 'width': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'credit': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'height': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'status': {'enum': ['pending', 'processing', 'ready', 'failed'], 'type': 'string'}, 'caption': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'alt_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'large_url': {'type': 'string'}, 'thumb_url': {'type': 'string'}, 'sort_order': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'attribution_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'sources': {'type': 'array', 'items': {'type': 'string'}}, 'website': {'type': 'string'}, 'category': {'enum': ['poi', 'location'], 'type': 'string'}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'max_loa_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'wikipedia': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'avg_rating': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'own_rating': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'bottom_type': {'type': 'array', 'items': {'enum': ['sand', 'mud', 'rock', 'gravel', 'clay', 'coral', 'weed', 'shells'], 'type': 'string'}}, 'description': {'type': 'string'}, 'distance_km': {'type': 'number'}, 'elevation_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'vhf_channel': {'type': 'string'}, 'wiki_images': {'type': 'array', 'items': {'type': 'string'}}, 'wikidata_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}, 'is_favorited': {'type': 'boolean'}, 'rating_count': {'type': 'number'}, 'raw_osm_tags': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, {'type': 'null'}]}, 'shelter_from': {'type': 'array', 'items': {'enum': ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'], 'type': 'string'}}, 'opening_hours': {'type': 'string'}, 'port_of_entry': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'coverage_score': {'type': 'number'}, 'name_canonical': {'type': 'string'}, 'osm_primary_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'osm_primary_type': {'anyOf': [{'enum': ['node', 'way', 'relation'], 'type': 'string'}, {'type': 'null'}]}, 'data_origin_unverified': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'examples': [50], 'description': 'Max results'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'examples': [0], 'description': 'Offset for pagination'}, 'my_only': {'type': 'boolean', 'default': False, 'examples': [True], 'description': 'List only your own ratings'}, 'place_id': {'type': 'string', 'examples': ['a1b2c3d4-e5f6-7890-abcd-ef0123456789', 'a1b2c3d4'], 'maxLength': 64, 'minLength': 8, 'description': 'Get ratings for a specific place â\x80\x94 full UUID or 8+ char hex prefix from nausika_search_places'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'ratings': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'score': {'type': 'number'}, 'comment': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'user_id': {'type': 'string'}, 'place_id': {'type': 'string'}, 'created_at': {'type': 'string'}, 'updated_at': {'type': 'string'}}, 'additionalProperties': {}}}, 'aggregate': {'type': 'object', 'required': ['avg_rating', 'rating_count'], 'properties': {'dist_1': {'type': 'string'}, 'dist_2': {'type': 'string'}, 'dist_3': {'type': 'string'}, 'dist_4': {'type': 'string'}, 'dist_5': {'type': 'string'}, 'avg_rating': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'rating_count': {'type': 'string'}}, 'additionalProperties': {}}, 'my_rating': {'anyOf': [{'type': 'object', 'properties': {'id': {'type': 'string'}, 'score': {'type': 'number'}, 'comment': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'user_id': {'type': 'string'}, 'place_id': {'type': 'string'}, 'created_at': {'type': 'string'}, 'updated_at': {'type': 'string'}}, 'additionalProperties': {}}, {'type': 'null'}]}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string', 'examples': ['550e8400-e29b-41d4-a716-446655440000', '550e8400'], 'maxLength': 64, 'minLength': 8, 'description': 'Fetch single route â\x80\x94 full UUID or 8+ char hex prefix from nausika_get_routes'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'examples': [20], 'description': 'Max results, 1â\x80\x9350'}, 'query': {'type': 'string', 'examples': ['Corsica', 'summer 2026'], 'description': 'Search by name fragment, case-insensitive'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'examples': [0], 'description': 'Offset for pagination'}, 'route_type': {'enum': ['single', 'itinerary'], 'type': 'string', 'description': 'Filter by type'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'legs': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'name': {'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'routes': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'legs': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'name': {'type': 'string'}, 'user_id': {'type': 'string'}, 'created_at': {'type': 'string'}, 'route_type': {'type': 'string'}, 'updated_at': {'type': 'string'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': {}}}, 'route_type': {'type': 'string'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Latitude in decimal degrees (-90 to 90)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Longitude in decimal degrees (-180 to 180)'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['latitude', 'longitude', 'is_water', 'distance_to_coast_m', 'source', '_attribution'], 'properties': {'source': {'type': 'string'}, 'is_water': {'type': 'boolean'}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}, 'distance_to_coast_m': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'name': {'type': 'string', 'examples': ['Calypso II', 'Mistral'], 'maxLength': 100, 'minLength': 1, 'description': 'Boat name (required for create, identifies boat for update/delete)'}, 'type': {'enum': ['sail', 'motor', 'multihull'], 'type': 'string', 'description': 'Boat type'}, 'loa_m': {'type': 'number', 'maximum': 200, 'minimum': 1, 'examples': [12.5], 'description': 'Length overall in meters'}, 'action': {'enum': ['upsert', 'delete', 'set_default'], 'type': 'string', 'description': 'Create/update, delete, or set a boat as default'}, 'beam_m': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'examples': [4.1], 'description': 'Maximum beam in meters'}, 'draft_m': {'type': 'number', 'maximum': 20, 'minimum': 0.1, 'examples': [1.8], 'description': 'Draft in meters'}, 'engine_hp': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'examples': [30], 'description': 'Engine power in HP'}, 'engine_type': {'enum': ['inboard', 'outboard', 'none'], 'type': 'string', 'description': 'Engine type'}, 'max_speed_kts': {'type': 'number', 'maximum': 80, 'minimum': 0.5, 'examples': [8], 'description': 'Maximum speed in knots'}, 'certifications': {'type': 'string', 'examples': ['CE B'], 'description': 'Certifications'}, 'displacement_kg': {'type': 'integer', 'maximum': 500000, 'minimum': 100, 'examples': [8500], 'description': 'Displacement in kg'}, 'fuel_capacity_l': {'type': 'integer', 'maximum': 50000, 'minimum': 1, 'examples': [200], 'description': 'Fuel tank capacity in liters'}, 'safety_equipment': {'type': 'string', 'examples': ['VHF', 'EPIRB', 'liferaft'], 'description': 'Safety equipment description'}, 'water_capacity_l': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'examples': [250], 'description': 'Water tank capacity in liters'}, 'cruising_speed_kts': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'examples': [6], 'description': 'Cruising speed in knots'}, 'motor_consumption_l_per_h': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'examples': [3.5], 'description': 'Average motor fuel consumption at cruising RPM, in litres per hour'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'action': {'enum': ['upsert', 'delete', 'set_default'], 'type': 'string'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action', 'place_id'], 'properties': {'note': {'type': 'string', 'examples': ['Quiet bay, sheltered from mistral'], 'description': 'Personal note (only for add)'}, 'action': {'enum': ['add', 'remove'], 'type': 'string', 'description': 'Add or remove a favorite'}, 'place_id': {'type': 'string', 'maxLength': 64, 'minLength': 8, 'description': 'Place id â\x80\x94 full UUID or 8+ char hex prefix from nausika_search_places ([xxxxxxxx])'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action', 'place_id'], 'properties': {'id': {'type': 'string'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'place': {'anyOf': [{'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': {}}, {'type': 'null'}]}, 'action': {'enum': ['add', 'remove'], 'type': 'string'}, 'user_id': {'type': 'string'}, 'place_id': {'type': 'string', 'pattern': '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'}, 'created_at': {'type': 'string'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action', 'place_id'], 'properties': {'score': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'examples': [4, 5], 'description': 'Rating 1-5 (required for upsert)'}, 'action': {'enum': ['upsert', 'delete'], 'type': 'string', 'description': 'Create/update or delete your rating'}, 'comment': {'type': 'string', 'examples': ['Clean facilities, friendly staff'], 'description': 'Private comment (only visible to you)'}, 'place_id': {'type': 'string', 'maxLength': 64, 'minLength': 8, 'description': 'Place id â\x80\x94 full UUID or 8+ char hex prefix from nausika_search_places ([xxxxxxxx])'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action', 'place_id'], 'properties': {'action': {'enum': ['upsert', 'delete'], 'type': 'string'}, 'rating': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'score': {'type': 'number'}, 'comment': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'user_id': {'type': 'string'}, 'place_id': {'type': 'string'}, 'created_at': {'type': 'string'}, 'updated_at': {'type': 'string'}}, 'additionalProperties': {}}, 'place_id': {'type': 'string', 'pattern': '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'}, 'aggregate': {'type': 'object', 'required': ['avg_rating', 'rating_count'], 'properties': {'dist_1': {'type': 'string'}, 'dist_2': {'type': 'string'}, 'dist_3': {'type': 'string'}, 'dist_4': {'type': 'string'}, 'dist_5': {'type': 'string'}, 'avg_rating': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'rating_count': {'type': 'string'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'examples': ['550e8400-e29b-41d4-a716-446655440000', '550e8400'], 'maxLength': 64, 'minLength': 8, 'description': 'Route id for update/delete â\x80\x94 full UUID or 8+ char hex prefix from nausika_get_routes'}, 'legs': {'type': 'array', 'items': {'type': 'object', 'required': ['leg_order', 'origin_name', 'origin_lat', 'origin_lon', 'dest_name', 'dest_lat', 'dest_lon'], 'properties': {'pois': {'type': 'array', 'items': {'type': 'object', 'required': ['place_id', 'role'], 'properties': {'note': {'type': 'string', 'description': 'Note about this stop'}, 'role': {'enum': ['overnight', 'fuel', 'dining', 'waypoint'], 'type': 'string', 'description': 'Role of this place in the leg'}, 'place_id': {'type': 'string', 'maxLength': 64, 'minLength': 8, 'description': 'Place id â\x80\x94 full UUID or 8+ char hex prefix from nausika_search_places ([xxxxxxxx])'}}}, 'description': 'Places associated with this leg'}, 'notes': {'type': 'string', 'description': 'Leg notes'}, 'geojson': {'type': 'object', 'description': 'GeoJSON route geometry', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'dest_lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Destination latitude'}, 'dest_lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Destination longitude'}, 'dest_name': {'type': 'string', 'minLength': 1, 'description': 'Destination name'}, 'leg_order': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Order in the itinerary'}, 'origin_lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Origin latitude'}, 'origin_lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Origin longitude'}, 'distance_nm': {'type': 'number', 'description': 'Distance in nautical miles'}, 'origin_name': {'type': 'string', 'minLength': 1, 'description': 'Origin name'}, 'departure_date': {'type': 'string', 'description': 'Planned departure (ISO 8601)'}, 'duration_hours': {'type': 'number', 'description': 'Estimated duration in hours'}}}, 'examples': [[{'dest_lat': 42.7, 'dest_lon': 9.45, 'dest_name': 'Bastia', 'leg_order': 1, 'origin_lat': 44.4, 'origin_lon': 8.93, 'origin_name': 'Genova'}]], 'description': 'Route legs, replaces all existing on update'}, 'name': {'type': 'string', 'examples': ['Genova â\x86\x92 Bastia 2026', 'Tour Corsica'], 'maxLength': 255, 'minLength': 1, 'description': 'Route name'}, 'action': {'enum': ['upsert', 'delete'], 'type': 'string', 'description': 'Create/update or delete'}, 'route_type': {'enum': ['single', 'itinerary'], 'type': 'string', 'description': 'single leg or multi-leg itinerary'}, 'description': {'type': 'string', 'examples': ['Summer crossing with overnight in Calvi'], 'description': 'Route description'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'action': {'enum': ['upsert', 'delete'], 'type': 'string'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['latitude', 'longitude'], 'properties': {'preset': {'enum': ['now', 'today', 'tactical', 'planning', 'extended', 'none'], 'type': 'string', 'default': 'tactical', 'description': 'High-level mode. now=current snapshot, today=24h hourly+daily, tactical=3d hourly_3+daily (default), planning=8d daily, extended=14d daily, none=3d hourly_3+daily but with NO core variables (caller supplies full variables list).'}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'examples': ['2026-06-22'], 'description': 'Window end date YYYY-MM-DD. Used with start_date. Defaults to preset. Same ~16-day (forecast) / ~8-day (marine) window limit as start_date â\x80\x94 use nausika_seasonal_forecast beyond that.'}, 'end_hour': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$', 'examples': ['2026-06-15T18:00', '2026-06-15T23:00'], 'description': 'Window end ISO YYYY-MM-DDThh:mm. Used with start_hour. Defaults to preset.'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Latitude in decimal degrees (WGS84, -90 to 90)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Longitude in decimal degrees (WGS84, -180 to 180)'}, 'variables': {'type': 'array', 'items': {'enum': ['wave_height', 'wave_direction', 'wave_period', 'wind_wave_height', 'wind_wave_direction', 'wind_wave_period', 'wind_wave_peak_period', 'swell_wave_height', 'swell_wave_direction', 'swell_wave_period', 'swell_wave_peak_period', 'secondary_swell_wave_height', 'secondary_swell_wave_direction', 'secondary_swell_wave_period', 'tertiary_swell_wave_height', 'tertiary_swell_wave_direction', 'tertiary_swell_wave_period', 'ocean_current_velocity', 'ocean_current_direction', 'sea_surface_temperature', 'sea_level_height_msl', 'invert_barometer_height', 'wind_speed_10m', 'wind_direction_10m', 'wind_gusts_10m', 'pressure_msl', 'surface_pressure', 'weather_code', 'visibility', 'cloud_cover', 'cloud_cover_low', 'cloud_cover_mid', 'cloud_cover_high', 'precipitation', 'precipitation_probability', 'rain', 'showers', 'temperature_2m', 'apparent_temperature', 'relative_humidity_2m', 'dew_point_2m', 'cape', 'is_day', 'shortwave_radiation', 'sunrise', 'sunset', 'daylight_duration', 'sunshine_duration', 'uv_index_max', 'uv_index_clear_sky_max'], 'type': 'string'}, 'examples': [['wave_height', 'wind_speed_10m'], ['swell_wave_height', 'uv_index_max']], 'description': "Extra variables added to the preset core (additive). Each is routed to its endpoint automatically. Required (non-empty) when preset='none'. Examples: swell_wave_height/swell_wave_direction/swell_wave_period for swell breakdown, ocean_current_velocity/ocean_current_direction (FROM-corrected) for currents, cape for thunderstorm risk, uv_index_max for UV."}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'examples': ['2026-06-15'], 'description': 'Window start date YYYY-MM-DD. Used with end_date. Wins over forecast_hours/forecast_days. Defaults to preset. Must fall within the rolling forecast window (~16 days ahead for atmospheric data, ~8 days for marine/wave data) â\x80\x94 for dates further out, use nausika_seasonal_forecast instead.'}, 'start_hour': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$', 'examples': ['2026-06-15T06:00', '2026-06-15T12:00'], 'description': 'Window start ISO YYYY-MM-DDThh:mm. Used with end_hour. Most specific override (wins over date and hour-count windows). Defaults to preset.'}, 'forecast_days': {'type': 'integer', 'maximum': 16, 'minimum': 1, 'examples': [3, 7], 'description': 'Override preset days (1-16). Forecast endpoint caps at 16, Marine at 8. Defaults to preset.'}, 'forecast_hours': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'examples': [12, 24], 'description': 'Override with an hourly window. Wins over forecast_days. Defaults to preset.'}, 'include_percentiles': {'type': 'boolean', 'default': False, 'description': 'When true, ALSO fetch the Open-Meteo ECMWF IFS-ENS ensemble (50 perturbed members) and expose `<var>_p10/_p50/_p90` percentile series alongside the deterministic forecast for atmospheric variables (precipitation, wind, gusts, pressure, temperature, etc.). Reveals forecast uncertainty â\x80\x94 useful at planning/extended horizons or for convective setups where the deterministic run can disagree wildly with the ensemble median. Waves/swell/currents/SST stay deterministic (no public ensemble). Adds one extra HTTP call (~200ms latency) and grows the hourly payload ~4Ã\x97. Default false.'}, 'temporal_resolution': {'enum': ['hourly_1', 'hourly_3', 'hourly_6'], 'type': 'string', 'description': "Override hourly granularity. hourly_1=every hour, hourly_3=every 3h, hourly_6=every 6h. Defaults to the preset's resolution."}}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['preset', 'timezone', 'coordinates_requested', 'marine_resolved', 'forecast_resolved', 'marine_unavailable_reason', 'forecast_unavailable_reason', 'units'], 'properties': {'daily': {'type': 'object', 'required': ['time'], 'properties': {'time': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'number'}, {'type': 'string'}, {'type': 'null'}]}}}, 'units': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'hourly': {'type': 'object', 'required': ['time'], 'properties': {'time': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'number'}, {'type': 'string'}, {'type': 'null'}]}}}, 'preset': {'enum': ['now', 'today', 'tactical', 'planning', 'extended', 'none'], 'type': 'string'}, 'current': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'anyOf': [{'type': 'number'}, {'type': 'string'}, {'type': 'null'}]}}, 'timezone': {'type': 'string'}, '_disclaimer': {'type': 'string'}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}, 'marine_resolved': {'anyOf': [{'type': 'object', 'required': ['latitude', 'longitude', 'distance_km'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'distance_km': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'forecast_resolved': {'anyOf': [{'type': 'object', 'required': ['latitude', 'longitude', 'distance_km'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'distance_km': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'coordinates_requested': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'marine_unavailable_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'forecast_unavailable_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'enum': ['marina', 'port', 'bay', 'fuel_station', 'yacht_club', 'city', 'island', 'cape', 'gulf', 'lighthouse', 'beach', 'town', 'village', 'peninsula', 'strait', 'restaurant', 'bar', 'cafe', 'supermarket', 'convenience', 'bakery', 'pharmacy', 'atm', 'laundry', 'post_office', 'clinic', 'water_point', 'chandlery'], 'type': 'string', 'description': "Filter by place type (ignored if 'types' is provided)"}, 'limit': {'type': 'integer', 'default': 30, 'maximum': 100, 'minimum': 1, 'examples': [10, 20, 50], 'description': 'Max results, default 30, max 100'}, 'query': {'type': 'string', 'examples': ['marina genova', 'porto antico', 'Bonifacio'], 'maxLength': 200, 'minLength': 1, 'description': "Fuzzy text filter on place name, applied WITHIN the proximity search â\x80\x94 requires latitude/longitude too, it is not a standalone text search. For 'find this place by name anywhere', use nausika_geocode instead."}, 'types': {'type': 'array', 'items': {'enum': ['marina', 'port', 'bay', 'fuel_station', 'yacht_club', 'city', 'island', 'cape', 'gulf', 'lighthouse', 'beach', 'town', 'village', 'peninsula', 'strait', 'restaurant', 'bar', 'cafe', 'supermarket', 'convenience', 'bakery', 'pharmacy', 'atm', 'laundry', 'post_office', 'clinic', 'water_point', 'chandlery'], 'type': 'string'}, 'examples': [['marina', 'anchorage'], ['marina', 'port']], 'description': "Filter by multiple place types (takes precedence over 'type')"}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'examples': [0, 30, 60], 'description': 'Offset for pagination'}, 'category': {'enum': ['poi', 'location'], 'type': 'string', 'examples': ['poi', 'location'], 'description': 'Filter by category'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 44.4], 'description': 'Center latitude for proximity search'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 15.6], 'description': 'Center longitude for proximity search'}, 'radius_km': {'type': 'number', 'default': 50, 'maximum': 200, 'minimum': 0.5, 'examples': [25, 50, 100], 'description': 'Search radius in km (default 50, max 200)'}, 'names_lang': {'type': 'string', 'pattern': '^[a-z]{2,3}(-[A-Z]{2})?$', 'examples': ['it', 'fr', 'en'], 'description': 'ISO 639-1 lang code. When set, response `name` is replaced with attributes.i18n.names[lang] if present; canonical OSM name kept as `name_canonical`.'}, 'bottom_type': {'enum': ['sand', 'mud', 'rock', 'gravel', 'clay', 'coral', 'weed', 'shells'], 'type': 'string', 'description': "Bottom type filter (e.g. 'sand')"}, 'shelter_from': {'enum': ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'], 'type': 'string', 'description': "Compass direction to filter shelter (e.g. 'NW')"}, 'max_coverage_score': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'examples': [30, 50], 'description': 'Maximum coverage score 0-100 â\x80\x94 filter to low-coverage places that need enrichment'}, 'min_coverage_score': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'examples': [60, 80], 'description': 'Minimum coverage score 0-100 â\x80\x94 filter places by data completeness'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['center', 'radius_km', 'count', 'places', '_attribution'], 'properties': {'count': {'type': 'number'}, 'center': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'places': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'category', 'type', 'latitude', 'longitude', 'coverage_score', 'sources', 'avg_rating', 'rating_count', 'images', 'wiki_images', 'links'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$'}, 'i18n': {'type': 'object', 'properties': {'names': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'descriptions': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}, 'name': {'type': 'string'}, 'type': {'enum': ['marina', 'port', 'bay', 'fuel_station', 'yacht_club', 'city', 'island', 'cape', 'gulf', 'lighthouse', 'beach', 'town', 'village', 'peninsula', 'strait', 'restaurant', 'bar', 'cafe', 'supermarket', 'convenience', 'bakery', 'pharmacy', 'atm', 'laundry', 'post_office', 'clinic', 'water_point', 'chandlery'], 'type': 'string'}, 'email': {'type': 'string'}, 'links': {'type': 'object', 'properties': {'osm_url': {'type': 'string'}, 'wikidata_url': {'type': 'string'}, 'wikipedia_url': {'type': 'string'}}, 'additionalProperties': False}, 'phone': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'sort_order', 'thumb_url', 'large_url'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$'}, 'width': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'credit': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'height': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'status': {'enum': ['pending', 'processing', 'ready', 'failed'], 'type': 'string'}, 'caption': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'alt_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'large_url': {'type': 'string'}, 'thumb_url': {'type': 'string'}, 'sort_order': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'attribution_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'sources': {'type': 'array', 'items': {'type': 'string'}}, 'website': {'type': 'string'}, 'category': {'enum': ['poi', 'location'], 'type': 'string'}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'max_loa_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'wikipedia': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'avg_rating': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'own_rating': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'bottom_type': {'type': 'array', 'items': {'enum': ['sand', 'mud', 'rock', 'gravel', 'clay', 'coral', 'weed', 'shells'], 'type': 'string'}}, 'description': {'type': 'string'}, 'distance_km': {'type': 'number'}, 'elevation_m': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'vhf_channel': {'type': 'string'}, 'wiki_images': {'type': 'array', 'items': {'type': 'string'}}, 'wikidata_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'is_favorited': {'type': 'boolean'}, 'rating_count': {'type': 'number'}, 'shelter_from': {'type': 'array', 'items': {'enum': ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'], 'type': 'string'}}, 'opening_hours': {'type': 'string'}, 'port_of_entry': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'coverage_score': {'type': 'number'}, 'name_canonical': {'type': 'string'}, 'osm_primary_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'osm_primary_type': {'anyOf': [{'enum': ['node', 'way', 'relation'], 'type': 'string'}, {'type': 'null'}]}, 'data_origin_unverified': {'type': 'boolean'}}, 'additionalProperties': False}}, 'radius_km': {'type': 'number'}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['origin_lat', 'origin_lon', 'dest_lat', 'dest_lon'], 'properties': {'units': {'enum': ['nauticalmiles', 'kilometers', 'miles'], 'type': 'string', 'default': 'nauticalmiles', 'description': 'Distance units (default: nauticalmiles)'}, 'dest_lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Destination latitude'}, 'dest_lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Destination longitude'}, 'origin_lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Origin latitude'}, 'origin_lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Origin longitude'}, 'speed_knots': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'examples': [6, 7, 8], 'description': "Vessel speed in knots for ETA calculation. Omit to use the caller's saved boat profile speed if one exists, else 6 kn (typical sailing yacht). An explicit value always wins over the boat profile."}, 'optimization': {'enum': ['off', 'fast', 'precise'], 'type': 'string', 'default': 'fast', 'description': "Waypoint smoothing level. 'fast' (default): light smoothing, milliseconds. 'precise': highest-quality smoothing, slower (up to a few seconds). 'off': raw waypoints, unsmoothed."}, 'snap_to_water': {'type': 'boolean', 'default': True, 'examples': [True], 'description': 'If origin or destination falls on land (e.g. a city centroid from nausika_geocode like Lisbon â\x86\x92 38.71, -9.14), automatically snap to the nearest known marine place (marina, anchorage, port) within a nearby distance. Set to false to disable and force a hard error on land coordinates. Default true.'}, 'include_waypoints': {'type': 'boolean', 'default': True, 'examples': [True, False], 'description': 'Set to false for distance-only mode (no waypoints or GeoJSON)'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['origin', 'destination', 'distance', 'units', 'speed_knots', 'estimated_duration_hours', '_attribution'], 'properties': {'units': {'type': 'string'}, 'origin': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'distance': {'type': 'number'}, '_disclaimer': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'speed_knots': {'type': 'number'}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}, 'dest_snap_nm': {'type': 'number'}, 'optimization': {'type': 'string'}, 'snap_warning': {'type': 'boolean'}, 'route_geojson': {'type': 'object', 'required': ['type', 'properties', 'geometry'], 'properties': {'type': {'type': 'string', 'const': 'Feature'}, 'geometry': {'type': 'object', 'required': ['type', 'coordinates'], 'properties': {'type': {'type': 'string', 'const': 'LineString'}, 'coordinates': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}}}, 'additionalProperties': False}, 'properties': {'type': 'object', 'required': ['length', 'units'], 'properties': {'units': {'type': 'string'}, 'length': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'origin_snap_nm': {'type': 'number'}, 'dest_snapped_to': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number'}, 'lon': {'type': 'number'}, 'place_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'waypoints_count': {'type': 'number'}, 'dest_snapped_from': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number'}, 'lon': {'type': 'number'}}, 'additionalProperties': False}, 'optimization_used': {'type': 'string'}, 'origin_snapped_to': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number'}, 'lon': {'type': 'number'}, 'place_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'direct_distance_nm': {'type': 'number'}, 'optimization_failed': {'type': 'boolean'}, 'origin_snapped_from': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number'}, 'lon': {'type': 'number'}}, 'additionalProperties': False}, 'shorter_than_direct': {'type': 'boolean'}, 'dest_snap_distance_nm': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'origin_snap_distance_nm': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'estimated_duration_hours': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['latitude', 'longitude', 'start_date', 'end_date'], 'properties': {'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Window end date (UTC, ISO YYYY-MM-DD). Must be â\x89¥ start_date. Dates beyond the SEAS5 horizon (today + 210 days) are clamped â\x80\x94 the response reports the adjustment.'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Latitude in decimal degrees (WGS84, -90 to 90)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Longitude in decimal degrees (WGS84, -180 to 180)'}, 'variables': {'type': 'array', 'items': {'enum': ['wind_speed_10m', 'wind_direction_10m', 'sea_surface_temperature', 'temperature_2m', 'precipitation', 'cloud_cover', 'pressure_msl', 'surface_pressure', 'sunshine_duration', 'shortwave_radiation', 'apparent_temperature', 'dew_point_2m', 'relative_humidity_2m', 'weather_code', 'sunrise_sunset', 'snowfall', 'snow_depth'], 'type': 'string'}, 'examples': [['sunshine_duration', 'pressure_msl'], ['apparent_temperature', 'relative_humidity_2m']], 'description': 'Additional variables, additive to the core set (wind_speed_10m, wind_direction_10m, sea_surface_temperature, temperature_2m, precipitation, cloud_cover). Each is expanded server-side into the appropriate daily and monthly aggregates. Defaults to core variables only.'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Window start date (UTC, ISO YYYY-MM-DD). Dates before today are clamped to today (SEAS5 forecasts forward only) â\x80\x94 the response reports the adjustment.'}, 'include_members': {'type': 'boolean', 'default': False, 'description': 'When true, expose all 50 ECMWF SEAS5 ensemble members (`<var>_memberNN`) in the response. Default (false) collapses them into `_p10/_p50/_p90` percentile series alongside the ensemble mean â\x80\x94 ~20Ã\x97 smaller payload, same statistical signal.'}}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['coordinates_requested', 'coordinates_resolved', 'range', 'model', 'timezone', 'daily', 'monthly', 'units'], 'properties': {'daily': {'type': 'object', 'required': ['time'], 'properties': {'time': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'number'}, {'type': 'string'}, {'type': 'null'}]}}}, 'model': {'enum': ['seas5'], 'type': 'string'}, 'range': {'type': 'object', 'required': ['start_date', 'end_date'], 'properties': {'end_date': {'type': 'string'}, 'start_date': {'type': 'string'}}, 'additionalProperties': False}, 'units': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'monthly': {'type': 'object', 'required': ['time'], 'properties': {'time': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'number'}, {'type': 'string'}, {'type': 'null'}]}}}, 'timezone': {'enum': ['UTC'], 'type': 'string'}, '_disclaimer': {'type': 'string'}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}, 'monthly_derived': {'type': 'boolean'}, 'window_adjusted': {'type': 'string'}, 'coordinates_resolved': {'type': 'object', 'required': ['latitude', 'longitude', 'distance_km'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'distance_km': {'type': 'number'}}, 'additionalProperties': False}, 'coordinates_requested': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['latitude', 'longitude'], 'properties': {'datum': {'enum': ['MLLW', 'MLW', 'MSL', 'MHW', 'MHHW', 'NAVD', 'STND'], 'type': 'string', 'default': 'MLLW', 'description': 'Tidal datum reference (default MLLW)'}, 'limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'examples': [5, 10], 'description': 'Max stations to return in stations_only mode (default 5, max 10).'}, 'units': {'enum': ['metric', 'english'], 'type': 'string', 'default': 'metric', 'description': 'Units: metric (meters) or english (feet)'}, 'interval': {'enum': ['h', 'hilo'], 'type': 'string', 'default': 'hilo', 'description': "Interval: 'hilo' for high/low only (default), 'h' for hourly predictions"}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'examples': [38.7, 43.55, 41.39], 'description': 'Latitude in decimal degrees (WGS84, -90 to 90)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'examples': [9.14, 10.32, 2.17], 'description': 'Longitude in decimal degrees (WGS84, -180 to 180)'}, 'begin_date': {'type': 'string', 'pattern': '^\\d{8}$', 'examples': ['20260615', '20260701'], 'description': 'Start date in YYYYMMDD format (defaults to today UTC).'}, 'range_hours': {'type': 'integer', 'default': 48, 'maximum': 744, 'minimum': 1, 'examples': [24, 48], 'description': 'Duration in hours (default 48, max 744 = ~31 days).'}, 'stations_only': {'type': 'boolean', 'default': False, 'examples': [True, False], 'description': 'If true, return nearby stations without fetching predictions (station discovery mode). Defaults to false.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mode', 'count', '_attribution'], 'properties': {'mode': {'enum': ['stations', 'predictions'], 'type': 'string'}, 'note': {'type': 'string'}, 'count': {'type': 'number'}, 'datum': {'enum': ['MLLW', 'MLW', 'MSL', 'MHW', 'MHHW', 'NAVD', 'STND'], 'type': 'string'}, 'model': {'type': 'object', 'required': ['resolution_km', 'disclaimer'], 'properties': {'disclaimer': {'type': 'string'}, 'resolution_km': {'type': 'number'}}, 'additionalProperties': False}, 'units': {'enum': ['meters', 'feet'], 'type': 'string'}, 'center': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'range_m': {'type': 'number'}, 'station': {'type': 'object', 'required': ['id', 'name', 'state', 'latitude', 'longitude', 'distance_nm'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'state': {'type': 'string'}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'distance_nm': {'type': 'number'}}, 'additionalProperties': False}, 'interval': {'enum': ['h', 'hilo'], 'type': 'string'}, 'location': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': False}, 'stations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'state', 'latitude', 'longitude', 'distance_nm'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'state': {'type': 'string'}, 'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}, 'distance_nm': {'type': 'number'}}, 'additionalProperties': False}}, '_disclaimer': {'type': 'string'}, 'data_source': {'enum': ['stations', 'model'], 'type': 'string'}, 'predictions': {'type': 'array', 'items': {'type': 'object', 'required': ['time', 'level_m'], 'properties': {'time': {'type': 'string'}, 'type': {'enum': ['high', 'low'], 'type': 'string'}, 'level_m': {'type': 'number'}}, 'additionalProperties': False}}, '_attribution': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text', 'license', 'source_url'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'license': {'type': 'string'}, 'source_url': {'type': 'string'}, 'license_url': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
MolTravel
Searches and provides details for flights, hotels, rental cars, ferries, airports, travel experiences, destinations, country info…
Wmata
Provides Washington Metro rail and bus routes, stops, stations, service incidents, route details, and real-time arrival predictio…
Openrouteservice
Provides geocoding, routing, travel-time matrices, isochrones, snapping, and elevation data using OpenStreetMap-based services.
Google_maps
Provides Google Maps geocoding, place search and details, directions, distance matrices, and elevation data.
SeaWeb
Searches and extracts web information about entities and travel locations, including restaurants, salons, tourist conditions, dis…
Aviationstack
Provides airline, airport, city, country, and flight directory data, including real-time and scheduled flight details.
Nps
Searches National Park Service data for parks, campgrounds, activities, alerts, visitor statistics, locations, fees, and operatin…
Tfl
Provides London transport journey planning, line status, disruptions, stop arrivals, and Santander Cycle availability.