# ShipStation MCP

> ShipStation MCP Server connects your AI agent directly to ShipStation logistics data. Manage orders, check carrier rates, create labels, and update shipment status—all from natural conversation. Stop switching between browser tabs; control your entire e-commerce fulfillment workflow using tools like `list_orders` and `create_label_for_order`.

## Overview
- **Category:** ecommerce
- **Price:** Free
- **Tags:** shipping-labels, carrier-integration, logistics-automation, order-fulfillment, e-commerce

## Description

**ShipStation MCP Server** connects your AI agent directly to ShipStation's entire logistics backend. You can manage orders, check carrier rates, create labels, and update shipment status—all from natural conversation. Stop switching between browser tabs; you control the whole e-commerce fulfillment workflow with this server.

If you don't have an account set up yet, your agent runs `register_account` to get you started. Once connected, it pulls data for all your active carriers by running `list_carriers`, and then lets you check a specific carrier's balance or pull their details using `get_carrier`. If you need more money in the account, you just call `add_funds`.

To keep track of where stuff is going, your agent can list all available store locations with `list_stores`, retrieve the configuration for one specific location using `get_store`, or even update settings with `update_store`. You'll also get a full picture of your physical inventory by listing defined warehouse spots via `list_warehouses`.

When it comes to orders, you never have to guess what’s happening. Your agent pulls general order lists using `list_orders`, letting you filter everything by date range or status. Need something more specific? You can pull details for a single order with its ID via `get_order`. If you need to see multiple customers in one go, your agent runs `list_customers` and lets you narrow that down by name or date. For better organization, it lists all your custom tags using `list_tags`, allowing you to filter huge batches of orders based on those tags with `list_orders_by_tag`. You can also list every order attached to a specific store location.

Need to make changes? Your agent handles that too. You can apply or remove organization tags from an order using `add_tag_to_order` or `remove_tag_from_order`. If you find an old label or need to adjust records, your agent lets you modify the store setup with `update_store`, or void a printed label instantly by calling `void_label`.

Shipping rates are no sweat. When you know the package size, weight, and destination, your agent runs `get_rates` and gives you real-time quotes across multiple carriers. To see what services are available for any given carrier—say, Ground versus Express—it calls `list_services`, and if you need to know exactly what packaging options exist, it uses `list_packages`. You can generate a label either directly from an existing order using `create_label_for_order` or manually create one for a random package that wasn't part of a formal sale by running `create_shipment_label`.

After the package leaves the dock, your agent updates the record status with `mark_as_shipped`. To keep everything clean, you can list every label created and managed so far using `list_shipments`.

For advanced setup, your agent manages data feeds. It lets you set up a webhook to automatically notify another system when something happens in ShipStation by running `subscribe_webhook`, or it tears down that connection with `unsubscribe_webhook`. You can always check which webhooks are active using `list_webhooks` and `list_webhooks`.

This server gives you complete visibility: list all your connected carriers with `list_carriers`, manage multiple stores and warehouses, and process every step of fulfillment without touching a browser tab.

## Tools

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

### add_tag_to_order
Applies a specific tag (like 'urgent' or 'returns') to an order.

### create_label_for_order
Generates and creates the necessary shipping label for a single, existing order.

### create_order
Creates or updates an entire order record within the system.

### create_shipment_label
Generates a shipping label for a package that wasn't tied to a formal order (a manual shipment).

### get_carrier
Retrieves specific details and the current account balance for a connected carrier.

### get_customer
Pulls detailed information about a customer using their name or ID.

### get_order
Retrieves all details for one specific order, provided you know the order ID.

### get_rates
Calculates and returns real-time shipping rates based on package size, weight, and destination.

### get_store
Retrieves the configuration details for a specific store location.

### list_carriers
Lists every carrier you have connected to your account.

### list_customers
Returns a list of customers, allowing you to filter results by criteria like date or name.

### list_orders_by_tag
Filters and lists orders based on their current status and applied tags.

### list_orders
Lists multiple orders, giving you filters for status, date range, or store location.

### list_packages
Shows all supported packages and services offered by a specific carrier.

### list_services
Lists available shipping services for a particular carrier (like 'Ground' vs. 'Express').

### list_shipments
Retrieves a list of all generated and managed shipment labels.

### list_stores
Lists every store configured in your ShipStation account.

### list_tags
Shows all the custom tags you've set up for organization within the platform.

### list_warehouses
Lists your defined warehouse locations (Ship From Locations).

### list_webhooks
Displays a list of active webhooks you've set up for external data pushes.

### mark_as_shipped
Updates an order record to show that it has physically left the warehouse.

### register_account
Registers a brand-new ShipStation account if you don't have one set up yet.

### remove_tag_from_order
Removes an existing tag from an order record, cleaning up organization tags.

### subscribe_webhook
Sets up a webhook to automatically notify another system when an event happens in ShipStation.

### unsubscribe_webhook
Deactivates a previously created webhook connection.

### update_store
Modifies the settings and configuration details of an existing store location.

### void_label
Invalidates a shipping label, making it unusable if printed by accident.

## Prompt Examples

**Prompt:** 
```
List all orders with status 'awaiting_shipment' from the last 24 hours.
```

**Response:** 
```
I've found 12 orders awaiting shipment. Notable orders include #ORD-5521 from John Doe and #ORD-5522 from Jane Smith. Would you like to see the details for any of these?
```

**Prompt:** 
```
Get the full details for order ID 123456789.
```

