EasyPost MCP Guide

EasyPost MCP connects AI assistants and agents to your EasyPost account. It is a hosted Model Context Protocol (MCP)(opens in a new tab) server, so a client such as Claude Code, Cursor, or VS Code can answer shipping questions in plain language using live account data. There is no integration code to write and nothing to install.

Ask where a package is, what a shipment cost, or which carriers are connected, and the assistant reads the answer from your shipments, trackers, carrier accounts, pickups, refunds, insurance, and claims.

Server URL: https://app-api.easypost.com/mcp

Production mode: EasyPost MCP currently sends all EasyPost requests in production mode. Connect with a production API key; test API keys are not supported.

EasyPost MCP is an early release. Send setup issues, tool requests, or concerns to ai@easypost.com.


What You Can Do

Support and operations teams can answer shipping questions without opening the dashboard, and developers can inspect an account without writing a script. These work on any EasyPost account with shipping history. Paste one into your assistant after you connect:

  • "Which carrier accounts are connected to my EasyPost account?"
  • "List my shipments from the last seven days with carrier, service, and cost."
  • "Which of my shipments from the past week are still in transit?"
  • "Which USPS services can carry a package over 50 pounds?"
  • "Do I have any open insurance claims, and what is the status of each?"
  • "Show postage refund requests from the last 30 days."
  • "Do I have any carrier pickups scheduled?"

You can also ask about one record: "Where is tracking number 9405511899223197428490?" or "Show me shipment shp_...."


Prerequisites

  • An EasyPost account with production shipping data.
  • A production API key.
  • An MCP client that supports remote servers over Streamable HTTP with custom request headers.

Step 1: Set a Production API Key

Sign in to the EasyPost API Keys page(opens in a new tab) and copy a production key. Set it as EASYPOST_API_KEY in the environment that launches your MCP client.

# macOS or Linux
EASYPOST_API_KEY="YOUR_EASYPOST_PRODUCTION_API_KEY"; export EASYPOST_API_KEY
# Windows PowerShell
$env:EASYPOST_API_KEY = "YOUR_EASYPOST_PRODUCTION_API_KEY"

Do not put the key in the server URL, source control, or an agent prompt.


Step 2: Configure Your MCP Client

Choose the configuration for your client. Each example reads EASYPOST_API_KEY from the environment.

Cursor

Install EasyPost MCP in Cursor(opens in a new tab), or add the server manually to ~/.cursor/mcp.json for all projects or .cursor/mcp.json for one project:

{
  "mcpServers": {
    "easypost": {
      "url": "https://app-api.easypost.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:EASYPOST_API_KEY}"
      }
    }
  }
}

Restart Cursor after saving the file.

Claude Code

Add the server with one command:

claude mcp add --scope project --transport http easypost \
  https://app-api.easypost.com/mcp \
  --header 'Authorization: Bearer ${EASYPOST_API_KEY}'

Use --scope user instead of --scope project to make the server available in every project.

The command writes .mcp.json in the project root. To add it by hand, the equivalent entry is:

{
  "mcpServers": {
    "easypost": {
      "type": "http",
      "url": "https://app-api.easypost.com/mcp",
      "headers": {
        "Authorization": "Bearer ${EASYPOST_API_KEY}"
      }
    }
  }
}

Restart Claude Code, then run claude mcp list to check the connection.

Codex

Add the server with the Codex CLI:

codex mcp add easypost \
  --url https://app-api.easypost.com/mcp \
  --bearer-token-env-var EASYPOST_API_KEY

The equivalent ~/.codex/config.toml entry is:

[mcp_servers.easypost]
url = "https://app-api.easypost.com/mcp"
bearer_token_env_var = "EASYPOST_API_KEY"

VS Code

Add the server to your user or workspace MCP settings. VS Code prompts for the key and stores it outside the configuration file:

{
  "servers": {
    "easypost": {
      "type": "http",
      "url": "https://app-api.easypost.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:easypost_api_key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "easypost_api_key",
      "description": "EasyPost production API key",
      "password": true
    }
  ]
}

OpenAI Responses API

Pass the server and header on the mcp tool. The Responses API does not store the header, so send it with every request:

import os
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    tools=[
        {
            "type": "mcp",
            "server_label": "easypost",
            "server_url": "https://app-api.easypost.com/mcp",
            "headers": {
                "Authorization": f"Bearer {os.environ['EASYPOST_API_KEY']}",
            },
        }
    ],
    input="Which carrier accounts are connected to my EasyPost account?",
)

print(response.output_text)

Other MCP Clients

Use these connection settings in any client that supports remote Streamable HTTP servers, including workflow automation tools with a native MCP client step such as n8n:

Setting
Value
Nameeasypost
URLhttps://app-api.easypost.com/mcp
Request headerAuthorization: Bearer YOUR_EASYPOST_PRODUCTION_API_KEY

Step 3: Verify the Connection

Confirm that easypost is connected and lists tools in your client. Then ask: "Which EasyPost account am I connected to?"

The client should call whoami and return the user associated with the production API key. Then try one of the shipping questions above.


Current Tools

Tool
Purpose
API Reference
whoamiIdentifies the EasyPost user connected to MCP.User
list_shipmentsLists Shipments for the connected account.Shipment
get_shipmentRetrieves a Shipment with label URLs, stored rates, and a Tracker summary.Shipment
list_trackersLists Trackers and their current delivery status.Tracker
get_trackerRetrieves a Tracker with its latest scans.Tracker
list_carrier_accountsLists connected carrier accounts without returning credentials.CarrierAccount
carrier_metadataDescribes carrier service levels, packages, shipment options, and supported features.Carrier Metadata
pickupsRetrieves scheduled Pickups.Pickup
refundsRetrieves postage Refund request status.Refund
insurancesRetrieves standalone Insurance policies.Insurance
claimsRetrieves insurance Claims and their status history.Claims

EasyPost MCP and the API

Use EasyPost MCP for interactive shipping questions and agent workflows covered by the current tools. Use the EasyPost API for application code, webhooks, high-volume automation, or capabilities that are not yet available as MCP tools.


Data and Security

  • The authenticated EasyPost account determines which records the tools can access.
  • Current tool responses omit carrier credentials, API keys, wallet balances, recharge settings, payment methods, and fees.
  • Responses can include addresses, tracking details, and label URLs. Connect EasyPost only to MCP clients and other MCP servers that you trust.
  • A production API key can authorize requests outside MCP. Treat it as a secret.

FAQs

Q: Do I need to install anything?

No. EasyPost hosts the server. Your client connects to it over HTTPS.

Q: Does connecting change anything in my EasyPost account?

No. The current tools retrieve existing records. They do not create, modify, or purchase anything.

Q: Can I use a test API key?

No. EasyPost MCP sends requests in production mode, so it requires a production API key.

Q: Can I use the same key in more than one client?

Yes. EasyPost rate limits apply to the account, not to each client.

Q: Which clients work?

Any MCP client that supports remote servers over Streamable HTTP with custom request headers.

Q: How do I request a tool that does not exist yet?

Email ai@easypost.com with the shipping task you want an agent to complete.


Troubleshooting

Symptom
What to check
No EasyPost tools appearConfirm the server URL, Streamable HTTP support, and custom header support. Then restart the client.
The client reports Authentication requiredConfirm that EASYPOST_API_KEY is set in the environment that launched the client and is sent as a Bearer token.
The response contains MODE.UNAUTHORIZEDReplace the test key with a production API key.
The response contains APIKEY.INACTIVEThe key is disabled. Enable it or create a new one on the API Keys page.

Additional Resources