This article explains how to use Easyship with OpenAI so you can manage shipping tasks, including comparing rates, creating shipments, buying labels, scheduling pickups, and tracking deliveries, all through natural language.
There are two ways to connect:
| Option | Best For | How You Connect? |
| Part 1: Easyship plugin for ChatGPT | Anyone who wants to ship from inside a ChatGPT chat, no code required | Sign in to Easyship and authorise (OAuth). No API token needed. |
| Part 2: OpenAI Responses API or Agents SDK | Developers building their own AI agents or apps with OpenAI | Easyship API token |
Part 1: Using the Easyship Plugin with ChatGPT
Before You Begin
You'll need:
A ChatGPT account at chatgpt.com
An active Easyship account
You don't need an Easyship API token for this option.
Step 1: Install the Easyship Plugin
Log in to ChatGPT
Go to Plugins
Search for Easyship
Click Install plugin
Step 2: Authorize Easyship
After install click on Connect
You'll be redirected to Easyship to sign in. Log in to your Easyship account if you aren't already
Review the permissions requested and click Authorize
You'll be returned to ChatGPT, and the Easyship plugin will show as Connected
Heads up: There is no separate test environment for MCP actions. Any action that consumes credits (such as generating labels) will incur real charges.
Step 3: Start Using Easyship in a Chat
Open a new chat in ChatGPT
Type @easyship and select Easyship - Shipping MCP from the dropdown
Type your prompt to get started
Try a prompt like:
I want to ship a parcel from New York, USA to Toronto, Canada. Origin: 350 5th Avenue, New York, US 10001. Destination: 220 Yonge Street, Toronto, ON, Canada M5B 2H1. Parcel: 1.98 lb, 6 × 4 × 2 cm. Item: Business documents, quantity 1, HS Code 4911.99, declared value $1.00 USD, category documents, DDU. Show me the cheapest and best value shipping options with delivery times and courier names.
Part 2: Using Easyship MCP with the OpenAI Responses API or Agents SDK
Before You Begin
You'll need:
- Access to the OpenAI Responses API or Agents SDK
- Access to your Easyship Dashboard
- An Easyship account (API access is available on all plans at no extra cost)
Step 1: Get Your Easyship API Token
- Go to your Easyship Dashboard and click Connect
- Click New Integration
- Scroll down to API Integration
- Under Integration Type, select I am developing a custom integration
- Name the key Easyship MCP for easy reference
- Keep the default version 2024-09 and click Connect
- On the next page, click Access Token and copy it using the copy button
Required scopes: Your API token must include the following scopes. Missing scopes will cause some tools to fail while others continue to work.
public.shipment:read public.shipment:write
public.label:write public.pickup:read
public.pickup:write public.address_validation:write
public.address_validation_domestic:write
public.shipment_document:read public.transaction_record:read
public.analytics:read public.rate:read
public.track:readYou can check and update scopes at any time in Dashboard → Connect → API without creating a new token.
Step 2: Add the Easyship MCP Server to the Responses API
Pass the Easyship MCP server as a tool in your responses.create() call. See the OpenAI MCP tools documentation for full reference.
python
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[{
"type": "mcp",
"server_label": "easyship",
"server_url": "https://mcp.easyship.com/mcp",
"require_approval": "never",
"headers": {
"Authorization": "Bearer YOUR_EASYSHIP_TOKEN"
}
}],
input="What are the cheapest shipping options from HK to NYC for a 1.5kg package?"
)
print(resp.output_text)Replace YOUR_EASYSHIP_TOKEN with the API token you copied in Step 1.
Note: require_approval: "never" tells the model to call Easyship tools automatically without pausing for confirmation. Set it to "always" if you want the model to prompt for approval before taking actions such as creating shipments or buying labels.
Security: Never hardcode your API token in source code or share it in a chat window. Store it as an environment variable (e.g. EASYSHIP_API_ACCESS_TOKEN) and reference it at runtime. If you accidentally expose it, revoke and rotate your key immediately in the Easyship Dashboard under Connect → API.
Step 3: Approve Actions Before They Happen (Optional)
To review tool calls before they run, set require_approval to "always", or auto-approve only tools that don't change anything:
"require_approval": {
"never": {
"tool_names": [
"get_rates", "get_shipment", "list_shipments", "track_shipment",
"validate_address", "get_pickup_slots", "list_pickups",
]
}
},OpenAI doesn't show an approval prompt to anyone. When the model wants to call a tool that needs approval, the response has no final answer. Instead, resp.output contains an mcp_approval_request item. Your code decides whether to approve it and sends the decision back:
for item in resp.output:
if item.type == "mcp_approval_request":
print(f"Model wants to call {item.name} with {item.arguments}")
approved = input("Approve? (y/n) ") == "y"
resp = client.responses.create(
model="gpt-4.1",
tools=[easyship],
previous_response_id=resp.id,
input=[{
"type": "mcp_approval_response",
"approval_request_id": item.id,
"approve": approved,
}],
)
print(resp.output_text) Step 4: Verify the Connection
Run your script. If the Easyship MCP server is connected correctly, the model will call Easyship tools automatically and return shipping results in resp.output_text.
If you see a connection or authentication error, double-check your token and confirm all required scopes are enabled in the Easyship Dashboard.
Step 5: Try It Out
Once connected, try a prompt like:
I want to ship a parcel from New York, USA to Toronto, Canada. Origin: 350 5th Avenue, New York, US 10001. Destination: 220 Yonge Street, Toronto, ON, Canada M5B 2H1. Parcel: 1.98 lb, 6 × 4 × 2 cm. Item: Business documents, quantity 1, HS Code 4911.99, declared value $1.00 USD, category documents, DDU. Show me the cheapest and best value shipping options with delivery times and courier names.
For a full list of available tools and workflows, see the Easyship MCP Developer Docs.
ChatGPT Consumer UI — Coming Soon
Direct integration with the ChatGPT consumer UI at chat.openai.com requires OAuth support. This is not yet available for the Easyship MCP server. Once OAuth is supported, users will be able to connect Easyship directly from the ChatGPT interface without any code.
FAQs
ChatGPT plugin
Do I need an API token to use Easyship in ChatGPT?
No. You connect by signing in to your Easyship account. API tokens are only needed for Part 2.
Does Easyship work directly in ChatGPT?
Yes. Install the Easyship plugin from Plugins in ChatGPT and authorise your Easyship account. See Part 1 above. No code or API token is needed.
Do I need an API token to use the Easyship plugin in ChatGPT?
No. The ChatGPT plugin connects through a secure Easyship sign-in (OAuth). You only need an API token if you're building with the OpenAI Responses API or Agents SDK (Part 2).
I can't find Easyship when I type @easyship in a chat. What should I do?
Check that the Easyship plugin shows as Connected in ChatGPT. If it doesn't, install it again from Plugins and complete the authorisation step.
The Easyship authorisation page isn't loading. What should I do?
Check your internet connection, clear your browser cache, and make sure third-party cookies are allowed for chatgpt.com and easyship.com. Then try installing the plugin again.
The Easyship plugin shows as disconnected. What should I do?
Reinstall the Easyship plugin from Plugins and complete the Easyship authorisation step again.
OpenAI Responses API and Agents SDK
Can I use an existing API token, or do I need a new one?
You can use an existing token from your Easyship account. Just make sure it has all the required scopes listed in Step 1. If some scopes are missing, certain tools will fail while others work.
What does require_approval: "never" do?
This setting tells the OpenAI model to call Easyship MCP tools automatically without pausing to ask for user approval on each tool call. Set it to "always" if you want the model to prompt for confirmation before taking actions like creating shipments or buying labels.
What if the model doesn't call Easyship tools?
Double-check your token and that the server_url is https://mcp.easyship.com/mcp. Make sure the Authorization header value starts with Bearer (with a space) followed by your token. Also confirm all required scopes are enabled in the Easyship Dashboard.
What if not all tools are loaded?
Verify your Easyship API token is valid and active
Confirm all required scopes are enabled in the Easyship Dashboard
Check your network connection from the machine running the script
Check the OpenAI API response for any error messages related to the MCP server
Why is my Easyship API token not working?
Check the scopes for your token in the Easyship Dashboard under Connect → API. A token might work for some actions but fail for others depending on which scopes it has. For full access to all tools, enable all the scopes listed in Step 1.
What happens if I don't grant all the required scopes?
Only the tools that match your granted scopes will work. Other tools will return an error. You can update scopes in the Easyship Dashboard without creating a new token.
General
Do I need to pay to use Easyship MCP?
No. Easyship provides API access across all plans at no extra cost. If you exceed the included API limits for your plan, overage fees may apply. See pricing plans and included limits.
Can I connect Easyship to other AI apps too (Grok, Cursor, etc.)?
Yes. Easyship MCP works across many AI apps. Some apps, like ChatGPT and Grok, connect through Easyship sign-in (OAuth). Others, like Cursor, use an Easyship API token, and the same token works across those clients. Be mindful of rate limits and avoid running conflicting operations (like editing the same shipment from two clients at once). See Getting Started with Easyship MCP for all supported apps.