# ShipEngine MCP

> ShipEngine MCP Server compares live shipping rates, validates addresses, generates compliant labels, and tracks packages across every major carrier—UPS, FedEx, USPS, and dozens of global services. Connect this server to your AI client to handle the entire fulfillment process through natural conversation. You can get rate quotes from multiple carriers instantly, validate complex international addresses programmatically, or pull real-time tracking updates without leaving your chat window.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** shipping-api, label-generation, address-validation, rate-comparison, multi-carrier, logistics-automation

## Description

Listen up. This **ShipEngine MCP Server** lets your AI client handle every single piece of shipping crap you deal with—from getting a quote to tracking the package on day three. You're not limited to one carrier; this thing connects to all of 'em: UPS, FedEx, USPS, and dozens more global services. It handles the whole logistics stack through natural conversation, so you never have to leave your chat window.

**First things first, check the setup.** Before you do anything else, you can run **`get_connection_status`** to confirm that every single shipping service is actually operational and hooked up right. You can also use **`list_carriers`** to pull a roster of all the carrier accounts currently active in your system, giving you a quick overview of what's connected.

**Need to know about a specific carrier?** If you wanna dig into the specifics—like their account profile or general service details—you hit **`get_carrier_details`**. It pulls that core information for any given connection. This is your starting point when you’re auditing your whole shipping setup.

**Time to quote rates.** You don't gotta call three different websites just to find out how much a box costs. Just ask your agent to run **`get_shipping_rates`**. It instantly compares live cost estimates from multiple carriers, factoring in the exact package dimensions and where you’re sending it. 

**Before you commit to anything, you gotta validate that address.** Sending stuff to an invalid street name is a one-way ticket to a dumpster fire. You run **`validate_address`** first; it checks both the sender's address and the recipient's against major carrier databases. It guarantees the shipping address is accurate and usable before any label gets printed.

**Building the shipment record.** Once you got the rate and you know the addresses are solid, you build the whole thing out using **`create_shipment_object`**. This tool takes all those necessary details—the rates, the validated addresses, the carriers—and saves a complete, structured shipment record in the system.

**Generating the label.** After the shipment object is saved, you can nail down the physical label. You call **`create_shipping_label`**, and it generates that finalized, printable shipping label file using the specific format required by the chosen carrier. It’s compliant, period.

**Reviewing labels and shipments.** If you need to check on a label you already printed or if you want to see what else you've done, you can use **`list_created_labels`** for an overview of all previously purchased or generated labels. Similarly, **`list_shipments`** pulls up a list of recent shipment records you’ve made in the system. If you need specifics on one of those saved records, **`get_shipment_info`** gets you comprehensive details, including the entire tracking history.

**Tracking and Status.** This is where the magic happens when you're waiting for that package to show up. To see exactly where it is right now, use **`track_package`**. Just feed it a tracking number or an ID, and it reports the current, real-time delivery status immediately.

**Diving into label details.** You might need more than just the fact that a label exists. If you run **`get_label_info`**, it pulls detailed metadata and the specific status information attached to any generated label transaction. Every piece of data is there for you to review.

It's this full cycle—checking connection health, running rate comparisons, validating addresses, building the shipment object, printing the label, and then tracking the whole damn thing—all through conversation. You handle the entire fulfillment process with your agent using these specific tools.

## Tools

### create_shipment_object
Builds and saves a new shipment record in the system with all necessary details.

### create_shipping_label
Generates a finalized, printable shipping label file for a specific package.

### get_carrier_details
Retrieves profile information and general details about a connected carrier account.

### get_connection_status
Checks the current API connection health to confirm if all shipping services are operational.

### get_label_info
Fetches detailed metadata and status information about a specific generated label.

### get_shipment_info
Retrieves comprehensive details for an existing shipment record, including tracking history.

### get_shipping_rates
Compares and returns live shipping cost estimates from multiple carriers based on package specifics.

### list_carriers
Lists all the carrier accounts that are currently connected to and active in the system.

### list_created_labels
Retrieves a list of labels you have previously purchased or generated within your account.

### list_shipments
Fetches an overview list of recent shipment records created in the system.

### track_package
Checks and reports the current, real-time delivery status for a package using its tracking number or ID.

### validate_address
Verifies if an inputted shipping address is accurate and usable by major carriers.

## Prompt Examples

**Prompt:** 
```
Validate this address: 123 Main St, Austin, TX 78701.
```

**Response:** 
```
I've validated the address. It's a valid residential address in Austin, Texas. Would you like to check shipping rates for a package to this location?
```

**Prompt:** 
```
List all active carrier accounts in my ShipEngine.
```

**Response:** 
```
Retrieving carrier accounts... You have 3 active accounts: FedEx, UPS, and USPS. Would you like to see the profile metadata for any of them?
```

**Prompt:** 
```
Track the shipment with ID sh_123456789.
```

