Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the EasyPost in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI ship with EasyPost: verify addresses, compare live rates from your carriers, buy, convert, insure and refund labels, track parcels, prepare customs declarations and create scan forms. Test keys are free.
Try asking
Example prompts for EasyPost
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → EasyPost, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
EasyPost
Let your AI ship with EasyPost: verify addresses, compare live rates from your carriers, buy, convert, insure and refund labels, track parcels, prepare customs declarations and create scan forms. Test keys are free.
Setup
- Sign up for a free EasyPost account at
https://app.easypost.com/signup. Before it shows any API keys, EasyPost asks you to set up the wallet and a ship-from address, and a new account may first have to fill in a short security check with its business details. The keys appear once EasyPost has accepted it. - Open the API keys page at
https://app.easypost.com/account/settings?tab=api-keys(Account settings → API keys). Copy the Test key (free, labels are void) or the Production key (buys real labels). - Paste it into
EASYPOST_API_KEYand install the connector. - Run
easypost_list_addressesto check the key. On a fresh account the list may come back empty.
Test or production: the key decides. With a test key labels cost nothing and are void, and tracking only accepts EasyPost's test codes EZ1000000001 to EZ7000000007, each standing for one status (pre-transit, delivered, returned to sender and so on). Listing your connected carrier accounts (easypost_list_carrier_accounts) needs a production key.
Buying costs money, so it confirms first: with a production key, easypost_buy_shipment and easypost_insure_shipment charge your EasyPost wallet at once. Before buying, the AI states carrier, service, price and both addresses and waits for your yes. Insurance added after purchase costs 1 percent of the insured amount, at least 1 USD. easypost_refund_shipment voids an unused label, which must not be used afterwards; the refund takes days to weeks (USPS labels qualify within 30 days, UPS and FedEx within 90 days).
How a shipment works: easypost_create_shipment takes the recipient, the ship-from address and the parcel and returns live rates from your carriers with price and delivery days. You pick a rate with the AI, it buys the label with easypost_buy_shipment and gets the label link (PNG, or PDF and ZPL through easypost_convert_label), the tracking code and a public tracking page. Follow the parcel with easypost_get_tracker, or start tracking any code, also for labels bought elsewhere, with easypost_create_tracker. The AI can also verify addresses and create scan forms, so the carrier scans one sheet at pickup.
Units and international: weights are in ounces and dimensions in inches (1 kg is 35.27 oz, 1 cm is 0.394 in), amounts in USD unless a currency is given. For an international shipment the AI first creates the customs items and a customs declaration and attaches it to the shipment.
Common errors: 401 UNAUTHORIZED or 403 APIKEY.INACTIVE: the key is missing, wrong or disabled. 403 MODE.UNAUTHORIZED: the call needs a production key. 402 PAYMENT_REQUIRED: the wallet has no funds. 422 errors such as ADDRESS.VERIFY.FAILURE, SHIPMENT.POSTAGE.FAILURE or SHIPMENT.CUSTOMS_INFO.REQUIRED name the problem with the address, the purchase or the missing customs data. 429: too many requests, wait and retry.
The connector does not handle pickups, orders, returns, webhooks, users and API keys, reports or connecting carrier accounts.
Prerequisites: EASYPOST_API_KEY
Install the connector locally
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, pick EasyPost and paste in the env vars listed under Prerequisites.
Available tools
| Tool | What it does |
|---|---|
easypost_create_address | Save an address |
easypost_create_and_verify_address | Save an address only if it passes verification, and return it corrected (for example with ZIP+4) |
easypost_verify_address | Verify a saved address |
easypost_get_address | Read a saved address by id, with its fields, mode (test or production) and any verification results |
easypost_list_addresses | List saved addresses, newest first |
easypost_create_parcel | Save a parcel: weight in ounces (always required) and length, width and height in inches (all three or none), or a carrier's… |
easypost_get_parcel | Read a saved parcel by id: dimensions in inches, weight in ounces and predefined package |
easypost_create_shipment | Create a shipment and get live rates from the account's carriers |
easypost_get_shipment | Read a shipment by id: addresses, parcel, rates, selected_rate, postage_label (label_url once bought), tracking_code, tracker… |
easypost_list_shipments | List shipments, newest first, by default only bought ones from the last month |
easypost_buy_shipment | Buy the label for a rate of a shipment |
easypost_refund_shipment | Ask for a refund of an unused label |
easypost_rerate_shipment | Get fresh rates for an unbought shipment, for example after a day has passed or carrier accounts changed |
easypost_get_smartrates | Get delivery time estimates for the rates of a US domestic shipment: for each rate the days it takes at different percentiles… |
easypost_convert_label | Get the label of a bought shipment in another format |
easypost_insure_shipment | Insure a bought shipment that was not insured when bought |
easypost_create_tracker | Start tracking a parcel by its tracking code, also for labels bought elsewhere |
easypost_get_tracker | Read a tracker by id: current status and status_detail, est_delivery_date, signed_by, weight, carrier_detail and the full tracking_details… |
easypost_list_trackers | List trackers, newest first, from the last month unless start_datetime says otherwise |
easypost_list_carrier_accounts | List the carrier accounts connected to EasyPost (id ca_..., type such as UspsAccount or UpsAccount, description, readable name) |
easypost_get_carrier_account | Read one carrier account by id: type, description, reference and its settings (credentials are not shown) |
easypost_create_customs_item | Save one line of a customs declaration: description, quantity, total value in USD, total weight in ounces, HS tariff number and origin… |
easypost_get_customs_item | Read a saved customs item by id: description, quantity, value, weight, tariff number and origin country |
easypost_create_customs_info | Save a customs declaration for an international shipment and pass its id as customs_info to easypost_create_shipment. contents_explanation… |
easypost_get_customs_info | Read a saved customs declaration by id, with its items, contents type, signer and options |
easypost_list_batches | List batches (groups of shipments bought and printed together), newest first, with state (creating, created, purchasing, purchased… |
easypost_get_batch | Read a batch by id: state, shipments with their batch_status and messages, label_url once labels are generated, and scan_form |
easypost_create_scan_form | Create a scan form (manifest) for bought shipments, so the carrier scans one sheet instead of every parcel at pickup |
easypost_list_scan_forms | List scan forms, newest first, with status, tracking_codes, form_url and the address |
easypost_get_scan_form | Read a scan form by id: status, the tracking codes on it, form_url (PDF) and batch_id |
Example prompts
- "Compare rates for a 3 lb parcel, 12 x 10 x 6 inches, from our warehouse to this address in Chicago, and show me the cheapest and the fastest option."
- "Where is the parcel with tracking code 1Z999AA10123456784, and when should it arrive?"
- "Check this customer address and tell me if anything needs correcting before we ship."
- "Get the label for that shipment with the cheapest USPS rate, but show me carrier, service, price and both addresses before you buy it."
Next steps
Was this guide helpful?