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 + Microsoft Copilot
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.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
EASYPOST_API_KEY
Step 1 — Get credentials
- 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.
Step 2 — Install the adapter
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
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
EasyPosttools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
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."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?