# Shipday MCP

> Shipday MCP Server handles last-mile delivery dispatching and tracking. Use this server to manage entire local operations—from creating a new order to assigning a driver and getting real-time status updates—all through natural conversation with your AI client.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** last-mile-delivery, dispatch-management, route-optimization, delivery-tracking, local-delivery, fleet-coordination

## Description

**Shipday MCP Server** handles your whole local delivery dispatching and tracking. You'll connect your AI client to this server to manage everything from creating a new drop-off point to getting real-time location updates—all without lifting a finger or switching tabs.

To start, you can generate brand new deliveries using `create_order`, just by feeding the system customer and restaurant details. If that order needs to go sideways, you can use `delete_order` to remove it from our records entirely. You'll always be able to check on an existing job by calling `get_order` with a specific order number to pull up all its data points. For a full rundown of everything currently moving or waiting for dispatch, run `list_active_orders`. If you only need info on one particular delivery ID that was handled by a third party, use `get_carrier_order` to grab those detailed records.

When it comes to personnel, you've got the whole crew directory right here. Call `list_drivers` and you get a list of every driver registered in your fleet. Once you pick one out, you can assign that specific driver ID to an active delivery order using `assign_driver`. You also have direct control over the official status of any job; if things change—say, it moves from 'Pending' to 'Out for delivery,' or finally hits 'Delivered'—you update it with `update_order_status` to keep our internal books straight. To know exactly where a moving package is right now, you run `get_tracking_progress`. This tool pulls the live location and current progress status of anything in transit.

If you need general order details by ID, use `get_order`. If you just wanna see every driver available on paper, `list_drivers` does that. You'll never have to manually update statuses or track down driver IDs again; your agent handles it all.

Basically, this server lets you manage the entire local logistics loop. Need a new order? Call `create_order`. Got a list of deliveries waiting for dispatch? Check `list_active_orders` and then assign someone with `assign_driver`. If an order gets canceled or needs to be scrubbed, use `delete_order`. You can always get the full picture on any job using `get_order`, pull up external carrier info with `get_carrier_order`, or check the live progress of a package in motion with `get_tracking_progress`.

## Tools

### assign_driver
Links an active delivery order to a specific, available driver ID.

### create_order
Generates a completely new delivery record using customer and restaurant details.

### delete_order
Removes or cancels an existing order from the system records.

### get_carrier_order
Pulls detailed information for a specific delivery ID managed by a third-party carrier.

### get_order
Retrieves all known data points for one particular order number.

### get_tracking_progress
Gets the current, live location and progress status of a moving delivery.

### list_active_orders
Returns a list summary of all deliveries currently in motion or awaiting dispatch.

### list_drivers
Pulls a directory listing of every driver registered in your fleet.

### update_order_status
Changes the official status of an order (e.g., from 'Pending' to 'Out for delivery').

## Prompt Examples

**Prompt:** 
```
List all active delivery orders in Shipday.
```

**Response:** 
```
I've retrieved your active orders. You have 4 deliveries in progress: '#ORD-101' (Picked up), '#ORD-102' (Out for delivery), and two others. Would you like to see the driver tracking for any of them?
```

**Prompt:** 
```
Assign driver ID 12345 to order ID 98765.
```

**Response:** 
```
Assignment processed! Order 98765 is now assigned to 'Mike R.' (ID 12345). Should I notify the customer about the updated delivery status?
```

**Prompt:** 
```
List all available drivers in Shipday.
```

**Response:** 
```
Retrieving drivers... I found 6 active drivers in your fleet. 'Marcus' and 'Sarah' are currently idle and ready for dispatch. Would you like to see their contact info?
```

## Capabilities

### Get Order Details
You retrieve specific order information by ID or get a full list of all active deliveries.

### Assign Personnel to Orders
You tell the system which available driver should take on a new, pending delivery job.

### Control Order Status
You update an order's status—like 'Picked Up' or 'Delivered'—to keep your internal records current.

### Track Live Deliveries
The system pulls real-time location data, showing the exact progress of a delivery in transit.

