{"openapi":"3.1.0","info":{"title":"Cruise Kit API","version":"0.1.0","description":"A fully local, cruise-line-agnostic packing/planning checklist and onboard budgeting calculator: a categorized packing list, embarkation/shore-excursion tips, a dress-code and cabin-type guide, seasickness prep tips, and real local compute for onboard budget allocation, gratuities, and a drink-package break-even analysis.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://cruisekit.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/cruisekit/docs"},"termsOfService":"https://connectorbay.com/cruisekit/terms"},"servers":[{"url":"https://cruisekit.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/cruisekit/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/packing_checklist":{"post":{"operationId":"packing_checklist","summary":"A categorized cruise packing list (clothing, documents, electronics, health/comfort, misc) scaled by cruise","description":"A categorized cruise packing list (clothing, documents, electronics, health/comfort, misc) scaled by cruise\n    length and climate. Use for \"help me pack for a 7-day Caribbean cruise\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cruise_length_days":{"description":"Cruise length in days.","maximum":60,"minimum":1,"title":"Cruise Length Days","type":"integer"},"climate":{"description":"hot | cold | temperate | variable","title":"Climate","type":"string"},"formal_nights":{"default":true,"description":"Whether to include smart-casual/formal attire for elegant nights.","title":"Formal Nights","type":"boolean"}},"required":["cruise_length_days","climate"],"title":"packing_checklistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/embarkation_tips":{"post":{"operationId":"embarkation_tips","summary":"General, cruise-line-agnostic tips for boarding day -- check-in timing, day-bag packing, the muster drill,","description":"General, cruise-line-agnostic tips for boarding day -- check-in timing, day-bag packing, the muster drill,\n    all-aboard timing. Use for \"what should I know about embarkation day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"embarkation_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/shore_excursion_tips":{"post":{"operationId":"shore_excursion_tips","summary":"General tips for planning port days -- ship-booked vs independent excursions, tender ports, timing buffers","description":"General tips for planning port days -- ship-booked vs independent excursions, tender ports, timing buffers\n    before all-aboard. Use for \"should I book excursions through the ship or on my own\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"shore_excursion_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/formal_night_guide":{"post":{"operationId":"formal_night_guide","summary":"General dress-code tiers seen across cruise lines -- casual, elegant/formal, theme nights -- and advice on","description":"General dress-code tiers seen across cruise lines -- casual, elegant/formal, theme nights -- and advice on\n    checking your specific line's current policy. Use for \"what do I wear on formal night\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"formal_night_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cabin_types":{"post":{"operationId":"cabin_types","summary":"A general comparison of interior, oceanview, balcony and suite cabin categories. Use for \"what's the","description":"A general comparison of interior, oceanview, balcony and suite cabin categories. Use for \"what's the\n    difference between an interior and balcony cabin\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"cabin_typesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/seasickness_prep":{"post":{"operationId":"seasickness_prep","summary":"General, non-diagnostic seasickness prep tips (cabin location, ginger, acupressure wristbands, fresh air),","description":"General, non-diagnostic seasickness prep tips (cabin location, ginger, acupressure wristbands, fresh air),\n    pointing to a pharmacist/doctor for anything medication-related. Use for \"how do I avoid getting seasick\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"seasickness_prepArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/onboard_budget_planner":{"post":{"operationId":"onboard_budget_planner","summary":"Splits a total extra-spending budget across typical onboard categories (gratuities, drinks, excursions,","description":"Splits a total extra-spending budget across typical onboard categories (gratuities, drinks, excursions,\n    dining, wifi, extras, laundry) -- a computed starting allocation, not a published price. Use for \"I have $800\n    extra to spend on my cruise, how should I split it up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"total_extra_budget":{"description":"Your total extra (beyond the cruise fare) spending budget for the trip.","minimum":0,"title":"Total Extra Budget","type":"number"}},"required":["total_extra_budget"],"title":"onboard_budget_plannerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/gratuities_calculator":{"post":{"operationId":"gratuities_calculator","summary":"Multiplies a stated per-day gratuity rate by cruise length and guest count. Use for \"how much will","description":"Multiplies a stated per-day gratuity rate by cruise length and guest count. Use for \"how much will\n    gratuities cost for a family of 4 on an 8-day cruise at $18/day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cruise_length_days":{"description":"Cruise length in days.","minimum":1,"title":"Cruise Length Days","type":"integer"},"per_day_rate":{"description":"Your cruise line's stated daily gratuity/service-charge rate per person.","minimum":0,"title":"Per Day Rate","type":"number"},"num_guests":{"default":1,"description":"Number of guests the charge applies to.","minimum":1,"title":"Num Guests","type":"integer"}},"required":["cruise_length_days","per_day_rate"],"title":"gratuities_calculatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/drink_package_breakeven":{"post":{"operationId":"drink_package_breakeven","summary":"Computes how many drinks a day you'd need for a beverage package to break even against pay-as-you-go","description":"Computes how many drinks a day you'd need for a beverage package to break even against pay-as-you-go\n    pricing, and whether your stated expected pace clears it. Use for \"is the drinks package worth it for me if I\n    have about 4 drinks a day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"package_price_per_day":{"description":"The beverage package's price per day.","minimum":0,"title":"Package Price Per Day","type":"number"},"avg_drink_price":{"description":"What a single drink typically costs paying as you go.","exclusiveMinimum":0,"title":"Avg Drink Price","type":"number"},"expected_drinks_per_day":{"description":"How many drinks you realistically expect to have per day.","minimum":0,"title":"Expected Drinks Per Day","type":"number"}},"required":["package_price_per_day","avg_drink_price","expected_drinks_per_day"],"title":"drink_package_breakevenArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cruisekit_glossary":{"post":{"operationId":"cruisekit_glossary","summary":"Definitions of cruise terms -- muster drill, all-aboard time, tender port, gratuities, beverage package,","description":"Definitions of cruise terms -- muster drill, all-aboard time, tender port, gratuities, beverage package,\n    dry dock, cabin steward, specialty dining. Use for \"what's a muster drill\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"cruisekit_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}