SimpleDock

Warehouse dock appointment scheduling: find open slots, book, reschedule, approve, and check in trucks.

Размещённый MCP-сервер

npx add-mcp 'https://simpledock.ai/api/v1/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

Документация

SimpleDock MCP Server

SimpleDock logo

The official remote Model Context Protocol server for SimpleDock: warehouse dock appointment scheduling. With it, AI assistants can find open dock slots, book, reschedule, approve and cancel appointments, check trucks in, and read schedules and analytics.

This repo has documentation only. The server is hosted by SimpleDock, so you don't need to install or run anything.

Endpointhttps://simpledock.ai/api/v1/mcp
TransportStreamable HTTP
AuthOAuth 2.1 (Dynamic Client Registration + PKCE). Your client opens a SimpleDock sign-in page.
Registry nameai.simpledock/simpledock (official MCP Registry)
Tools40
Docshttps://simpledock.ai/developers/mcp

You need a SimpleDock account; the free plan works. Sign up at https://simpledock.ai.

Setup

Claude (claude.ai / Claude Desktop)

Settings → Connectors → Add custom connector → URL https://simpledock.ai/api/v1/mcp → Connect, then sign in to SimpleDock.

Claude Code: claude mcp add --transport http simpledock https://simpledock.ai/api/v1/mcp

ChatGPT

Settings → Apps & Connectors → Advanced → enable Developer mode → Create → MCP server URL https://simpledock.ai/api/v1/mcp, Authentication OAuth → sign in to SimpleDock.

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "simpledock": { "url": "https://simpledock.ai/api/v1/mcp" }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json:

{
  "servers": {
    "simpledock": { "type": "http", "url": "https://simpledock.ai/api/v1/mcp" }
  }
}

Cline

Open MCP Servers → Remote Servers, or edit cline_mcp_settings.json:

{
  "mcpServers": {
    "simpledock": {
      "url": "https://simpledock.ai/api/v1/mcp",
      "type": "streamableHttp"
    }
  }
}

Cline opens a browser window for the SimpleDock OAuth sign-in on first use.

Other clients

Any client that supports remote Streamable HTTP servers with OAuth works. For clients that only support stdio, use npx mcp-remote https://simpledock.ai/api/v1/mcp.

Suggested workflow

Start with list_locations, then list_appointment_types, then get_availability for a date, then create_appointment.

Tools

