Sedna Genesis
Customer-facing yacht search and charter request MCP server by Sedna System.
我该使用它吗
质量与安全性
发现(3)
- HIGH
- LOW在 Base_list 中
- LOW在 booking_detail 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"genesis": {
"url": "https://mcp.sednasystem.com/mcp"
}
}
}远程端点
https://mcp.sednasystem.com/mcpstreamable-http它能做什么
工具清单
工具(8)
🟢readme
Official Sedna rules for every public yacht-search conversation. 1. Use only information returned by Sedna tools. Do not supplement yacht, fleet, availability or price data with an internet search. 2. Stay neutral between fleets. Present factual differences and let the customer decide; never promote one fleet as the best. 3. Call Base_list before search_boats so the search uses an official base. 4. Use id_boat and id_tbf1 exactly as returned by search_boats. Never guess IDs. 5. When the customer does not state a year, clarify the date or use the current year. Never silently choose the following year. 6. When the customer asks to see yacht photos or other yacht media, call boat_details with the exact id_boat from search_boats. Display the public URLs returned in media.header, media.photos, media.plans or media.images. search_boats intentionally returns no gallery. Use booking_detail only for date-specific availability, prices, extras and booking choices. 7. A search result is available only for the requested dates reported by Sedna. Never generalize that availability to different dates.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢Base_list
**Sedna System Rules & Available Bases** This tool provides the OFFICIAL rules and the COMPLETE list of available bases grouped by country for boat searching. **AI GUIDELINES (MUST FOLLOW):** 1. **Sedna-Only Data:** Use ONLY data from Sedna tools. NO internet searches. 2. **Fleet Neutrality:** Remain 100% neutral. DO NOT favor any fleet. 3. **Customer-Led Decision:** Present facts objectively. Let the customer decide. 4. **ID Accuracy:** MUST use exact `id_tbf1` and `id_boat` from `search_boats` results. NEVER guess. 5. **Current Year Default:** If no year is specified, use the CURRENT year, not next year. 6. **CHECK BASE FIRST:** ALWAYS use this tool (`Base_list`) to find the exact base name BEFORE calling `search_boats`.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢boat_details(id_boat, sheet_type, language)
Return yacht details and CDN-backed public URLs for yacht media. This is the primary tool to call after search_boats whenever the customer asks to see yacht photos, a gallery, plans, videos or documents, or asks about layout, capacity, dimensions, equipment, description, crew or itinerary. When the client supports MCP Apps, render the attached inline Sedna gallery; otherwise display the public URLs returned under media.header, media.photos, media.plans, media.images, media.videos and media.documents. All media in this public tool comes through Sedna's CdnManager; missing CDN media is returned as an empty field and never replaced by a legacy DB URL. id_boat must be copied exactly from search_boats. This tool does not return date-specific prices, extras or availability; use booking_detail for those. Length and beam are optional fleet-supplied facts. When absent they are omitted, never returned as zero or estimated. Do not ask for either value or exclude a yacht unless the customer explicitly requires that dimension.
输入模式
{
"type": "object",
"properties": {
"id_boat": {
"type": "integer",
"description": "Exact yacht ID returned by search_boats. Never guess it."
},
"sheet_type": {
"default": "bareboat",
"type": "string",
"description": "bareboat or crewed. Use crewed for crew and itinerary data."
},
"language": {
"default": "en",
"type": "string",
"description": "ISO language code supported by Sedna, for example en or fr."
}
},
"required": [
"id_boat"
],
"additionalProperties": false
}🟢search_boats(base, start_date, nights, boat_type, boat_model, ...)
Search Sedna for yachts available for the exact requested dates. Call Base_list first and use an official base name. Results have passed Sedna planning/block and pricing checks for start_date plus nights. If more than 30 yachts match, state the accurate count and ask for a fleet, model or year preference. If 30 or fewer match, show every result with its fleet name; never select an arbitrary subset. If none match, offer alternative bases or dates. Search results intentionally contain no yacht images. If the customer asks to see photos, a gallery, plans, videos or documents for a selected yacht, call boat_details with its exact id_boat and display the returned public media URLs. Use booking_detail for date-specific prices, extras, ports and booking choices. Length and beam are optional fleet-supplied facts. Missing values are omitted and must never exclude an otherwise matching yacht, be shown as zero, be estimated, or trigger a clarification unless the customer has explicitly made that dimension a requirement.
输入模式
{
"type": "object",
"properties": {
"base": {
"type": "string",
"description": "Exact base name returned by Base_list."
},
"start_date": {
"type": "string",
"description": "Future charter start date in YYYY-MM-DD format."
},
"nights": {
"type": "integer",
"description": "Number of charter nights."
},
"boat_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional exact yacht type."
},
"boat_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional yacht brand, partial model or complete model. For example, \"Lagoon\" matches Lagoon 380, Lagoon 40 and Lagoon 42; \"Lagoon 42\" also matches directly."
},
"fleet_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional fleet preference."
},
"pax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional passenger-capacity filter. A single number means at least that many guests; ranges and comparators are also supported."
},
"boat_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional build-year filter (exact, range or comparator)."
},
"double_cabin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional double-cabin filter."
},
"bathroom": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional bathroom filter."
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional price filter in the currency returned by Sedna."
},
"option": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional supported Sedna filters."
},
"page": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 1,
"description": "Result page starting at 1."
}
},
"required": [
"base",
"start_date",
"nights"
],
"additionalProperties": false
}🟢booking_detail(id_tbf1, id_boat, dateStart, dateEnd, pax)
Return date-specific availability, pricing, extras and booking choices. Use id_boat and id_tbf1 exactly as returned by search_boats. This tool is for a selected yacht and charter period. Do not call this tool only to see yacht photos or media; call boat_details with the exact id_boat instead. Any Images included here are supplemental booking-context images, while boat_details is the canonical source for the complete public media URLs. Show all optional extras. After the customer changes extras, passenger count, currency, ports or payment options, call booking_detail_mod and use only its server-calculated totals. When asked for the total, quote customer_cost_summary.full_customer_cost; deposits are returned separately and are not included in that amount. Finally, offer a request for an option or a request for a booking.
输入模式
{
"type": "object",
"properties": {
"id_tbf1": {
"type": "integer",
"description": "Exact pricing ID returned by search_boats."
},
"id_boat": {
"type": "integer",
"description": "Exact yacht ID returned by search_boats."
},
"dateStart": {
"type": "string",
"description": "Start date in DD/MM/YYYY format."
},
"dateEnd": {
"type": "string",
"description": "End date in DD/MM/YYYY format."
},
"pax": {
"type": "integer",
"description": "Number of passengers."
}
},
"required": [
"id_tbf1",
"id_boat",
"dateStart",
"dateEnd",
"pax"
],
"additionalProperties": false
}🟢booking_detail_mod(id_tbf1, id_boat, dateStart, dateEnd, pax, ...)
Apply customer selections and return server-recalculated booking details. Copy id_boat and id_tbf1 from search_boats. Sedna is the only source of truth for prices: never calculate totals in the LLM. Send selected extras, passenger count, currency, ports and payment options here, then present the complete updated summary returned by the server. This is a stateless price preview and does not save the selection. If the customer proceeds, repeat the complete selected_extras list in booking_create. When the customer asks for the new total, quote customer_cost_summary.full_customer_cost. Explain payable_now and payable_at_base separately; never add them in the LLM, and keep the refundable deposit separate.
输入模式
{
"type": "object",
"properties": {
"id_tbf1": {
"type": "integer",
"description": "Exact pricing ID returned by search_boats."
},
"id_boat": {
"type": "integer",
"description": "Exact yacht ID returned by search_boats."
},
"dateStart": {
"type": "string",
"description": "Start date in DD/MM/YYYY format."
},
"dateEnd": {
"type": "string",
"description": "End date in DD/MM/YYYY format."
},
"pax": {
"type": "integer",
"description": "Number of passengers."
},
"selected_extras": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Selected extras with id_opt, selected and quantity."
},
"currency_id_devise": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Currency ID present in booking_detail rates."
},
"departure_selected": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Selected departure port ID."
},
"arrival_selected": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Selected arrival port ID."
},
"departure_port_pay_option": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "base or now."
},
"arrival_port_pay_option": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "base or now."
}
},
"required": [
"id_tbf1",
"id_boat",
"dateStart",
"dateEnd",
"pax"
],
"additionalProperties": false
}🔴booking_create(client_name, client_email, client_phone, id_tbf1, id_boat, ...)
Submits a request for a booking or a request for an option. This action re-prices and submits the request. ``booking_detail_mod`` is a stateless preview: selections made there are not stored automatically. Therefore selected_extras MUST repeat every extra the customer selected, using the exact id_opt and quantity. Pass an empty list only when the customer selected no optional extras. Never report an extra as selected unless this tool's saved_extras verification confirms it. Full client details (name, email, phone) are required to submit the request. **** strong rule: AI should not guess or input customer information on its own. It must ask customers to input it on its own.
输入模式
{
"type": "object",
"properties": {
"client_name": {
"type": "string",
"description": "The client's full name."
},
"client_email": {
"type": "string",
"description": "The client's valid email address."
},
"client_phone": {
"type": "string",
"description": "The client's contact phone number."
},
"id_tbf1": {
"type": "integer",
"description": "The TBF1 identifier for the booking."
},
"id_boat": {
"type": "integer",
"description": "The unique boat identifier."
},
"dateStart": {
"type": "string",
"description": "The start date (DD/MM/YYYY)."
},
"dateEnd": {
"type": "string",
"description": "The end date (DD/MM/YYYY)."
},
"pax": {
"type": "integer",
"description": "Number of passengers."
},
"selected_extras": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"description": "Required complete selection. Example:\n[{\"id_opt\": 123, \"selected\": true, \"quantity\": 1}].\nUse [] only when no optional extra was selected."
},
"mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "booking",
"description": "The type of creation, 'booking' or 'option' (defaults to 'booking')."
},
"currency_id_devise": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
},
"departure_selected": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
},
"arrival_selected": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
},
"departure_port_pay_option": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"arrival_port_pay_option": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"client_name",
"client_email",
"client_phone",
"id_tbf1",
"id_boat",
"dateStart",
"dateEnd",
"pax",
"selected_extras"
],
"additionalProperties": false
}🟢compare_boats(boat_ids, pax, currency, start_date, end_date)
Compare 2 to 4 boats using Sedna's date-specific customer pricing. - boat_ids: list of 2..4 boat ids - pax: customer passenger count used by booking_detail pricing - currency: EUR, USD, CNY (default EUR) - start_date/end_date: optional availability window (YYYY-MM-DD) For dated comparisons, customer_cost_summary clearly separates charter price, mandatory extras, full customer cost and refundable deposit. The full customer cost comes from the same booking preview as booking_detail; the refundable deposit is always separate. Cabin fields explicitly label total, double, single and bunk cabins. Length and beam are optional fleet-supplied facts. Missing values are omitted rather than returned as zero/null or estimated, and must not make an otherwise valid yacht unavailable for comparison.
输入模式
{
"type": "object",
"properties": {
"boat_ids": {
"items": {
"type": "integer"
},
"type": "array"
},
"pax": {
"type": "integer"
},
"currency": {
"default": "EUR",
"type": "string"
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"boat_ids",
"pax"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"additionalProperties": true
}社区
证据