Discover Lake Michigan charter captains & boats, check availability, get quotes, and book.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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).
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).
| Argument | Type | Description |
|---|---|---|
| date | string | |
| boatId | string | |
| captainSlug | string | |
| durationHours | integer |
{
"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
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| date* | string | |
| email* | string | |
| phone* | string | |
| boatId* | string | |
| lastName* | string | |
| firstName* | string | |
| partySize* | integer | |
| startTime* | string | |
| durationId* | string | |
| partnerCode |
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.
| Argument | Type | Description |
|---|---|---|
| date* | string | |
| email* | string | |
| phone* | string | |
| harborId* | string | |
| lastName* | string | |
| firstName* | string | |
| partySize* | integer | |
| startTime* | string | |
| durationId* | string | |
| captainSlug* | string |
Get a boat's full profile by id, enriched with a rating summary and the most recent reviews.
| Argument | Type | Description |
|---|---|---|
| boatId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"boatId"
],
"properties": {
"boatId": {
"type": "string",
"minLength": 1
}
}
}Get a captain's full profile by tenant slug, enriched with a rating summary and the most recent reviews.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"minLength": 1
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| date | string | |
| boatId | string | |
| partySize* | integer | |
| durationId* | string | |
| captainSlug | string | |
| partnerCode | string | |
| pricingTierId | string |
{
"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 active harbors, each with a count of active captains and listed boats operating there.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Health check
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Search listed boats, optionally filtered by harbor, type, minimum capacity, and max hourly price, with sorting and pagination.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| sort | string | |
| type | string | |
| limit | integer | |
| harbor | string | |
| maxPrice | integer | |
| minCapacity | integer |
{
"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 bookable charter captains, optionally filtered by harbor, with sorting and pagination. Returns a paginated list with starting price and rating.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| sort | string | |
| limit | integer | |
| harbor | string |
{
"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"
}
}
}| string |
| pricingTierId* | string |
| specialRequests | string |
| captainChoiceRightAcknowledged* | boolean |
{
"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
}
}
}| partnerCode | string |
| pricingTierId* | string |
| specialRequests | string |
{
"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
}
}
}