Skip to content

Shipday MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.7.3 · published by io.usefulapi

Read Shipday orders, carriers and delivery status; create orders and assign drivers.

Deletes · 1Changes · 4

14 tools: 1 can delete or cancel things, 4 change things and 9 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http shipday https://shipday.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

14 tools

Deletes or cancels 1Claude Code: deny
  • create_orderWRITE: insert a new delivery order into Shipday (it appears on the dispatch board; it is not assigned to a driver).No findings

    Why it is in this group

    • The name "create_order" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: insert a new delivery order into Shipday (it appears on the dispatch board; it is not assigned to a driver). Returns the new orderId. Times are UTC. Shipday: POST /orders.

    Annotations the server declares

    • title: Create a delivery order
    • readOnlyHint: false
    • destructiveHint: true
Changes things 4Claude Code: ask
  • assign_order_to_carrierWRITE: assign a delivery order to one of the account's own carriers (drivers); the driver is notified in the Shipday driver app.No findings

    Why it is in this group

    • The name "assign_order_to_carrier" says "assign": a word for a change.
    Description, as the server wrote it
    WRITE: assign a delivery order to one of the account's own carriers (drivers); the driver is notified in the Shipday driver app. Re-assigning to the same driver changes nothing. Shipday: PUT /orders/assign/{orderId}/{carrierId}.

    Annotations the server declares

    • title: Assign an order to a driver
    • readOnlyHint: false
    • idempotentHint: true
  • check_on_demand_availabilityQuote third-party on-demand delivery for a pickup and delivery address before creating an order: which services can deliver, their fee and pickup/delivery times.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Quote third-party on-demand delivery for a pickup and delivery address before creating an order: which services can deliver, their fee and pickup/delivery times. Read only: nothing is booked. Shipday: POST /on-demand/availability.

    Annotations the server declares

    • title: Check on-demand delivery availability
    • readOnlyHint: true
  • set_order_ready_to_pickupWRITE: set or clear an order's ready-to-pickup flag (tells the driver the order is ready at the pickup location).No findings

    Why it is in this group

    • The name "set_order_ready_to_pickup" says "set": a word for a change.
    Description, as the server wrote it
    WRITE: set or clear an order's ready-to-pickup flag (tells the driver the order is ready at the pickup location). Shipday: PUT /orders/{orderId}/meta.

    Annotations the server declares

    • title: Mark an order ready for pickup
    • readOnlyHint: false
    • idempotentHint: true
  • unassign_orderWRITE: remove the driver from a delivery order (it goes back to unassigned).No findings

    Why it is in this group

    • The name "unassign_order" says "unassign": a word for a change.
    Description, as the server wrote it
    WRITE: remove the driver from a delivery order (it goes back to unassigned). Shipday: PUT /orders/unassign/{orderId}.

    Annotations the server declares

    • title: Unassign an order from its driver
    • readOnlyHint: false
    • idempotentHint: true
