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
| Client | How |
|---|---|
| Claude.ai, Claude Desktop | Settings → Connectors → Add custom connector. URL https://charter.boats/mcp; under Request headers, x-api-key = your key. |
| ChatGPT | Settings → 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 Code | claude 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
| Tool | Does |
|---|---|
list_boats | Your fleet, every company you belong to, published or not; the ids every other tool takes |
get_boat | One boat as its edit page shows it, with locked_fields the partner sync owns |
update_boat | Change details, check-in rules, deposit, equipment list |
set_equipment_visibility | Hide an equipment item from the listing, or show it again |
update_boat_images | Hide or show a photo, or set the photo order |
delete_boat_image | Delete a photo |
New photos are uploaded on the boat's edit page.
Company
| Tool | Does |
|---|---|
get_company | Profile, contact, bank, tax and invoicing details, cancellation policy, X-Lock |
update_company | Change company details; bank, tax, invoicing and contact email are the owner's |
get_cancellation_limits | What your payment schedule means for the cancellation policy |
set_cancellation_policy | Set the cancellation policy (owners); it applies to your MMK and Nausys bookings only |
set_cross_lock | Switch 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
| Tool | Does |
|---|---|
get_pricing | Season prices of the fleet, partner and direct |
add_price, update_price, delete_price | Season prices of a boat you price yourself |
list_boat_fees | Every extra and fee row of a boat |
add_fee, update_fee, delete_fee | Extras and fees of a boat you price yourself |
list_discounts | Your active discounts |
create_discount, update_discount, delete_discount | Discount codes, automatic and pay-in-full discounts |
Calendars and availability
| Tool | Does |
|---|---|
get_availability | Every boat and every event that takes dates |
add_block, remove_block | Block or free dates; partner holds follow, on both partners with X-Lock on |
list_calendars | External calendars connected to a boat |
add_calendar, remove_calendar, sync_calendar | Connect, disconnect or pull an iCal or Google Calendar feed |
MMK and Nausys are linked automatically.
Bookings
| Tool | Does |
|---|---|
list_bookings | Every booking on your boats with its stage: On waitlist, Option (with hold_expires_at) or booked |
get_booking | One booking with its price lines, your payout and payout_schedule, the payments coming to you |
get_earnings | Totals, 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.