ToolDescriptionAccess
list_locationsList all dock locations in the organization.read-only
list_doorsList the dock doors at a location.read-only
list_appointment_typesList a location's appointment types with their custom field definitions. Call this first: create_appointment and get_availability both need an appointmentTypeId, and bookings must satisfy each type's required fields.read-only
get_availabilityList bookable time slots for a location, appointment type, and date (YYYY-MM-DD).read-only
list_appointmentsList appointments, optionally filtered by location, status, and start-time range. Returns up to limit rows plus a nextCursor for the following page.read-only
get_appointmentFetch a single appointment by id.read-only
get_analyticsPer-location appointment summary (counts by status and type) over a date range. Defaults to the last 30 days; the range may not exceed 366 days.read-only
create_appointmentCreate (book) a confirmed appointment at a location.write
update_appointment_detailsEdit an appointment's carrier/driver/reference fields (no time change). Omitted fields are left unchanged.write
reschedule_appointmentMove a confirmed appointment to a new start time and optional door.write
set_appointment_statusTransition an appointment's status (one of: CONFIRMED, COMPLETED, NO_SHOW). COMPLETED and NO_SHOW are dock outcomes and need appointments:receive; CONFIRMED needs appointments:write. Use cancel_appointment to cancel.write
approve_appointmentApprove a pending appointment, optionally moving it to a new start time.write
reject_appointmentReject a pending appointment with an optional reason.write
check_in_appointmentRecord the driver's own check-in update on a confirmed appointment: ON_TRACK, RUNNING_LATE (with estimatedDelay minutes), or CANCELLING. To record that the truck is at the dock, use mark_arrived.write
mark_arrivedRecord that a truck has physically arrived at the dock (e.g. "the Swift driver just pulled in"). Starts the dwell-time clock, which ends when the appointment is marked COMPLETED. Pass arrived: false to undo a mistaken arrival. Not the same as check_in_appointment, which records the driver's own on-track or running-late update before arrival.write
cancel_appointmentCancel an appointment.write
get_location_setupEverything about how a location is set up, in one call: its name, address, and timezone; scheduling settings (start-time spacing, approval, door mode); weekly hours; appointment types (including inactive ones); doors with their type limits and own hours; and upcoming closures. Read this before changing setup or when diagnosing missing times.read-only
set_up_locationSet up a facility in one call: scheduling settings, weekly hours, appointment types, and doors, applied together (a bad entry changes nothing). Every part is optional. Types and doors are matched by name: a name that already exists at the location is updated, a new one is created, and anything you leave out is untouched, so repeating the call is safe. Doors refer to types by name, so you don't need ids. Returns the full setup and the booking-page checklist (bookingPage.problems is empty when carriers can book).write
update_location_settingsChange a location's scheduling settings. Omitted fields are left unchanged.write
set_weekly_hoursReplace a location's hours for the listed days (days you leave out are unchanged; an empty windows list closes that day). A booking must fit entirely inside one window, so to offer fixed slots, make each window exactly one appointment long: 08:00–10:00 and 10:30–12:30 with a 2-hour type offer only 8:00 and 10:30.write
create_appointment_typeAdd an appointment type (what a carrier picks when booking): its length, load, direction, minimum notice, and buffers.write
update_appointment_typeEdit an appointment type. Omitted fields are left unchanged. Set isActive to false to stop offering it without deleting it or its history.write
add_closed_datesClose the whole location on specific dates (holidays, shutdowns), in its local timezone. Existing appointments on those dates are not cancelled; the response counts them so you can follow up.write
remove_closureReopen a closure by id (ids are in get_location_setup's upcomingClosures).write
create_doorAdd a dock door. By default it takes every appointment type and follows the location's hours, so it can be created before any types exist. Optionally limit it to certain types or give it its own hours (see update_door). To add types and doors together by name, use set_up_location.write
update_doorEdit a dock door. Omitted fields are left unchanged. appointmentTypeIds limits which types it takes ([] = every type). weeklyHours gives the door its own full week of hours, always clipped to the location's (days you leave out are closed for this door); pass null to go back to the location's hours. isActive: false takes it out of service.write
create_locationAdd a facility. It starts with no hours, appointment types, or doors: follow up with set_up_location, which returns the booking-page checklist. The Free plan allows one location; more need Pro (payment_required).write
update_location_detailsEdit a location's name, address, timezone, or booking-page URL. Omitted fields are left unchanged. slug sets the public link /book/{slug}: 3+ lowercase letters, numbers, and hyphens; a slug another facility uses is a conflict. Changing it breaks links already sent to carriers.write
update_notification_settingsChange who hears about bookings at a location. notifyEmail is one extra address that gets booking alerts besides the team (empty string clears it). emailNotificationsEnabled turns carrier confirmation emails on or off; smsCheckInEnabled texts drivers a check-in link before their appointment. Omitted fields are left unchanged.write
get_booking_pageThe public booking link carriers use (/book/{slug}) and whether it can take bookings: acceptingBookings is false until the location has weekly hours, an active appointment type, and (when it assigns doors) an active door. problems says what to fix.read-only
list_booking_questionsThe extra questions carriers answer when booking, per appointment type, in form order. Also lists which built-in fields (driverName, trailerNumber, poReference, …) each type hides or requires.read-only
create_booking_questionAdd a question to an appointment type's booking form (Pro). DROPDOWN needs options. key is how the answer is stored (customFields.{key} on appointments); it defaults to the camelCased label and can't change later. isReference makes the answer a reference number, searchable in the appointments list.write
update_booking_questionEdit a booking question (Pro). Omitted fields are left unchanged; the key never changes. isActive: false hides it from the form but keeps past answers.write
delete_booking_questionRemove a booking question for good. Answers already given stay on past appointments but are no longer labeled; to keep them, set isActive to false with update_booking_question instead.write
create_webhookSend appointment events to a URL (Pro). SimpleDock posts a test event first and saves the webhook only if the URL answers 2xx. Non-Slack payloads are signed: verify the X-SimpleDock-Signature header with signingSecret, which is returned only now. ZAPIER and SLACK need hooks.zapier.com / hooks.slack.com URLs. eventTypes empty = every event; locationIds empty = every location.write
get_account_statusWhether the account owner has confirmed their email, and what waits until they do (appointment emails and texts, directory listing, search indexing, teammate invites). An account an agent created and nobody confirmed is deleted at deletesAt. Also lists each location's booking page URL.read-only
verify_emailConfirm the owner's email with the six-digit code from the SimpleDock email they received. If you can read their inbox, take it from the newest SimpleDock email (the subject starts with the code); otherwise ask them to read it to you. Never guess. Five wrong codes and the email stops accepting codes (use resend_verification_email).write
resend_verification_emailSend the owner a new confirmation email (link and code). Earlier links and codes stop working. Limited to a few per hour.write
invite_memberEmail someone an invitation to join the organization. Roles: ADMIN (full access, including members and billing), SCHEDULER (book and manage appointments), DOCK_STAFF (mark trucks arrived and done). Needs the owner's email confirmed first.write
create_api_keyCreate a long-lived API key (sd_live_…) for scripts and clients that can't refresh OAuth tokens. The full key is returned only now; store it. It's listed under Settings → API, where it can be revoked. Needs the owner's email confirmed first.write

Support

License

The documentation in this repo is MIT licensed. The SimpleDock service is governed by its terms and privacy policy.