Only reads 9Claude Code: allow
  • get_delivery_progressReal-time delivery progress of an order by its tracking id: status (STARTED, PICKED_UP, ...), timestamps, the driver's current location and the ETA in minutes.No findings

    Why it is in this group

    • The name "get_delivery_progress" says "get": a word for reading.
    Description, as the server wrote it
    Real-time delivery progress of an order by its tracking id: status (STARTED, PICKED_UP, ...), timestamps, the driver's current location and the ETA in minutes. The tracking id is the last part of the order's trackingLink. Shipday's Business Advanced plan only; at most 3 requests per minute per tracking id. Shipday: GET /order/progress/{trackingId}.

    Annotations the server declares

    • title: Get delivery progress and ETA
    • readOnlyHint: true
  • get_on_demand_detailsDetails of the third-party on-demand delivery booked for an order: provider, reference id, third-party fee, Shipday charge, total billable amount and tracking URL.No findings

    Why it is in this group

    • The name "get_on_demand_details" says "get": a word for reading.
    Description, as the server wrote it
    Details of the third-party on-demand delivery booked for an order: provider, reference id, third-party fee, Shipday charge, total billable amount and tracking URL. Shipday: GET /on-demand/details/{orderId}.

    Annotations the server declares

    • title: Get on-demand delivery details
    • readOnlyHint: true
  • get_on_demand_estimateGet fee and time estimates from the third-party on-demand delivery services for an existing order (fee, pickup/delivery time, durations, per-service errors).No findings

    Why it is in this group

    • The name "get_on_demand_estimate" says "get": a word for reading.
    Description, as the server wrote it
    Get fee and time estimates from the third-party on-demand delivery services for an existing order (fee, pickup/delivery time, durations, per-service errors). Read only: nothing is booked. Shipday: GET /on-demand/estimate/{orderId}.

    Annotations the server declares

    • title: Get on-demand delivery estimates
    • readOnlyHint: true
  • get_orderGet the details of a delivery order by its order number (the merchant's reference, `orderNumber`).No findings

    Why it is in this group

    • The name "get_order" says "get": a word for reading.
    Description, as the server wrote it
    Get the details of a delivery order by its order number (the merchant's reference, `orderNumber`). Returns an array, since several orders can share one order number. Includes the numeric orderId needed by the write tools, the carrier, tracking link and status. Shipday: GET /orders/{orderNumber}.

    Annotations the server declares

    • title: Get order by order number
    • readOnlyHint: true
  • get_pickup_orderGet a pickup (customer collects it) order by its numeric id, with restaurant, customer, items, costs, expected pickup date/time and status.No findings

    Why it is in this group

    • The name "get_pickup_order" says "get": a word for reading.
    Description, as the server wrote it
    Get a pickup (customer collects it) order by its numeric id, with restaurant, customer, items, costs, expected pickup date/time and status. Shipday: GET /pickup-orders/{orderId}.

    Annotations the server declares

    • title: Get a pickup order
    • readOnlyHint: true
  • list_active_ordersList the account's active (not yet completed) delivery orders with customer, pickup location (restaurant), assigned carrier/driver, timeline (activityLog), costs, payment method an…No findings

    Why it is in this group

    • The name "list_active_orders" says "list": a word for reading.
    Description, as the server wrote it
    List the account's active (not yet completed) delivery orders with customer, pickup location (restaurant), assigned carrier/driver, timeline (activityLog), costs, payment method and orderStatus.orderState. Good first call. Shipday: GET /orders.

    Annotations the server declares

    • title: List active orders
    • readOnlyHint: true
  • list_carriersList the account's carriers (drivers) with id, name, phone, email, isOnShift, isActive and last known location.No findings

    Why it is in this group

    • The name "list_carriers" says "list": a word for reading.
    Description, as the server wrote it
    List the account's carriers (drivers) with id, name, phone, email, isOnShift, isActive and last known location. Use an id here with assign_order_to_carrier. Shipday: GET /carriers.

    Annotations the server declares

    • title: List carriers (drivers)
    • readOnlyHint: true
  • list_on_demand_servicesList the third-party on-demand delivery services (DoorDash, Uber, ...) available to the account and whether each is enabled.No findings

    Why it is in this group

    • The name "list_on_demand_services" says "list": a word for reading.
    Description, as the server wrote it
    List the third-party on-demand delivery services (DoorDash, Uber, ...) available to the account and whether each is enabled. Shipday: GET /on-demand/services.

    Annotations the server declares

    • title: List on-demand delivery services
    • readOnlyHint: true
  • query_ordersSearch delivery orders, including completed ones, by placement-time window and status, with row-based paging: start_cursor/end_cursor select rows (e.g.No findings

    Why it is in this group

    • The name "query_orders" says "query": a word for reading.
    Description, as the server wrote it
    Search delivery orders, including completed ones, by placement-time window and status, with row-based paging: start_cursor/end_cursor select rows (e.g. 1–100, then 101–200; at most 100 per call) sorted newest first. Each row has timestamps (placement, assigned, picked up, delivered, failed), totals, driver payment, distance and carrier. Shipday: POST /orders/query.

    Annotations the server declares

    • title: Search orders (history)
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.7.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http shipday https://shipday.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__shipday__list_active_orders",
      "mcp__shipday__get_order",
      "mcp__shipday__query_orders",
      "mcp__shipday__get_pickup_order",
      "mcp__shipday__get_delivery_progress",
      "mcp__shipday__list_carriers",
      "mcp__shipday__list_on_demand_services",
      "mcp__shipday__get_on_demand_estimate",
      "mcp__shipday__get_on_demand_details"
    ],
    "ask": [
      "mcp__shipday__check_on_demand_availability",
      "mcp__shipday__assign_order_to_carrier",
      "mcp__shipday__unassign_order",
      "mcp__shipday__set_order_ready_to_pickup"
    ],
    "deny": [
      "mcp__shipday__create_order"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as shipday. Review it before you use it.