# ShipEngine Alternative MCP

> ShipEngine Alternative lets your AI client handle every step of shipping logistics through natural chat commands. You validate addresses, compare real-time rates across multiple carriers, generate labels, and track packages—all without leaving your agent interface. It's the full fulfillment workflow: from initial address check to final tracking update.

## Overview
- **Category:** ecommerce
- **Price:** Free
- **Tags:** shipping-api, label-generation, address-validation, package-tracking, multi-carrier

## Description

This MCP Server handles your entire shipping logistics chain, letting you run complex operations through simple chat commands. Your AI client acts like an ops engineer, managing carrier accounts and fulfillment tasks without forcing you to jump between websites.

**Carrier Account Management**
You'll start by listing every connected account using `list_carriers`. If you need to connect a new provider or confirm authentication details, run `connect_carrier`. When you know your balances are low, you can top up funds for specific carriers with `add_funds`.

**Address Validation and Rate Shopping**
Before anything else, you've got to make sure the address is real. You validate up to 250 shipping addresses at once using `validate_addresses`, which confirms if the location is formatted right and deliverable. To figure out costs, you use `get_rates` to calculate multiple shipping quotes from different carriers based on the package size and destination zone. For label creation that requires shopping around for deals, run `create_label_rate_shopper`; this tool executes rate comparison strategies so you can pick the absolute cheapest or fastest option available.

**Fulfillment and Label Generation**
When it's time to ship, first, you use `create_shipment` to generate a new shipment record using specific origin and destination details. To get the actual label purchased and generated for that package, run `create_label`. If you change your mind before printing, don't sweat it; `void_label` cancels and invalidates an existing shipping label immediately. For large pickups, you can generate necessary carrier documents like USPS SCAN forms using `create_manifest`. You can also view a history of labels already generated by running `list_labels`.

**Tracking and Status Updates**
To track where the package is, you use two tools: `track_package` handles tracking when you provide a specific carrier code and a tracking number combination. If you only have the label ID, run `track_label` to check its current status in the system.

## Tools

### add_funds
Adds money to a specific carrier account balance.

### connect_carrier
Connects and authenticates an entire shipping carrier account.

### create_label_rate_shopper
Creates a shipping label by running rate comparison strategies (cheapest, fastest). 

### create_label
Generates and purchases a standard shipping label for a package.

### create_manifest
Generates necessary carrier documents like USPS SCAN forms for pickups.

### create_shipment
Creates a new shipment record using specific origin and destination details.

### get_rates
Calculates multiple shipping rates for different carriers based on package dimensions and zones.

### list_carriers
Retrieves a list of all carrier accounts currently connected to the server.

### list_labels
Shows a record of previously generated shipping labels.

### track_label
Checks the current status of a package using its specific label ID.

### track_package
Tracks a package using a carrier code and tracking number combination.

### validate_addresses
Checks up to 250 shipping addresses to confirm they are valid for delivery.

### void_label
Cancels and invalidates an existing shipping label before it's used.

## Prompt Examples

**Prompt:** 
```
Validate this shipping address: 4009 Marathon Blvd, Austin, TX 78756.
```

**Response:** 
```
I've validated the address. It is a valid residential address in Austin, Texas. ShipEngine has confirmed the formatting is correct for delivery.
```

**Prompt:** 
```
Get shipping rates for a 2lb package from Zip 90210 to 10001.
```

**Response:** 
```
I found several rates for your shipment. The cheapest option is USPS Ground Advantage at $8.45, while the fastest is FedEx Overnight at $42.10. Would you like to create a label for one of these?
```

**Prompt:** 
```
Track my UPS package with tracking number 1Z9999999999999999.
```

**Response:** 
```
The UPS package is currently 'In Transit'. It was last scanned at the Louisville, KY hub and is estimated to be delivered by tomorrow at 7:00 PM.
```

## Capabilities

### Address Validation
The tool checks if a shipping address is formatted correctly and deliverable, preventing costly failed shipments.

### Rate Comparison & Quote Generation
It calculates real-time shipping rates from multiple carriers so you can pick the cheapest or fastest option for any package size.

### Labeling and Fulfillment
The system generates, purchases, and manages physical shipping labels using specific rate shopping strategies (cheapest, fastest, etc.).

### Tracking and Status Updates
You monitor packages by running `track_label` or `track_package` using either a label ID or the carrier's tracking number.

### Carrier Account Management
It allows you to list connected carriers, connect new accounts, and add funds when balances run low.

## Use Cases

