USA Logistics MCP
USA Logistics MCP πΊπΈ β How can my AI agent buy a USPS / UPS / FedEx shipping label?
Use it in 60 seconds
Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):
{
"mcpServers": {
"usa-logistics": {
"type": "http",
"url": "https://logi-us.wishpool.app/mcp"
}
}
}Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored β see the threat model.
Or run it yourself
Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:
git clone https://github.com/junter1989k-ai/usa-logistics-mcp && cd usa-logistics-mcp && npx vercel --prodMIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.
Remote MCP server that lets any AI agent buy US shipping labels β USPS, UPS, FedEx and more β with automatic cheapest-rate selection, track parcels, and refund unused labels via the EasyPost shipping API. Stateless, bring-your-own API key, never stores anything. Free EasyPost test keys give zero-cost end-to-end labels.
Live endpoint: https://logi-us.wishpool.app/mcp Β· Registry: app.wishpool/usa-logistics-mcp
Quick start
{
"mcpServers": {
"usa-logistics": {
"type": "http",
"url": "https://logi-us.wishpool.app/mcp",
"headers": {
"x-easypost-api-key": "EZTK_your_test_or_EZAK_prod_key"
}
}
}
}No shared demo β but test keys are free. EasyPost issues free TEST keys (prefix EZTKβ¦) that buy real USPS test labels end-to-end at no cost: sign up at easypost.com β API Keys. Production keys (prefix EZAKβ¦) buy real postage. The same server auto-selects the environment from the key prefix.
Tools
Tool | What it does |
| Buy a US label. |
| Track by |
| Refund an unused label by |
Owner policy guardrails ride optional headers (x-agentpay-max-amount, x-agentpay-approval-above, x-agentpay-allowed-tools) β set by the human owner in client config; the agent cannot relax them. The label price is gated before any purchase: approval-above returns an unsigned draft with the shipment/rates prepared but no label bought.
Develop
node test/serve.js # local server on :3236 (/mcp)
node test/e2e.js # protocol + validation + policy/easypost units + fake-key live probe to api.easypost.com (expects native 401)How it talks to EasyPost
create_shipment is two server-to-server REST calls: POST /v2/shipments (to/from address + parcel β rates[]) then POST /v2/shipments/{id}/buy (chosen rate β postage_label.label_url + tracking_code). query_tracking is POST /v2/trackers (by tracking_code). refund_label is POST /v2/shipments/{id}/refund (or POST /v2/refunds by carrier + tracking_codes). Auth is HTTP Basic with the API key as username and an empty password; the key prefix (EZTKβ¦ / EZAKβ¦) selects test vs production on the same base URL https://api.easypost.com.
Safety
Pure stateless translation layer. The label is generated and served by EasyPost/the carrier; the EasyPost API key travels per-request in a header, nothing is stored. Parcels flow sender β carrier β recipient directly. Privacy policy.
Sister servers
Taiwan CVS pickup + home delivery live in taiwan-logistics-mcp. One family of stateless BYO local-commerce MCP servers: local payments in 81 countries at mcp.wishpool.app, plus electronic-invoice servers across nine countries including Mexico CFDI, Brazil NF-e, Chile DTE, Peru CPE and India GST.
MIT licensed.