Charter Boats
Charter Boats API
AI Integrations

Operator MCP

Manage your fleet, calendars and discounts and read your bookings from ChatGPT, Claude or Cursor

Same in API v1.0 and v1.1

The MCP server at https://charter.boats/mcp adds the operator tools for a caller who sends an operator's API key. Each tool calls the dashboard route your own pages call, so it answers with your role in the company, the same checks and the same limits as the dashboard.

Endpoint: https://charter.boats/mcp — the same URL as the guest tools. Credential: your API key from Dashboard → Settings → API, sent as x-api-key or Authorization: Bearer. ChatGPT, which cannot send a header, signs in with charter.boats instead and receives that same key. A key in the URL is ignored. Budget: your key's, shared with every other keyed call of your account — see Rate limits. Revoke: regenerate the key. Every connected assistant stops at once; ChatGPT asks you to sign in again.

Connect

ClientHow
Claude.ai, Claude DesktopSettings → Connectors → Add custom connector. URL https://charter.boats/mcp; under Request headers, x-api-key = your key.
ChatGPTSettings → Apps → Create. URL https://charter.boats/mcp, authentication OAuth. Sign in with charter.boats, then Allow. An account with no key creates one there, accepting the API Usage Agreement.
Claude Codeclaude mcp add --transport http charter-boats https://charter.boats/mcp --header "x-api-key: YOUR_API_KEY"
Cursor~/.cursor/mcp.json: { "mcpServers": { "charter-boats": { "url": "https://charter.boats/mcp", "headers": { "x-api-key": "YOUR_API_KEY" } } } }

Tools

Reads are marked read-only; writes are not, and each returns the value as it now stands. Read the current value first, then change it. A refusal comes back as a tool error carrying the route's own message.

Boats

ToolDoes
list_boatsYour fleet, every company you belong to, published or not; the ids every other tool takes
get_boatOne boat as its edit page shows it, with locked_fields the partner sync owns
update_boatChange details, check-in rules, deposit, equipment list
set_equipment_visibilityHide an equipment item from the listing, or show it again
update_boat_imagesHide or show a photo, or set the photo order
delete_boat_imageDelete a photo

New photos are uploaded on the boat's edit page.

Company

ToolDoes
get_companyProfile, contact, bank, tax and invoicing details, cancellation policy, X-Lock
update_companyChange company details; bank, tax, invoicing and contact email are the owner's
get_cancellation_limitsWhat your payment schedule means for the cancellation policy
set_cancellation_policySet the cancellation policy (owners); it applies to your MMK and Nausys bookings only
set_cross_lockSwitch X-Lock (company admins and owners)

Direct boats follow charter.boats terms, so a company whose boats are all direct cannot set a policy.

Prices and discounts

ToolDoes
get_pricingSeason prices of the fleet, partner and direct
add_price, update_price, delete_priceSeason prices of a boat you price yourself
list_boat_feesEvery extra and fee row of a boat
add_fee, update_fee, delete_feeExtras and fees of a boat you price yourself
list_discountsYour active discounts
create_discount, update_discount, delete_discountDiscount codes, automatic and pay-in-full discounts

Calendars and availability

ToolDoes
get_availabilityEvery boat and every event that takes dates
add_block, remove_blockBlock or free dates; partner holds follow, on both partners with X-Lock on
list_calendarsExternal calendars connected to a boat
add_calendar, remove_calendar, sync_calendarConnect, disconnect or pull an iCal or Google Calendar feed

MMK and Nausys are linked automatically.

Bookings

ToolDoes
list_bookingsEvery booking on your boats with its stage: On waitlist, Option (with hold_expires_at) or booked
get_bookingOne booking with its price lines, your payout and payout_schedule, the payments coming to you
get_earningsTotals, monthly payouts and pending payouts

Bookings are read-only: accepting, declining, offers and refunds stay on the dashboard.

Sign in with charter.boats (OAuth)

For a client that cannot send a header. Discovery: https://charter.boats/.well-known/oauth-protected-resource/mcp and https://charter.boats/.well-known/oauth-authorization-server. Authorization code with PKCE (S256), dynamic client registration at /api/oauth/register (Client ID Metadata Documents are not supported), token at /api/oauth/token. The access token is your API key; there is no refresh token. An operator tool called with no credential returns a tool error whose _meta["mcp/www_authenticate"] points the client at the metadata.

On this page