### The new product launch fulfillment queue
A manager receives 50 addresses for an upcoming sale. Instead of manually entering them into multiple forms, they tell their agent: 'Validate these 50 addresses and then get the best rate for a standard box.' The agent runs `validate_addresses`, filters the good inputs, executes `get_rates` on the valid set, and gives you a manifest plan.

### The last-minute shipment failure
A customer calls with an old label ID. Instead of guessing if it's right, the agent runs `track_label`. If that fails, the manager can run `void_label` to clear up old records before creating a new one using `create_shipment`.

### The billing cleanup task
You need to check your available carrier accounts. You ask the agent: 'Show me all connected carriers and check the balances.' The tool runs `list_carriers`, letting you see if you need to use `add_funds` before shipping.

### The complex manifest creation
Your warehouse needs a pickup form for 20 packages. You prompt: 'Create the carrier manifest for these 20 items.' The agent uses `create_manifest`, generating the necessary SCAN forms directly, saving you from printing and manually filing paperwork.

## Benefits

- You stop switching between carrier sites. The agent handles validation (`validate_addresses`) and rate fetching (`get_rates`) in one sequence before you even commit to a label.
- Rate comparison is instant. Instead of checking FedEx rates on Monday and USPS rates on Tuesday, the `create_label_rate_shopper` tool gets all options at once, letting you choose based on price or speed.
- Labeling and tracking are streamlined. You can generate labels (`create_label`) and immediately track them (`track_package`), closing out the loop without manual copy-pasting of numbers.
- Account management is centralized. Use `list_carriers` to see what you have access to, or use `add_funds` right from the chat when a balance gets low—no more forgetting payments.
- Data integrity stays high. Before anything else happens, running `validate_addresses` ensures your customer's input won't cause a costly delivery failure later on.

## How It Works

The bottom line is you get full fulfillment control via natural language commands, treating the entire shipping stack like one chat interface.

1. Subscribe to the server and enter your ShipEngine API Key.
2. Connect the MCP Server to your preferred AI client (Claude, Cursor, etc.).
3. Ask your agent a logistics question—for example, 'Get rates for this address.' The agent executes the necessary tools in the background.

## Frequently Asked Questions

**How do I validate addresses using the validate_addresses tool?**
You pass up to 250 addresses directly to the `validate_addresses` tool. It checks formatting and deliverability against carrier standards, telling you which ones are good to go.

**Can I use get_rates to compare FedEx vs USPS rates?**
Yes. You provide the package details (dimensions, weight) and the destination zip code, and `get_rates` returns a comparison table of available options from multiple connected carriers.

**What's the difference between create_shipment and create_label?**
Use `create_shipment` when you are defining the parameters for an upcoming shipment record. Use `create_label` when you are ready to finalize, purchase, and generate the actual physical label.

**How do I track a package with track_package?**
You run `track_package` by providing two key pieces of info: the carrier's specific code (like UPS) and the full tracking number. This ensures accurate status retrieval.

**How do I check which shipping carriers are available using the list_carriers tool?**
You first connect your API key to the server. Then, running `list_carriers` immediately displays all linked carrier accounts and their current status. This lets you confirm connectivity before building anything.

**What is the proper procedure for voiding a label using the void_label tool?**
You must use `void_label` if a paid label needs to be canceled before carrier pickup. You simply supply the unique label ID, and the tool handles the cancellation request with the respective shipping provider.

**What data does the create_manifest tool handle, and why is it necessary?**
The `create_manifest` tool requires a list of labels or shipments. Its purpose is to bundle multiple packages into carrier-specific documents (like USPS SCAN forms), making bulk pickup efficient for your logistics team.

**Does the create_label_rate_shopper tool guarantee the absolute best shipping deal?**
The rate shopper compares options across multiple carriers and services in real-time. You specify what you prioritize—like 'cheapest' or 'fastest'—and it generates a label based on that optimized selection.

**Can I validate multiple addresses at once to avoid shipping surcharges?**
Yes! Use the `validate_addresses` tool. You can provide an array of address objects, and the agent will return validation results for up to 250 addresses in a single request.

**How does the AI choose the best shipping rate for me?**
You can use the `create_label_rate_shopper` tool with a specific strategy: 'cheapest', 'fastest', or 'best_value'. The agent will automatically compare rates across your carriers and purchase the label that fits your criteria.

**Can I track a package if I only have the tracking number and carrier code?**
Absolutely. Use the `track_package` tool by providing the `carrier_code` (e.g., 'ups', 'fedex') and the `tracking_number`. The agent will retrieve the latest status and location updates.