MCP Server

Charter Captain

com.chartercaptain/charter-captain
Commerce & Retail Travel & Hospitality Public & reachable MCP 2025-11-25

What this MCP does

Finds Lake Michigan charter captains and boats, checks availability, provides quotes, and creates bookings or boat-rental checkout links.

check_availability
Check Availability
Check a captain's or boat's availability. Provide exactly one of captainSlug or boatId. Omit date to get available dates for the next 90 days; provide both date (YYYY-MM-DD) and durationHours to get bookable time slots for that date. Each slot lists its offeredDurations, and every entry carries the durationId to pass to get_quote, create_booking, or create_boat_rental (null means that length is offered but not bookable through the API).
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'boatId': {'type': 'string', 'minLength': 1}, 'captainSlug': {'type': 'string', 'minLength': 1}, 'durationHours': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}}
create_boat_rental
Create Boat Rental
Book a bareboat boat rental and get a Stripe Checkout link for the charterer to complete payment. Requires captainChoiceRightAcknowledged: true (the charterer affirms their right to choose their own captain). Optionally attach a partner/affiliate code.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['boatId', 'captainChoiceRightAcknowledged', 'date', 'startTime', 'durationId', 'pricingTierId', 'partySize', 'firstName', 'lastName', 'email', 'phone'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}, 'phone': {'type': 'string', 'minLength': 1}, 'boatId': {'type': 'string', 'minLength': 1}, 'lastName': {'type': 'string', 'minLength': 1}, 'firstName': {'type': 'string', 'minLength': 1}, 'partySize': {'type': 'integer', 'maximum': 13, 'minimum': 1}, 'startTime': {'type': 'string', 'pattern': '^\\d{2}:\\d{2}$'}, 'durationId': {'type': 'string', 'minLength': 1}, 'partnerCode': {'type': 'string'}, 'pricingTierId': {'type': 'string', 'minLength': 1}, 'specialRequests': {'type': 'string', 'maxLength': 500}, 'captainChoiceRightAcknowledged': {'type': 'boolean', 'const': True}}}
create_booking
Create Booking
Book a charter with a captain and get a Stripe Checkout link for the charterer to complete payment. Optionally attach a partner/affiliate code to credit a referrer.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['captainSlug', 'harborId', 'date', 'startTime', 'durationId', 'pricingTierId', 'partySize', 'firstName', 'lastName', 'email', 'phone'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}, 'phone': {'type': 'string', 'minLength': 1}, 'harborId': {'type': 'string', 'minLength': 1}, 'lastName': {'type': 'string', 'minLength': 1}, 'firstName': {'type': 'string', 'minLength': 1}, 'partySize': {'type': 'integer', 'maximum': 13, 'minimum': 1}, 'startTime': {'type': 'string', 'pattern': '^\\d{2}:\\d{2}$'}, 'durationId': {'type': 'string', 'minLength': 1}, 'captainSlug': {'type': 'string', 'minLength': 1}, 'partnerCode': {'type': 'string'}, 'pricingTierId': {'type': 'string', 'minLength': 1}, 'specialRequests': {'type': 'string', 'maxLength': 500}}}
get_boat
Get Boat
Get a boat's full profile by id, enriched with a rating summary and the most recent reviews.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['boatId'], 'properties': {'boatId': {'type': 'string', 'minLength': 1}}}
get_captain
Get Captain
Get a captain's full profile by tenant slug, enriched with a rating summary and the most recent reviews.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1}}}
get_quote
Get Quote
Get a non-binding price quote (in cents) for a charter or rental. Provide exactly one of captainSlug or boatId, plus durationId and partySize. Pass `date` (YYYY-MM-DD) whenever you know it: the rate then comes from the operator's rate card for that day — weekday vs weekend vs holiday, including any per-date price the operator set — so the quote matches what checkout charges. Without a date, pass pricingTierId instead; the quote then reflects that tier and may differ from checkout for the actual day. Optionally pass a partnerCode to preview a discount. Returns currency, totalCents, depositCents, balanceCents, pricingModel, and (when a code is given) a discountPreview.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['durationId', 'partySize'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'boatId': {'type': 'string', 'minLength': 1}, 'partySize': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'durationId': {'type': 'string', 'minLength': 1}, 'captainSlug': {'type': 'string', 'minLength': 1}, 'partnerCode': {'type': 'string', 'minLength': 1}, 'pricingTierId': {'type': 'string', 'minLength': 1}}}
list_harbors
List Harbors
List active harbors, each with a count of active captains and listed boats operating there.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
ping
Ping
Health check
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
search_boats
Search Boats
Search listed boats, optionally filtered by harbor, type, minimum capacity, and max hourly price, with sorting and pagination.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'minimum': 1}, 'sort': {'enum': ['price_asc', 'price_desc', 'capacity', 'name'], 'type': 'string', 'default': 'name'}, 'type': {'enum': ['SAILBOAT', 'POWERBOAT', 'PONTOON', 'JETSKI', 'KAYAK', 'CANOE', 'YACHT', 'OTHER', 'FISHING'], 'type': 'string'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'harbor': {'type': 'string'}, 'maxPrice': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'minCapacity': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}
search_captains
Search Captains
Search bookable charter captains, optionally filtered by harbor, with sorting and pagination. Returns a paginated list with starting price and rating.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'minimum': 1}, 'sort': {'enum': ['rating', 'price_asc', 'price_desc', 'name'], 'type': 'string', 'default': 'rating'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'harbor': {'type': 'string'}}}
Added
create_boat_rental
Sept. 17, 2026, 12:34 p.m.
Added
create_booking
Sept. 17, 2026, 12:34 p.m.
Added
get_quote
Sept. 17, 2026, 12:34 p.m.
Added
check_availability
Sept. 17, 2026, 12:34 p.m.
Added
list_harbors
Sept. 17, 2026, 12:34 p.m.
Added
get_boat
Sept. 17, 2026, 12:34 p.m.
Added
get_captain
Sept. 17, 2026, 12:34 p.m.
Added
search_boats
Sept. 17, 2026, 12:34 p.m.
Added
search_captains
Sept. 17, 2026, 12:34 p.m.
Added
ping
Sept. 17, 2026, 12:34 p.m.