**Response:** 
```
Retrieving order 123456789... This order is for 'Wireless Headphones', status is 'awaiting_shipment', and it's shipping to New York via UPS Ground. The total amount is $89.99.
```

**Prompt:** 
```
List all connected carriers and their current balances.
```

**Response:** 
```
You have 3 carriers connected: Stamps.com (Balance: $45.20), FedEx (Account-based), and UPS (Account-based). Would you like to add funds to your Stamps.com account?
```

## Capabilities

### Fetch Order Details
The agent can pull specific order information using the ID, or list batches of orders based on filters.

### Calculate Shipping Rates
You get real-time quotes for shipping costs by providing package details and checking multiple carrier options.

### Generate Shipment Labels
The agent creates printable labels either directly from a specific order or as a standalone manual shipment.

### Update Order Statuses
You can change the status of an order, like marking it as shipped or voiding a label if it was sent incorrectly.

### Manage Carrier Accounts
The agent checks carrier account balances and allows you to add funds when needed using `add_funds`.

### Inventory & Store Sync
You can list store configurations, check warehouse locations, and view connected carriers to keep your backend accurate.

## Use Cases

### Handling a bulk shipment exception
The agent needs to ship 50 items, but they are spread across different stores. You ask the agent to 'List all orders for today that need shipping.' The agent uses `list_orders` and then calls `create_label_for_order` in a loop for each item, ensuring every package gets its label generated.

### A customer asks about an old order
You need to find out the status of Order #9001 from last month. You ask the agent to 'Get details for order 9001.' The agent uses `get_order` and reports back the full history, saving you minutes of cross-referencing.

### Preparing a custom package run
You're sending something special that isn't tied to an order. You ask the agent to 'Create a label for this box.' The agent uses `create_shipment_label`, letting you ship without needing a formal e-commerce transaction.

### Cleaning up fulfillment records
You realize a shipment was sent with the wrong tracking number. You ask the agent to 'Void label X and tag order Y as incorrect.' The agent runs `void_label` then uses `add_tag_to_order`, keeping your logs clean.

## Benefits

- Get real-time pricing data immediately. Instead of opening a rates calculator, use `get_rates` to get instant quotes by just describing the package and destination.
- Fulfillment tracking becomes faster. You can list orders using `list_orders` or filter them with `list_orders_by_tag`, so you never lose track of what needs shipping.
- Never switch tabs again. When an order is ready, use `create_label_for_order` to generate the label and process the shipment without leaving your chat window.
- Maintain accurate inventory records by listing all locations via `list_warehouses` or updating store details with `update_store`. Keeps your whole system synced up.
- Manage carrier finances easily. Check balances using `get_carrier`, then use `add_funds` if you run low on credit—all in one command.

## How It Works

The bottom line is: you tell your AI client what to do (e.g., 'Check UPS rates for this box'), it translates that into an API call, and the results come right back to you.

1. Subscribe to the server and input your ShipStation API Key and Secret.
2. Your AI client calls a tool function (e.g., `get_rates`) with parameters like origin, destination, and package dimensions.
3. The agent executes the request against ShipStation's API and returns structured data—like rates or order lists—to your chat interface.

## Frequently Asked Questions

**How do I check carrier balances using ShipStation MCP Server?**
You use `get_carrier`. Just tell your agent which carrier (e.g., 'FedEx') and ask for the balance, and it retrieves that detail.

**Can I list all orders by status using ShipStation MCP Server?**
Yes, use `list_orders_by_tag`. This tool lets you filter orders based on their current status or custom tags, making bulk retrieval simple.

**What if my shipment isn't tied to an order? Can I still label it?**
You can use `create_shipment_label`. This tool handles manual shipments, letting you create a label even when the package didn't originate from a formal e-commerce order.

**Is there a way to bulk update multiple orders?**
You can use `list_orders` and then follow up with actions like `mark_as_shipped` or `add_tag_to_order` on the returned list of IDs, automating bulk updates.

**What do I need to set up ShipStation MCP Server with my account?**
You must provide your ShipStation API Key and API Secret for the server to connect. These credentials authorize your AI client to perform actions on your behalf. After connecting, your agent can immediately start listing carriers or checking customer details.

**How does ShipStation MCP Server manage store configuration changes?**
You use the `update_store` tool to modify store settings and the `list_stores` tool to view current configurations. This lets your agent keep all your selling channels synchronized without manual adjustments.

**What happens if I hit an API rate limit while using ShipStation MCP Server?**
If a command fails due to rate limits, the server reports the error and you can queue up subsequent tasks. It's best practice to run large batch jobs in smaller groups to prevent service interruptions.

**How do I categorize or filter orders using ShipStation MCP Server?**
You use tags to organize your workflow. With the `add_tag_to_order` tool, you can assign a tag and then use `list_orders_by_tag` to pull up only the relevant shipments.

**Can I check shipping rates for a specific order before creating a label?**
Yes! Use the `get_rates` tool. Provide the carrier, service, and package details to receive real-time pricing for your shipment.

**How do I list all orders that are currently awaiting shipment?**
You can use the `list_orders` tool and set the `order_status` parameter to 'awaiting_shipment'. This will return all orders ready for fulfillment.

**Is it possible to add funds to my carrier account through the AI?**
Yes, the `add_funds` tool allows you to add a specific amount to a carrier account (like Stamps.com) using the payment method you have on file in ShipStation.