### Create or Cancel Orders
You initiate new deliveries by providing customer and restaurant details, or you cancel an order outright.

## Use Cases

### Handling an Emergency Cancellation
A customer calls and needs their order canceled immediately. Instead of logging into the portal to find the ID, your agent uses `get_order` first. Once confirmed, it runs `delete_order`, sending a confirmation message back instantly.

### Morning Dispatch Handoff
The shift starts and you need to know who's available. You ask your agent to run `list_drivers`. The agent replies with the list, allowing you to immediately assign pending jobs using `assign_driver`.

### Customer Status Check
A customer texts about a late delivery. Your agent runs `get_tracking_progress`, which pulls the live data. The agent then tells the customer exactly where the driver is, solving the issue without you ever leaving your chat interface.

### Batch Status Updates
The end of a busy night. You need to mark 15 orders as 'Completed.' Instead of clicking 15 times, you run `list_active_orders` and then ask the agent to batch-update them using `update_order_status`.

## Benefits

- You instantly get a full list of deliveries using `list_active_orders`. This means you never have to manually check 5 different dashboards just to see what's currently moving.
- Driver assignment is simple. Instead of emailing a sheet or calling someone, you use the `assign_driver` tool to link an order ID directly to a driver ID in a single conversational step.
- Tracking status updates are live and direct. The `get_tracking_progress` tool pulls real-time data so your agent can report accurate location details instantly.
- You maintain perfect records by using `update_order_status`. This ensures that whether the order is 'Picked Up' or 'Delivered,' your system record matches reality.
- The entire workflow, from creating a new job via `create_order` to deleting it with `delete_order`, runs through one conversation. No context switching required.

## How It Works

The bottom line is you treat your entire dispatch operation like a conversation with an expert dispatcher who already has access to your backend system.

1. Subscribe to the Shipday server and input your API Key from your Shipday dashboard settings.
2. Your AI client calls a tool (e.g., `list_active_orders`) to gather current delivery metadata.
3. You use conversational prompts to direct the workflow, telling your agent exactly what status changes or assignments need to happen next.

## Frequently Asked Questions

**How do I check if an order is active with list_active_orders?**
You simply ask your agent to run `list_active_orders`. It pulls a summary of all deliveries currently in motion or waiting for dispatch, giving you immediate visibility into the entire fleet.

**Can I assign a driver without knowing their ID? (assign_driver)**
The `assign_driver` tool requires both an order ID and a specific driver ID. If you don't know the IDs, first run `list_drivers` to get all available personnel.

**How do I find out if a package is delayed using get_tracking_progress?**
Run `get_tracking_progress` with the order ID. This tool pulls live data, showing you exactly where the delivery is and gives details on any expected delays.

**What's the difference between get_order and list_active_orders?**
`list_active_orders` gives a summary of many jobs (a count, statuses). `get_order` pulls all granular metadata for one specific job ID.

**What information must I provide when calling the create_order tool?**
You must supply three key pieces of data: orderNumber, customer details, and restaurant info. The system uses these inputs to build a new delivery record in Shipday's backend.

**What happens when I use the delete_order tool?**
The `delete_order` tool cancels or deletes an order based on its current status. Use this only if you are sure of the cancellation, as it permanently removes the record from the active fulfillment pipeline.

**How does update_order_status work? Does it require carrier metadata?**
The `update_order_status` tool requires an order ID and the desired new status code. It synchronizes your delivery pipeline by forcing the specified status change across all linked systems.

**What specific details does list_drivers return to me?**
The `list_drivers` tool returns a directory of all associated drivers. Specifically, you get their unique IDs, names, and current availability status for dispatching.

**Can my AI automatically find the status of a delivery order just by providing its ID?**
Yes! Use the `get_order` tool with the Order ID. Your agent will respond with the current status, customer details, and scheduled delivery times in seconds.

**How do I assign a specific driver to an active order?**
Simply ask the agent to run the `assign_driver` action. You will need to provide both the Order ID and the Driver ID to complete the assignment.

**How do I find my Shipday API Key?**
Log in to your Shipday dashboard, navigate to **Settings** > **API**, and you will find your unique secret API key there.