**Response:** 
```
Checking tracking status... Shipment sh_123456789 is currently 'Out for Delivery' via FedEx. It was last scanned at the local distribution center. Should I notify you when it's delivered?
```

## Capabilities

### Calculate Multi-Carrier Rates
Automatically compares current shipping rates from dozens of carriers (FedEx, UPS, USPS, etc.) based on package dimensions and destination.

### Validate Shipping Addresses
Checks both sender and recipient addresses against carrier databases to guarantee accuracy before label generation.

### Generate Shipment Labels
Creates printable, compliant shipping labels for specific packages using the required carrier format.

### Create Full Shipments
Builds a complete shipment record in the system, linking rates, addresses, and carriers together.

### Monitor Package Status
Retrieves real-time tracking information and status updates for any given shipment ID or package number.

## Use Cases

### Handling Checkout Rate Comparison
A customer is checking out. The agent detects the address and runs `validate_address`. Then, it calls `get_shipping_rates` for five different carriers and presents the cost breakdown to the user immediately, letting them pick the cheapest option.

### Batch Label Printing
A fulfillment specialist has 50 orders ready. Instead of generating labels one by one, they ask the agent to `list_shipments` and then process the entire batch using `create_shipping_label` for all listed items.

### Investigating a Delayed Package
The customer calls support. The agent uses the provided tracking number with `track_package`. It instantly reports the current status (e.g., 'Delayed at sorting facility') and can cross-reference this with `get_shipment_info` for full history.

### Setting up a New Market
A developer is expanding to Europe. They use the agent to check available carriers via `list_carriers`, review their profile details using `get_carrier_details`, and plan out how to structure new shipments before writing code.

## Benefits

- Stop guessing rates. By using `get_shipping_rates`, you instantly compare costs across UPS, FedEx, USPS, and more carriers without running multiple searches.
- Eliminate bad addresses before they cost money. Running `validate_address` guarantees your sender and recipient details are correct, saving failed deliveries and customs headaches.
- Generate labels on demand. After confirming the best rate, call `create_shipping_label` to get a compliant, ready-to-print label file—no more downloading PDFs into separate apps.
- Track everything in one place. Instead of logging into carrier websites, use `track_package` to pull real-time status updates directly from your agent chat interface.
- Build the record fully. Use `create_shipment_object` first, then `get_shipment_info`, allowing you to build a complete shipment history before generating any physical labels.

## How It Works

The bottom line is that your AI client acts as a dedicated logistics clerk, running complex multi-step operations without you having to switch between tabs or manually input data.

1. Subscribe to the ShipEngine MCP Server on Vinkius and enter your API Key into your AI client's settings.
2. Ask your agent to perform a logistics task (e.g., 'What is the cheapest way to ship this?'). The agent will use tools like `get_shipping_rates`.
3. The system returns validated data, allowing you to confirm details and execute actions like calling `create_shipping_label`.

## Frequently Asked Questions

**How do I check if my connection is working with get_connection_status?**
Run `get_connection_status` first. This confirms your API key and all external carrier services are online before you attempt any rate calculations or label generation.

**What's the difference between create_shipment_object and get_shipment_info?**
`create_shipment_object` builds a new shipment record. `get_shipment_info` pulls all existing data about a specific, already created shipment.

**Can I compare rates for multiple carriers using get_shipping_rates?**
Yes, that's the main purpose. It automatically queries multiple connected carriers (like UPS and FedEx) to return the cost comparison in one payload.

**Do I need validate_address before creating a label?**
Absolutely. Running `validate_address` ensures the carrier accepts the address format. Using it first prevents failed label generation and saves you time debugging bad inputs.

**How do I track a package using track_package?**
You just provide the tracking number or ID to your agent, which executes `track_package`. It then reports the current status and last known scan location directly in chat.

**If I need to know what labels I've already generated, how do I use the `list_created_labels` tool?**
It retrieves a list of your purchased shipping label records. This lets you see historical transaction data and metadata for all labels bought through ShipEngine, regardless of whether they have been physically shipped yet.

**How does using `get_carrier_details` help me manage my connected carriers?**
This tool pulls specific profile metadata directly from the carrier. You use it to confirm account details or check general status information for a particular service provider, beyond just verifying if the API key works.

**I need to see records of shipments that aren't currently being tracked; what is the best way using `list_shipments`?**
The `list_shipments` tool provides a record of your recent shipments. You can pull up a summary list of past orders and their associated metadata without needing a specific tracking ID.

**Can my AI automatically validate a shipping address just by providing the street, city, and zip code?**
Yes! Use the `validate_address` tool. Your agent will check if the address is valid, residential/commercial, and formatted correctly according to carrier standards.

**How do I compare shipping rates for a specific package across different carriers?**
Simply ask the agent to run the `get_rates` action with the shipment details. It will retrieve and compare pricing from all configured carrier accounts.

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