EasyPost MCP Connector
EasyPostConnect AI agents to EasyPost for multi-carrier shipping, rate comparison across 100+ carriers, label purchasing, and package tracking.
Auth notes
API key authentication using stateless auth — each request independently verified. Two key types: Test API keys (prefix EZTEST) for sandbox, Production API keys for live shipping. Pass key as username in HTTP Basic auth with empty password, or as Authorization: Bearer header. Generate keys from EasyPost Dashboard → API Keys. Test and production environments are completely separate with separate keys.
Rate limits
Dynamic rate limiting based on system load rather than fixed requests per second. Index endpoints fixed at 5 requests per second. Rating requests limited to 60 carrier accounts per request — if more than 60 carrier accounts are enabled, only first 60 are used without error. Returns 429 with Retry-After header. Use EasyPost client libraries which have configurable timeout and retry logic built in. Batch endpoint supports purchasing 1000+ shipment labels in single async request.
Edge cases
Test and production API keys are completely separate — a common source of accidental live label purchases during development. Always use EZTEST keys for development. Rating across many carriers simultaneously can be slow — limit carrier_accounts parameter to only needed carriers. Tracking numbers from different carriers have different formats — use EasyPost Tracker object instead of parsing raw tracking numbers. Address verification should always be run before label purchase to avoid undeliverable surcharges. EasyPost reuses some carrier account IDs — verify account associations after any account changes.
Sandbox testing
Run test calls against EasyPost from Pipeyard. Try prompts below to see a simulated response; real MCP integration is coming in a future release.
Have a connector you'd like us to prioritize or a specific test flow you care about? Use the Requests page to submit new ideas.
Quick Start — curl example
curl -X POST "https://api.easypost.com/v2/shipments" \
-u "{EZTEST_api_key}:" \
-H "Content-Type: application/json" \
-d "{\"shipment\":{\"to_address\":{\"name\":\"John Doe\",\"street1\":\"123 Main St\",\"city\":\"Austin\",\"state\":\"TX\",\"zip\":\"78701\",\"country\":\"US\"},\"from_address\":{\"name\":\"ShipFrom Inc\",\"street1\":\"456 Oak Ave\",\"city\":\"Portland\",\"state\":\"OR\",\"zip\":\"97201\",\"country\":\"US\"},\"parcel\":{\"length\":9,\"width\":6,\"height\":2,\"weight\":10}}}"Credential Setup Guide
- 11. Go to easypost.com and sign up for a free account
- 22. In your dashboard go to API Keys section
- 33. Copy your Test API Key (starts with EZTEST) for development
- 44. Copy your Production API Key for live shipments — only use when ready
- 55. Use HTTP Basic auth — API key as username with empty password
- 66. Or use Authorization: Bearer {api_key} header format
- 77. Always use EZTEST keys during development to avoid purchasing real labels
- 88. Verify addresses before purchasing labels: POST /v2/addresses with verify: ["delivery"]
Example API Response
Sample data{
"object": "Shipment",
"id": "shp_abc123xyz",
"status": "unknown",
"tracking_code": "9400111899223397988077",
"selected_rate": {
"carrier": "USPS",
"service": "Priority",
"rate": "8.15",
"currency": "USD",
"delivery_days": 2
},
"rates": [
{
"carrier": "USPS",
"service": "Priority",
"rate": "8.15"
},
{
"carrier": "USPS",
"service": "Express",
"rate": "26.35"
},
{
"carrier": "UPS",
"service": "Ground",
"rate": "11.42"
}
],
"postage_label": {
"label_url": "https://easypost-files.s3.amazonaws.com/files/postage_label/..."
}
}